<autodoc>

<namespace name='7.2'>

<module name='LR'>

<class name='rule'><doc><text><p>This object is used to represent a BNF-rule in the LR parser.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='nonterminal'><doc><text><p>Non-terminal this rule reduces to.</p>
</text></doc>
<variable name='nonterminal'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='symbols'><doc><text><p>The actual rule</p>
</text></doc>
<variable name='symbols'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><array><valuetype><or><string/><int/></or></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='action'><doc><text><p>Action to do when reducing this rule.
 function - call this function.
 string - call this function by name in the object given to the parser.
 The function is called with arguments corresponding to the values of
 the elements of the rule. The return value of the function will be
 the value of this non-terminal. The default rule is to return the first
 argument.</p>
</text></doc>
<variable name='action'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><or><function/><string/></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='has_tokens'><doc><text><p>This rule contains tokens</p>
</text></doc>
<variable name='has_tokens'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='num_nonnullables'><doc><text><p>This rule has this many non-nullable symbols at the moment.</p>
</text></doc>
<variable name='num_nonnullables'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='number'><doc><text><p>Sequence number of this rule (used for conflict resolving)
 Also used to identify the rule.</p>
</text></doc>
<variable name='number'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pri'><doc><text><p>Priority and associativity of this rule.</p>
</text></doc>
<variable name='pri'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/><type><object resolved='7.2::LR.rule'/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a BNF rule.</p>
</text><group><example/><text><p>The rule</p>
<p>	   rule : nonterminal ":" symbols ";" { add_rule };</p>
<p>   might be created as</p>
<p>	   rule(4, ({ 9, ";", 5, ";" }), "add_rule");</p>
<p>   where 4 corresponds to the nonterminal "rule", 9 to "nonterminal"
   and 5 to "symbols", and the function "add_rule" is too be called
   when this rule is reduced.</p>
</text></group><group><param name='nt'/><text><p>Non-terminal to reduce to.</p>
</text></group><group><param name='r'/><text><p>Symbol sequence that reduces to nt.</p>
</text></group><group><param name='a'/><text><p>Action to do when reducing according to this rule.
   function - Call this function.
   string - Call this function by name in the object given to the parser.
   The function is called with arguments corresponding to the values of
   the elements of the rule. The return value of the function will become
   the value of this non-terminal. The default rule is to return the first
   argument.</p>
</text></group></doc>
<method name='create'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/rule.pike'/>
<arguments><argument name='nt'><type><int/></type></argument><argument name='r'><type><array><valuetype><or><string/><int/></or></valuetype></array></type></argument><argument name='a'><type><or><function/><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='item'><doc><text><p>An LR(0) item, a partially parsed rule.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><classname resolved='7.2::LR'>LR</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='r'><doc><text><p>The rule</p>
</text></doc>
<variable name='r'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><object resolved='7.2::LR.rule'>rule</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='offset'><doc><text><p>How long into the rule the parsing has come.</p>
</text></doc>
<variable name='offset'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='next_state'><doc><text><p>The state we will get if we shift according to this rule</p>
</text></doc>
<variable name='next_state'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><object resolved='7.2::LR.item'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='master_item'><doc><text><p>Item representing this one (used for shifts).</p>
</text></doc>
<variable name='master_item'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><object resolved='7.2::LR.item'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='direct_lookahead'><doc><text><p>Look-ahead set for this item.</p>
</text></doc>
<variable name='direct_lookahead'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><multiset><indextype><string/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error_lookahead'><doc><text><p>Look-ahead set used for detecting conflicts</p>
</text></doc>
<variable name='error_lookahead'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><multiset><indextype><string/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='relation'><doc><text><p>Relation to other items (used when compiling).</p>
</text></doc>
<variable name='relation'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><multiset><indextype><object resolved='7.2::LR.item'/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='counter'><doc><text><p>Depth counter (used when compiling).</p>
</text></doc>
<variable name='counter'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='number'><doc><text><p>Item identification number (used when compiling).</p>
</text></doc>
<variable name='number'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='item_id'><doc><text><p>Used to identify the item.
 Equal to r-&gt;number + offset.</p>
</text></doc>
<variable name='item_id'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/item.pike'/><type><int/></type></variable>
</docgroup>
</class>

<class name='priority'><doc><text><p>Specifies the priority and associativity of a rule.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='value'><doc><text><p>Priority value</p>
</text></doc>
<variable name='value'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/priority.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='assoc'><doc><text><p>Associativity</p>
<int><group><value>-1</value><text><p>Left</p>
</text></group><group><value>0</value><text><p>None</p>
</text></group><group><value>1</value><text><p>Right</p>
</text></group></int>
</text></doc>
<variable name='assoc'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/priority.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new priority object.</p>
</text><group><param name='p'/><text><p>Priority.</p>
</text></group><group><param name='a'/><text><p>Associativity.</p>
</text></group></doc>
<method name='create'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/priority.pike'/>
<arguments><argument name='p'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='Grammar_parser'><doc><text><p>This module generates an LR parser from a grammar specified according
 to the following grammar:</p>
<p> <pre>
        directives : directive ;
	   directives : directives directive ;
	   directive : declaration ;
	   directive : rule ;
	   declaration : "%token" terminals ";" ;
	   rule : nonterminal ":" symbols ";" ;
	   rule : nonterminal ":" symbols action ";" ;
	   symbols : symbol ;
	   symbols : symbols symbol ;
	   terminals : terminal ;
	   terminals : terminals terminal ;
	   symbol : nonterminal ;
	   symbol : "string" ;
	   action : "{" "identifier" "}" ;
	   nonterminal : "identifier" ;
	   terminal : "string";
 </pre></p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/Grammar_parser.pmod'/><classname resolved='7.2::LR'>LR</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error'><doc><text><p>Error code from the parsing.</p>
</text></doc>
<variable name='error'><source-position first-line='183' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/Grammar_parser.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='make_parser' homogen-type='method'><doc><text><p>Compiles the parser-specification given in the first argument.
 Named actions are taken from the object if available, otherwise
 left as is.</p>
</text><group><bugs/><text><p>Returns error-code in both Grammar_parser.error and
 return_value-&gt;error.</p>
</text></group></doc>
<method name='make_parser'><source-position first-line='321' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/Grammar_parser.pmod'/>
<arguments><argument name='str'><type><string/></type></argument><argument name='m'><type><or><object resolved='7.2::LR.Grammar_parser.make_parser'/><void/></or></type></argument></arguments>
<returntype><object resolved='7.2::LR.parser'>parser</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_parser_from_file' homogen-type='method'><doc><text><p>Compiles the file specified in the first argument into an LR parser.</p>
</text><group><seealso/><text><p><ref resolved='7.2::LR.Grammar_parser.make_parser'>make_parser</ref></p>
</text></group></doc>
<method name='make_parser_from_file'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/Grammar_parser.pmod'/>
<arguments><argument name='fname'><type><string/></type></argument><argument name='m'><type><or><object resolved='7.2::LR.Grammar_parser.make_parser_from_file'/><void/></or></type></argument></arguments>
<returntype><or><int/><object resolved='7.2::LR.parser'>parser</object></or></returntype>
</method>
</docgroup>
</module>

<class name='parser'><doc><text><p>This object implements an LALR(1) parser and compiler.</p>
<p> Normal use of this object would be:</p>
<p> <pre>
 {add_rule, set_priority, set_associativity}*
 set_symbol_to_string
 compile
 {parse}*
 </pre></p>
</text></doc>

<class name='kernel'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><doc><text><p>Implements an LR(1) state</p>
</text></doc><docgroup homogen-type='variable' homogen-name='rules'><doc><text><p>Used to check if a rule already has been added when doing closures.</p>
</text></doc>
<variable name='rules'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><multiset><indextype><object resolved='7.2::LR.rule'>rule</object></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='items'><doc><text><p>Contains the items in this state.</p>
</text></doc>
<variable name='items'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><array><valuetype><object resolved='7.2::LR.item'>item</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='item_id_to_item'><doc><text><p>Used to lookup items given rule and offset</p>
</text></doc>
<variable name='item_id_to_item'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><mapping><indextype><int/></indextype><valuetype><object resolved='7.2::LR.item'>item</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='symbol_items'><doc><text><p>Contains the items whose next symbol is this non-terminal.</p>
</text></doc>
<variable name='symbol_items'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><mapping><indextype><int/></indextype><valuetype><multiset><indextype><object resolved='7.2::LR.item'>item</object></indextype></multiset></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='action'><doc><text><p>The action table for this state</p>
<p> <pre>
 object(kernel)    SHIFT to this state on this symbol.
 object(rule)      REDUCE according to this rule on this symbol.
 </pre></p>
</text></doc>
<variable name='action'><source-position first-line='78' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><mapping><indextype><or><int/><string/></or></indextype><valuetype><or><object resolved='7.2::LR.parser.kernel'>kernel</object><object resolved='7.2::LR.rule'>rule</object></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='closure_set'><doc><text><p>The symbols that closure has been called on.</p>
</text></doc>
<variable name='closure_set'><source-position first-line='81' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><multiset/></type></variable>
</docgroup>
<docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Add an item to the state.</p>
</text></doc>
<method name='add_item'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='i'><type><object resolved='7.2::LR.item'>item</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='closure' homogen-type='method'><doc><text><p>Make the closure of this state.</p>
</text><group><param name='nonterminal'/><text><p>Nonterminal to make the closure on.</p>
</text></group></doc>
<method name='closure'><source-position first-line='110' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='nonterminal'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='goto_set' homogen-type='method'><doc><text><p>Make the goto-set of this state.</p>
</text></doc>
<method name='goto_set'><source-position first-line='143' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments/>
<returntype><multiset><indextype><or><int/><string/></or></indextype></multiset></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_goto' homogen-type='method'><doc><text><p>Generates the state reached when doing goto on the specified symbol.
 i.e. it compiles the LR(0) state.</p>
</text><group><param name='symbol'/><text><p>Symbol to make goto on.</p>
</text></group></doc>
<method name='do_goto'><source-position first-line='166' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='symbol'><type><or><int/><string/></or></type></argument></arguments>
<returntype><object resolved='7.2::LR.parser.kernel'>kernel</object></returntype>
</method>
</docgroup>
</class>

<class name='state_queue'><source-position first-line='233' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><doc><text><p>This is a queue, which keeps the elements even after they are retrieved.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='head'><doc><text><p>Index of the head of the queue.</p>
</text></doc>
<variable name='head'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='tail'><doc><text><p>Index of the tail of the queue.</p>
</text></doc>
<variable name='tail'><source-position first-line='239' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='arr'><doc><text><p>The queue itself.</p>
</text></doc>
<variable name='arr'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><array><valuetype><object resolved='7.2::LR.parser.kernel'>kernel</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Pushes the state on the queue.</p>
</text><group><param name='state'/><text><p>State to push.</p>
</text></group></doc>
<method name='push'><source-position first-line='248' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='state'><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></argument></arguments>
<returntype><object resolved='7.2::LR.parser.kernel'>kernel</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>Return the next state from the queue.</p>
</text></doc>
<method name='next'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments/>
<returntype><or><int/><object resolved='7.2::LR.parser.kernel'>kernel</object></or></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><classname resolved='7.4::Array'>Array</classname></import>
</docgroup>
<docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><classname resolved='7.2::LR'>LR</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='grammar'><doc><text><p>The grammar itself.</p>
</text></doc>
<variable name='grammar'><source-position first-line='270' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><mapping><indextype><or><int/><string/></or></indextype><valuetype><array><valuetype><object resolved='7.2::LR.rule'>rule</object></valuetype></array></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='start_state'><doc><text><p>The initial LR0 state.</p>
</text></doc>
<variable name='start_state'><source-position first-line='291' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='verbose'><doc><text><p>Verbosity level</p>
<int><group><value>0</value><text><p>None</p>
</text></group><group><value>1</value><text><p>Some</p>
</text></group></int>
</text></doc>
<variable name='verbose'><source-position first-line='301' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error'><doc><text><p>Error code</p>
</text></doc>
<variable name='error'><source-position first-line='304' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='known_states'><doc><text><p>LR0 states that are already known to the compiler.</p>
</text></doc>
<variable name='known_states'><source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><mapping><indextype><string/></indextype><valuetype><object resolved='7.2::LR.parser.kernel'>kernel</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='rule_to_string' homogen-type='method'><doc><text><p>Pretty-prints a rule to a string.</p>
</text><group><param name='r'/><text><p>Rule to print.</p>
</text></group></doc>
<method name='rule_to_string'><source-position first-line='335' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='r'><type><object resolved='7.2::LR.rule'>rule</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='item_to_string' homogen-type='method'><doc><text><p>Pretty-prints an item to a string.</p>
</text><group><param name='i'/><text><p>Item to pretty-print.</p>
</text></group></doc>
<method name='item_to_string'><source-position first-line='353' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='i'><type><object resolved='7.2::LR.item'>item</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='state_to_string' homogen-type='method'><doc><text><p>Pretty-prints a state to a string.</p>
</text><group><param name='state'/><text><p>State to pretty-print.</p>
</text></group></doc>
<method name='state_to_string'><source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='state'><type><object resolved='7.2::LR.parser.kernel'>kernel</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_string' homogen-type='method'><doc><text><p>Pretty-prints the current grammar to a string.</p>
</text></doc>
<method name='cast_to_string'><source-position first-line='386' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Implements casting.</p>
</text><group><param name='type'/><text><p>Type to cast to.</p>
</text></group></doc>
<method name='cast'><source-position first-line='412' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_priority' homogen-type='method'><doc><text><p>Sets the priority of a terminal.</p>
</text><group><param name='terminal'/><text><p>Terminal to set the priority for.</p>
</text></group><group><param name='pri_val'/><text><p>Priority; higher = prefer this terminal.</p>
</text></group></doc>
<method name='set_priority'><source-position first-line='428' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='terminal'><type><string/></type></argument><argument name='pri_val'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_associativity' homogen-type='method'><doc><text><p>Sets the associativity of a terminal.</p>
</text><group><param name='terminal'/><text><p>Terminal to set the associativity for.</p>
</text></group><group><param name='assoc'/><text><p>Associativity; negative - left, positive - right, zero - no associativity.</p>
</text></group></doc>
<method name='set_associativity'><source-position first-line='445' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='terminal'><type><string/></type></argument><argument name='assoc'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_symbol_to_string' homogen-type='method'><doc><text><p>Sets the symbol to string conversion function.
 The conversion function is used by the various *_to_string functions
 to make comprehensible output.</p>
</text><group><param name='s_to_s'/><text><p>Symbol to string conversion function.
 If zero or not specified, use the built-in function.</p>
</text></group></doc>
<method name='set_symbol_to_string'><source-position first-line='463' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='s_to_s'><type><or><void/><function><argtype><or><int/><string/></or></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_rule' homogen-type='method'><doc><text><p>Add a rule to the grammar.</p>
</text><group><param name='r'/><text><p>Rule to add.</p>
</text></group></doc>
<method name='add_rule'><source-position first-line='476' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='r'><type><object resolved='7.2::LR.rule'>rule</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='s_q'><doc><text><p>Contains all states used.
 In the queue-part are the states that remain to be compiled.</p>
</text></doc>
<variable name='s_q'><source-position first-line='646' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/><type><object resolved='7.2::LR.parser.state_queue'>state_queue</object></type></variable>
</docgroup>
<docgroup homogen-name='compile' homogen-type='method'><doc><text><p>Compiles the grammar into a parser, so that parse() can be called.</p>
</text></doc>
<method name='compile'><source-position first-line='1097' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse' homogen-type='method'><doc><text><p>Parse the input according to the compiled grammar.
 The last value reduced is returned.</p>
</text><group><note/><text><p>The parser must have been compiled (with compile())
   prior to calling this function.</p>
</text></group><group><bugs/><text><p>Errors should be throw()n.</p>
</text></group><group><param name='scanner'/><text><p>The scanner function. It returns the next symbol from the input.
   It should either return a string (terminal) or an array with
   a string (terminal) and a mixed (value).
   EOF is indicated with the empty string.</p>
</text></group><group><param name='action_object'/><text><p>Object used to resolve those actions that have been specified as
   strings.</p>
</text></group></doc>
<method name='parse'><source-position first-line='1435' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/LR.pmod/parser.pike'/>
<arguments><argument name='scanner'><type><or><object resolved='7.2::LR.parser.parse'/><function><argtype><void/></argtype><returntype><or><string/><array><valuetype><or><string/><mixed/></or></valuetype></array></or></returntype></function></or></type></argument><argument name='action_object'><type><or><void/><object resolved='7.2::LR.parser.parse'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class></module>







<doc><text><p>Pike 7.2 compatibility.</p>
<p> The symbols in this namespace will appear in
 programs that use <expr>#pike 7.2</expr> or lower.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name=''><doc/>
<inherit name=''><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/__default.pmod'/><classname resolved='7.4::'>7.4::</classname></inherit>
</docgroup>
<docgroup homogen-name='dirname' homogen-type='method'><doc><text><p>Remove the last segment from <ref resolved='7.2::dirname.path'>path</ref>.</p>
<p> This implementation differs from <ref resolved='predef::dirname'>predef::dirname()</ref>
 in that it will return <expr>""</expr> for the input <expr>"/"</expr>
 while <ref resolved='predef::dirname'>predef::dirname()</ref> will return <expr>"/"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::dirname'>predef::dirname()</ref></p>
</text></group></doc>
<method name='dirname'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/__default.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sleep' homogen-type='method'><doc><text><p>High-resolution sleep (Pike 7.2 compatibility).</p>
<p>   Sleep <ref resolved='7.2::sleep.t'>t</ref> seconds. This function was renamed to <ref resolved='predef::delay'>delay()</ref>
   in Pike 7.3.</p>
</text><group><note/><text><p>This function will busy-wait if the sleep-interval is short.</p>
</text></group><group><deprecated><name>delay</name></deprecated></group><group><seealso/><text><p><ref resolved='predef::sleep'>predef::sleep()</ref>, <ref resolved='predef::delay'>delay()</ref></p>
</text></group></doc>
<method name='sleep'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/__default.pmod'/>
<arguments><argument name='t'><type><or><float/><int/></or></type></argument><argument name='abort'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='default_yp_domain' homogen-type='method'><doc><text><p>Get the default YP domain (Pike 7.2 compatibility).
   This function was removed in Pike 7.3, use
   <ref resolved='predef::Yp.default_domain'>Yp.default_domain()</ref> instead.</p>
</text><group><deprecated><name>Yp.default_domain</name></deprecated></group><group><seealso/><text><p><ref resolved='predef::Yp.default_domain'>Yp.default_domain()</ref></p>
</text></group></doc>
<method name='default_yp_domain'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/__default.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='new' homogen-type='method'><doc><text><p>Instantiate a program (Pike 7.2 compatibility).</p>
<p>   A new instance of the class <ref resolved='7.2::new.prog'>prog</ref> will be created.
   All global variables in the new object be initialized, and
   then <ref resolved='lfun::create'>lfun::create()</ref> will be called with <ref resolved='7.2::new.args'>args</ref> as arguments.</p>
<p>   This function was removed in Pike 7.3, use
   <expr>((program)<ref resolved='7.2::new.prog'>prog</ref>)(@<ref resolved='7.2::new.args'>args</ref>)</expr>
   instead.</p>
</text><group><deprecated/></group><group><seealso/><text><p><ref resolved='predef::destruct'>destruct()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='7.2::clone'>clone()</ref></p>
</text></group></doc>
<method name='new'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/__default.pmod'/>
<arguments><argument name='prog'><type><or><string/><program/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='7.2::new'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clone' homogen-type='method'><doc><text><p>Alternate name for the function <ref resolved='7.2::new'>new()</ref> (Pike 7.2 compatibility).</p>
<p>   This function was removed in Pike 7.3, use
   <expr>((program)<ref resolved='7.2::clone.prog'>prog</ref>)(@<ref resolved='7.2::clone.args'>args</ref>)</expr>
   instead.</p>
</text><group><deprecated/></group><group><seealso/><text><p><ref resolved='predef::destruct'>destruct()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='7.2::new'>new()</ref></p>
</text></group></doc>
<method name='clone'>
<arguments><argument name='prog'><type><or><string/><program/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='7.2::clone'/></returntype>
</method>
</docgroup>


<module name='String'>

<class name='String_buffer'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/><doc><text><p>A helper class to optimize iterative string build-up for speed. Can help up
 performance noticably when dealing with buildup of huge strings by reducing
 the time needed for rehashing the string every time it grows.</p>
</text><group><deprecated><name>String.Buffer</name></deprecated></group></doc><docgroup homogen-name='get_buffer' homogen-type='method'><doc><text><p>Get the contents of the buffer.</p>
</text></doc>
<method name='get_buffer'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Append the string <ref resolved='7.2::String.String_buffer.append.s'>s</ref> to the buffer.</p>
</text></doc>
<method name='append'><source-position first-line='155' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc/>
<method name='cast'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Clear the buffer.</p>
</text></doc>
<method name='flush'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='count' homogen-type='method'><doc><text><p>This function counts the number of times the <ref resolved='7.2::String.count.needle'>needle</ref>
 can be found in <ref resolved='7.2::String.count.haystack'>haystack</ref>.</p>
</text><group><note/><text><p>Intersections between needles are not counted, ie
 <tt>count("....","..")</tt> is <tt>2</tt>.</p>
</text></group></doc>
<method name='count'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='needle'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='width' homogen-type='method'><doc><text><p>Returns the width in bits (8, 16 or 32) of the widest character
 in <ref resolved='7.2::String.width.s'>s</ref>.</p>
</text></doc>
<method name='width'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='implode_nicely' homogen-type='method'><doc><text><p>This function implodes a list of words to a readable string.
 If the separator is omitted, the default is &lt;tt&gt;"and"&lt;/tt&gt;.
 If the words are numbers they are converted to strings first.</p>
</text><group><seealso/><text><p><ref resolved='predef::`*'>`*()</ref></p>
</text></group></doc>
<method name='implode_nicely'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='foo'><type><array><valuetype><or><string/><int/><float/></or></valuetype></array></type></argument><argument name='separator'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='capitalize' homogen-type='method'><doc><text><p>Convert the first character in <ref resolved='7.2::String.capitalize.str'>str</ref> to upper case, and return the
 new string.</p>
</text><group><seealso/><text><p><ref resolved='predef::lower_case'>lower_case()</ref>, <ref resolved='predef::upper_case'>upper_case()</ref></p>
</text></group></doc>
<method name='capitalize'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sillycaps' homogen-type='method'><doc><text><p>Convert the first character in each word (separated by spaces) in
 <ref resolved='7.2::String.sillycaps.str'>str</ref> to upper case, and return the new string.</p>
</text></doc>
<method name='sillycaps'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='strmult' homogen-type='method'><doc><text><p>This function multiplies <ref resolved='7.2::String.strmult.str'>str</ref> by <ref resolved='7.2::String.strmult.num'>num</ref>. The return value is the same
 as appending <ref resolved='7.2::String.strmult.str'>str</ref> to an empty string <ref resolved='7.2::String.strmult.num'>num</ref> times.</p>
</text><group><note/><text><p>This function is obsolete, since this functionality has been incorporated
 into <ref resolved='predef::`*'>`*()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`*'>`*()</ref></p>
</text></group></doc>
<method name='strmult'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='str'><type><string/></type></argument><argument name='num'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='common_prefix' homogen-type='method'><doc><text><p>Find the longest common prefix from an array of strings.</p>
</text></doc>
<method name='common_prefix'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='strs'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fuzzymatch' homogen-type='method'><doc><text><p>This function compares two strings using a fuzzy matching
 routine. The higher the resulting value, the better the strings match.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>Array.diff()</ref>, <ref resolved='predef::Array.diff_compare_table'>Array.diff_compare_table()</ref>
 <ref resolved='predef::Array.diff_longest_sequence'>Array.diff_longest_sequence()</ref></p>
</text></group></doc>
<method name='fuzzymatch'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='a'><type><string/></type></argument><argument name='b'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='trim_whites' homogen-type='method'><doc><text><p>Trim leading and trailing spaces and tabs from the string <ref resolved='7.2::String.trim_whites.s'>s</ref>.</p>
</text></doc>
<method name='trim_whites'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='trim_all_whites' homogen-type='method'><doc><text><p>Trim leading and trailing white spaces characters (<tt>" \t\r\n"</tt>) from
 the string <ref resolved='7.2::String.trim_all_whites.s'>s</ref>.</p>
</text></doc>
<method name='trim_all_whites'><source-position first-line='258' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.2/modules/String.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module></namespace>













<namespace name='predef'>

<module name='Cache'>

<module name='Policy'>

<class name='Base'><doc><text><p>Base class for cache expiration policies.</p>
</text></doc><docgroup homogen-name='expire' homogen-type='method'><doc><text><p>Expire callback.</p>
<p>   This function is called to expire parts
   of <ref resolved='predef::Cache.Policy.Base.expire.storage'>storage</ref>.</p>
</text><group><note/><text><p>All Storage.Policy classes must MUST implement this method.</p>
</text></group></doc>
<method name='expire'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Policy.pmod/Base.pike'/>
<arguments><argument name='storage'><type><object resolved='predef::Cache.Storage.Base'>Cache.Storage.Base</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Timed'><doc><text><p>An access-time-based expiration policy manager.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Base'><doc>
</doc>
<inherit name='Base'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Policy.pmod/Timed.pike'/><classname resolved='predef::Cache.Policy.Base'>Cache.Policy.Base</classname></inherit>
</docgroup>
</class></module>



<module name='Storage'>

<class name='Base'><doc><text><p>Base class for cache storage managers.</p>
<p> All <ref resolved='predef::Cache.Storage'>Cache.Storage</ref> managers must provide these methods.</p>
</text></doc><docgroup homogen-type='method'><doc><text><p>These two functions are an iterator over the cache. There is an
 internal cursor, which is reset by each call to <ref resolved='predef::Cache.Storage.Base.first'>first()</ref>. Subsequent
 calls to <ref resolved='predef::Cache.Storage.Base.first'>next()</ref> will iterate over all the contents of the cache.</p>
<p> These functions are not meant to be exported to the user, but are
 solely for the policy managers' benefit.</p>
</text></doc>
<method name='first'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments/>
<returntype><or><int><min>0</min><max>0</max></int><string/></or></returntype>
</method>
<method name='next'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments/>
<returntype><or><int><min>0</min><max>0</max></int><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Data-object creation is performed here if necessary, or in <ref resolved='predef::Cache.Storage.Base.get'>get()</ref>
 depending on the backend.</p>
<p> This allows the storage managers to have their own
 data class implementation.</p>
</text></doc>
<method name='set'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument><argument name='max_life'><type><or><void/><int/></or></type></argument><argument name='preciousness'><type><or><void/><float/></or></type></argument><argument name='dependants'><type><or><void/><multiset><indextype><string/></indextype></multiset></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Fetch some data from the cache synchronously.</p>
</text><group><note/><text><p>Be careful, as with some storage managers it might block the calling
   thread for some time.</p>
</text></group></doc>
<method name='get'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='notouch'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><or><int><min>0</min><max>0</max></int><object>Cache.Data</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='aget' homogen-type='method'><doc><text><p>Fetch some data from the cache asynchronously.</p>
<p> <ref resolved='predef::Cache.Storage.Base.aget.callback'>callback()</ref> will get as first argument <ref resolved='predef::Cache.Storage.Base.aget.key'>key</ref>, and as second
 argument <tt>0</tt> (cache miss) or an <ref>Cache.Data</ref> object, plus any
 additional argument that the user may have supplied.</p>
</text></doc>
<method name='aget'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='callback'><type><function><argtype><string/></argtype><argtype><or><int><min>0</min><max>0</max></int><object>Cache.Data</object></or></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='extra_callback_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete' homogen-type='method'><doc><text><p>Delete the entry specified by <ref resolved='predef::Cache.Storage.Base.delete.key'>key</ref> from the cache (if present).</p>
<p> If <ref resolved='predef::Cache.Storage.Base.delete.hard'>hard</ref> is <tt>1</tt>, some backends may force a <ref resolved='predef::destruct'>destruct()</ref>
 on the deleted value.</p>
<p> Dependants (if present) are automatically deleted.</p>
</text><group><returns/><text><p>Returns the deleted entry.</p>
</text></group></doc>
<method name='delete'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/Storage.pmod/Base.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='hard'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class></module>

<class name='cache'><doc><text><p>This module serves as a front-end to different kinds of caching systems.
 It uses two helper objects to actually store data, and to determine
 expiration policies. Mechanisms to allow for distributed caching systems
 will be added in time, or at least that is the plan.</p>
</text></doc><docgroup homogen-name='lookup' homogen-type='method'><doc><text><p>Looks in the cache for an element with the given key and, if available,
 returns it. Returns 0 if the element is not available</p>
</text></doc>
<method name='lookup'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='alookup' homogen-type='method'><doc><text><p>Asynchronously look the cache up.
 The callback will be given as arguments the key, the value, and then
 any user-supplied arguments.
 If the timeout (in seconds) expires before any data could be retrieved,
 the callback is called anyways, with 0 as value.</p>
</text></doc>
<method name='alookup'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='callback'><type><function><argtype><string/></argtype><argtype><mixed/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='timeout'><type><or><int/><float/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='store' homogen-type='method'><doc><text><p>Sets some value in the cache. Notice that the actual set operation
 might even not happen at all if the set data doesn't make sense. For
 instance, storing an object or a program in an SQL-based backend
 will not be done, and no error will be given about the operation not being
 performed.</p>
<p> Notice that while max_life will most likely be respected (objects will
 be garbage-collected at pre-determined intervals anyways), the
 preciousness . is to be seen as advisory only for the garbage collector
 If some data was stored with the same key, it gets returned.
 Also notice that max_life is <b>relative</b> and in seconds.
 dependants are not fully implemented yet. They are implemented after
 a request by Martin Stjerrholm, and their purpose is to have some
 weak form of referential integrity. Simply speaking, they are a list
 of keys which (if present) will be deleted when the stored entry is
 deleted (either forcibly or not). They must be handled by the storage 
 manager.</p>
</text></doc>
<method name='store'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument><argument name='max_life'><type><or><void/><int/></or></type></argument><argument name='preciousness'><type><or><void/><float/></or></type></argument><argument name='dependants'><type><or><void/><multiset><indextype><string/></indextype></multiset></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete' homogen-type='method'><doc><text><p>Forcibly removes some key.
 If the 'hard' parameter is supplied and true, deleted objects will also
 have their <ref resolved='lfun::destroy'>lfun::destroy</ref> method called upon removal by some
 backends (i.e. memory)</p>
</text></doc>
<method name='delete'><source-position first-line='124' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='hard'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_cleanup_cycle' homogen-type='method'><doc/>
<method name='start_cleanup_cycle'><source-position first-line='161' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_cleanup_cache' homogen-type='method'><doc/>
<method name='async_cleanup_cache'><source-position first-line='175' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='threaded_cleanup_cycle' homogen-type='method'><doc/>
<method name='threaded_cleanup_cycle'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new cache object. Required are a storage manager, and an
 expiration policy object.</p>
</text></doc>
<method name='create'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Cache.pmod/cache.pike'/>
<arguments><argument name='storage_mgr'><type><object resolved='predef::Cache.Storage.Base'>Cache.Storage.Base</object></type></argument><argument name='policy_mgr'><type><object resolved='predef::Cache.Policy.Base'>Cache.Policy.Base</object></type></argument><argument name='cleanup_cycle_delay'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>







<module name='Pike'><docgroup homogen-type='constant'><doc><text><p>Flags for use together with <ref resolved='predef::set_weak_flag'>set_weak_flag</ref> and <ref resolved='predef::get_weak_flag'>get_weak_flag</ref>.
 See <ref resolved='predef::set_weak_flag'>set_weak_flag</ref> for details.</p>
</text></doc>
<constant name='WEAK_INDICES'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/module.pmod'/></constant>
<constant name='WEAK_VALUES'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/module.pmod'/></constant>
<constant name='WEAK'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/module.pmod'/></constant>
</docgroup>


<module name='Security'>

<class name='User'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/Security.pmod'/><doc><text><p>Virtual class for User objects, used in <ref resolved='predef::Pike.Security.Creds'>Creds</ref> objects.</p>
</text></doc><docgroup homogen-name='valid_open' homogen-type='method'><doc><text><p>This callback gets called when a new file is to be opened (and
 the <ref resolved='predef::Pike.Security.Creds'>Creds</ref> object has <ref resolved='predef::Pike.Security.BIT_CONDITIONAL_IO'>BIT_CONDITIONAL_IO</ref> set).</p>
</text><group><param name='type'/><text><p>The type of file operation requested. Can either be <expr>"read"</expr>
 or <expr>"write"</expr>.</p>
</text></group><group><param name='current'/><text><p>The current object, i.e. the Fd object the user is trying to open.</p>
</text></group><group><param name='filename'/><text><p>The file name requested.</p>
</text></group><group><param name='flags'/><text><p>The flag string passed to open, e.g. <expr>"cwt"</expr>.</p>
</text></group><group><param name='access'/><text><p>The access flags requested for the file, e.g. <expr>0666</expr>.</p>
</text></group><group><returns/><text><p>The function can either return a string, which means that the user
 is allowed to open a file, but the returned file should be opened
 instead, or it can return an integer. The integers are intepreted
 as follows.</p>
<int><group><value>0</value><text><p>The user was not allowed to open the file. ERRNO will be set
     to EPERM and an exception is thrown.</p>
</text></group><group><value>1</value><text><p>Do nothing, i.e. valid_open has initilized the <ref resolved='predef::Pike.Security.User.valid_open.current'>current</ref>
     object with an open file. This can (natuarally) only be returned
     if a <ref resolved='predef::Pike.Security.User.valid_open.current'>current</ref> object was given, which is not always the case.</p>
</text></group><group><value>2</value><text><p>The user was allowed to open the file and the open code proceeds.</p>
</text></group><group><value>3</value><text><p>The user was not allowed to open the file and an exception
     is thrown.</p>
</text></group></int>
</text></group></doc>
<method name='valid_open'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/Security.pmod'/>
<arguments><argument name='type'><type><string/></type></argument><argument name='current'><type><object resolved='predef::Pike.Security.User.valid_open'/></type></argument><argument name='filename'><type><string/></type></argument><argument name='flags'><type><string/></type></argument><argument name='access'><type><int/></type></argument></arguments>
<returntype><or><int><min>0</min><max>3</max></int><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='valid_io' homogen-type='method'><doc><text><p>This callback gets called when I/O operations not performed on
 file objects are performed.</p>
</text></doc>
<method name='valid_io'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Pike.pmod/Security.pmod'/>
<arguments><argument name='fun'><type><string/></type></argument><argument name='type'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><or><int><min>0</min><max>3</max></int><array/></or></returntype>
</method>
</docgroup>
</class><doc><text><p>Pike has an optional internal security system, which can be
 enabled with the configure-option <tt>--with-security</tt>.</p>
<p> The security system is based on attaching credential objects
 (<ref resolved='predef::Pike.Security.Creds'>Pike.Security.Creds</ref>) to objects, programs, arrays,
 mappings or multisets.</p>
<p> A credential object in essence holds three values:</p>
<dl><group><item/><text><p><tt>user</tt> -- The owner.</p>
</text></group><group><item/><text><p><tt>allow_bits</tt> -- Run-time access permissions.</p>
</text></group><group><item/><text><p><tt>data_bits</tt> -- Data access permissions.</p>
</text></group></dl></text></doc>

<class name='Creds'><doc><text><p>The credentials object.</p>
</text></doc><docgroup homogen-type='method' homogen-name='get_default_creds'><doc><text><p>Get the default credentials.</p>
<p> Returns the default credentials object if it has been set.
 Returns <expr>0</expr> (zero) if it has not been set.</p>
</text><group><seealso/><text><p><ref resolved='predef::Pike.Security.Creds.set_default_creds'>set_default_creds()</ref></p>
</text></group></doc>
<method name='get_default_creds'>
<arguments/>
<returntype><object resolved='predef::Pike.Security.Creds'>Creds</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_default_creds'><doc><text><p>Set the default credentials</p>
</text><group><note/><text><p>The current creds must have the allow bit
   <ref resolved='predef::Pike.Security.BIT_SECURITY'>BIT_SECURITY</ref> set.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.Security.Creds.get_default_creds'>get_default_creds()</ref></p>
</text></group></doc>
<method name='set_default_creds'>
<arguments><argument name='creds'><type><object resolved='predef::Pike.Security.Creds'>Creds</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>Initialize a new credentials object.</p>
</text><group><param name='allow_bits'/><text><p>Any of the flags <ref resolved='predef::Pike.Security.BIT_SECURITY'>BIT_SECURITY</ref> and <ref resolved='predef::Pike.Security.BIT_CONDITIONAL_IO'>BIT_CONDITIONAL_IO</ref>
   or:ed together.</p>
</text></group><group><param name='data_bits'/><text><p>Any of the flags <ref resolved='predef::Pike.Security.BIT_INDEX'>BIT_INDEX</ref>, <ref resolved='predef::Pike.Security.BIT_SET_INDEX'>BIT_SET_INDEX</ref>, <ref resolved='predef::Pike.Security.BIT_CALL'>BIT_CALL</ref>,
   <ref resolved='predef::Pike.Security.BIT_NOT_SETUID'>BIT_NOT_SETUID</ref> and <ref resolved='predef::Pike.Security.BIT_DESTRUCT'>BIT_DESTRUCT</ref> or:ed together.</p>
</text></group><group><throws/><text><p>Throws an exception if the current creds doesn't have the allow
   bit <ref resolved='predef::Pike.Security.BIT_SECURITY'>BIT_SECURITY</ref> set.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='user'><type><object resolved='predef::Pike.Security.User'>User</object></type></argument><argument name='allow_bits'><type><int/></type></argument><argument name='data_bits'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_user'><doc><text><p>Get the user part.</p>
</text></doc>
<method name='get_user'>
<arguments/>
<returntype><object resolved='predef::Pike.Security.Creds.get_user'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_allow_bits'><doc><text><p>Get the allow_bit bitmask.</p>
</text></doc>
<method name='get_allow_bits'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_data_bits'><doc><text><p>Get the data_bits bitmask.</p>
</text></doc>
<method name='get_data_bits'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='apply'><doc><text><p>Set the credentials for <ref resolved='predef::Pike.Security.Creds.apply.o'>o</ref> to this credentials object.</p>
</text><group><note/><text><p>To perform this operation the current credentials needs to have the bit
   <ref resolved='predef::Pike.Security.BIT_SECURITY'>BIT_SECURITY</ref> set, or have the same user as the old credentials
   and not change the user by performing the operation.</p>
</text></group></doc>
<method name='apply'>
<arguments><argument name='o'><type><or><object resolved='predef::Pike.Security.Creds.apply'/><program/><function/><array/><mapping/><multiset/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='call_with_creds'><doc><text><p>Call with credentials.</p>
<p> Sets the current credentials to <ref resolved='predef::Pike.Security.call_with_creds.creds'>creds</ref>, and calls
 <expr><ref resolved='predef::Pike.Security.call_with_creds.func'>func</ref>(@<ref resolved='predef::Pike.Security.call_with_creds.args'>args</ref>)</expr>. If <ref resolved='predef::Pike.Security.call_with_creds.creds'>creds</ref> is <expr>0</expr> (zero), the
 credentials from the current object will be used.</p>
</text><group><note/><text><p>The current creds or the current object must have the allow bit
   <ref resolved='predef::Pike.Security.BIT_SECURITY'>BIT_SECURITY</ref> set to allow calling with <ref resolved='predef::Pike.Security.call_with_creds.creds'>creds</ref> other than
   <expr>0</expr> (zero).</p>
</text></group></doc>
<method name='call_with_creds'>
<arguments><argument name='creds'><type><object resolved='predef::Pike.Security.Creds'>Creds</object></type></argument><argument name='func'><type><mixed/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_current_creds'><doc><text><p>Get the current credentials</p>
<p> Returns the credentials that are currently active.
 Returns <expr>0</expr> (zero) if no credentials are active.</p>
</text><group><seealso/><text><p><ref resolved='predef::Pike.Security.call_with_creds'>call_with_creds()</ref></p>
</text></group></doc>
<method name='get_current_creds'>
<arguments/>
<returntype><object resolved='predef::Pike.Security.Creds'>Creds</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_object_creds'><doc><text><p>Get the credentials from <ref resolved='predef::Pike.Security.get_object_creds.o'>o</ref>.</p>
<p> Returns <expr>0</expr> if <ref resolved='predef::Pike.Security.get_object_creds.o'>o</ref> does not have any credentials.</p>
</text></doc>
<method name='get_object_creds'>
<arguments><argument name='o'><type><or><object resolved='predef::Pike.Security.get_object_creds'/><program/><function/><array/><mapping/><multiset/></or></type></argument></arguments>
<returntype><object resolved='predef::Pike.Security.Creds'>Creds</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_INDEX'><doc><text><p>Allow indexing.</p>
</text></doc>
<constant name='BIT_INDEX'><source-position first-line='377' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_SET_INDEX'><doc><text><p>Allow setting of indices.</p>
</text></doc>
<constant name='BIT_SET_INDEX'><source-position first-line='381' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_CALL'><doc><text><p>Allow calling of functions.</p>
</text></doc>
<constant name='BIT_CALL'><source-position first-line='385' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_SECURITY'><doc><text><p>Allow usage of security related functions.</p>
</text></doc>
<constant name='BIT_SECURITY'><source-position first-line='389' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_NOT_SETUID'><doc><text><p>Don't change active credentials on function call.</p>
</text></doc>
<constant name='BIT_NOT_SETUID'><source-position first-line='393' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_CONDITIONAL_IO'><doc><text><p>Allow conditional useage of I/O. The callbacks <expr>valid_open</expr>
   and <expr>valid_io</expr> will be called in the <ref resolved='predef::Pike.Security.User'>User</ref> object in the
   current <ref resolved='predef::Pike.Security.Creds'>Creds</ref> object to determine if the I/O is allowed or not.</p>
</text></doc>
<constant name='BIT_CONDITIONAL_IO'><source-position first-line='397' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BIT_DESTRUCT'><doc><text><p>Allow use of <ref resolved='predef::destruct'>destruct</ref>.</p>
</text></doc>
<constant name='BIT_DESTRUCT'><source-position first-line='403' file='/home/peter/hack/Pike/7.6-distmaker/src/security.c'/></constant>
</docgroup>
</module>



<class name='Backend'><docgroup homogen-type='method' homogen-name='call_out'><doc><text><p>Make a delayed call to a function.</p>
<p> <ref resolved='predef::Pike.Backend.call_out'>call_out()</ref> places a call to the function <ref resolved='predef::Pike.Backend.call_out.f'>f</ref> with the argument
 <ref resolved='predef::Pike.Backend.call_out.args'>args</ref> in a queue to be called in about <ref resolved='predef::Pike.Backend.call_out.delay'>delay</ref> seconds.</p>
<p> If <ref resolved='predef::Pike.Backend.call_out.f'>f</ref> returns <expr>-1</expr>, no other call out or callback will be
 called by the backend in this round. I.e. <ref resolved='predef::Pike.Backend.`()'>`()</ref> will return right
 away. For the main backend that means it will immediately start
 another round and check files and call outs anew.</p>
</text><group><returns/><text><p>Returns a call_out identifier that identifies this call_out.
   This value can be sent to eg <ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref> or <ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out()</ref>, <ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref>, <ref resolved='predef::Pike.Backend.call_out_info'>call_out_info()</ref></p>
</text></group></doc>
<method name='call_out'>
<arguments><argument name='f'><type><function/></type></argument><argument name='delay'><type><or><float/><int/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_do_call_outs'><doc><text><p>Do all pending call_outs.</p>
<p> This function runs all pending call_outs that should have been
 run if Pike returned to the backend.  It should not be used in
 normal operation.</p>
<p> As a side-effect, this function sets the value returned by
 <ref resolved='predef::time'>time(1)</ref> to the current time.</p>
</text><group><returns/><text><p>Zero if no call outs were called, nonzero otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.Backend.call_out'>call_out()</ref>, <ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref>, <ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out()</ref></p>
</text></group></doc>
<method name='_do_call_outs'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='find_call_out'><doc><text><p>Find a call out in the queue.</p>
<p> This function searches the call out queue. If given a function as
 argument, it looks for the first call out scheduled to that function.</p>
<p> The argument can also be a call out id as returned by <ref resolved='predef::Pike.Backend.call_out'>call_out()</ref>, in
 which case that call_out will be found (Unless it has already been
 called).</p>
</text><group><returns/><text><p><ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref> returns the remaining time in seconds before that
   call_out will be executed. If no call_out is found,
   <ref resolved='predef::zero_type'>zero_type</ref>(<ref resolved='predef::Pike.Backend.find_call_out'>find_call_out</ref>(f)) will return 1.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.Backend.call_out'>call_out()</ref>, <ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out()</ref>, <ref resolved='predef::Pike.Backend.call_out_info'>call_out_info()</ref></p>
</text></group></doc>
<method name='find_call_out'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='find_call_out'>
<arguments><argument name='id'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='remove_call_out'><doc><text><p>Remove a call out from the call out queue.</p>
<p> This function finds the first call to the function <ref resolved='predef::Pike.Backend.remove_call_out.f'>f</ref> in the call_out
 queue and removes it.  You can also give a call out id as argument (as
 returned by call_out).</p>
</text><group><returns/><text><p>The remaining time in seconds left to that call out will be returned.
   If no call_out was found, <ref resolved='predef::zero_type'>zero_type</ref>(<ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out</ref>(<ref resolved='predef::Pike.Backend.remove_call_out.f'>f</ref>))
   will return 1.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.Backend.call_out_info'>call_out_info()</ref>, <ref resolved='predef::Pike.Backend.call_out'>call_out()</ref>, <ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref></p>
</text></group></doc>
<method name='remove_call_out'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='remove_call_out'>
<arguments><argument name='id'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='call_out_info'><doc><text><p>Get info about all call_outs.</p>
<p> This function returns an array with one entry for each entry in the
 call out queue. The first in the queue will be at index 0. Each index
 contains an array that looks like this:</p>
<array><group><elem><type><int/></type><index>time_left</index></elem><text><p>Time remaining in seconds until the call_out is to be performed.</p>
</text></group><group><elem><type><object resolved='predef::Pike.Backend.call_out_info'/></type><index>caller</index></elem><text><p>The object that scheduled the call_out.</p>
</text></group><group><elem><type><function/></type><index>fun</index></elem><text><p>Function to be called.</p>
</text></group><group><elem><type><varargs><mixed/></varargs></type><index>args</index></elem><text><p>Arguments to the function.</p>
</text></group></array>
</text><group><seealso/><text><p><ref resolved='predef::Pike.Backend.call_out'>call_out()</ref>, <ref resolved='predef::Pike.Backend.find_call_out'>find_call_out()</ref>, <ref resolved='predef::Pike.Backend.remove_call_out'>remove_call_out()</ref></p>
</text></group></doc>
<method name='call_out_info'>
<arguments/>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`()'><doc><text><p>Perform one pass through the backend.</p>
</text><group><param name='sleep_time'/><text><p>Wait at most <ref resolved='predef::Pike.Backend.`().sleep_time'>sleep_time</ref> seconds. The default when
   unspecified or the integer <expr>0</expr> is no time limit.</p>
</text></group><group><returns/><text><p>If the backend did call any callbacks or call outs then the
   time spent in the backend is returned as a float. Otherwise
   the integer <expr>0</expr> is returned.</p>
</text></group></doc>
<method name='`()'>
<arguments><argument name='sleep_time'><type><or><void/><float/><int><min>0</min><max>0</max></int></or></type></argument></arguments>
<returntype><or><float/><int><min>0</min><max>0</max></int></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='executing_thread'><doc><text><p>Return the thread currently executing in the backend. I.e. the
 thread that has called <ref resolved='predef::Pike.Backend.`()'>`()</ref> and haven't exited from that call.
 Zero is returned if there's no thread in the backend.</p>
<p> If Pike is compiled without thread support then <expr>1</expr> is
 returned if we're inside the backend, <expr>0</expr> otherwise.</p>
</text></doc>
<method name='executing_thread'>
<arguments/>
<returntype><object resolved='predef::Thread.Thread'>Thread.Thread</object></returntype>
</method>
<method name='executing_thread'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_file'><doc><text><p>Add <ref resolved='predef::Pike.Backend.add_file.f'>f</ref> to this backend. This simply does
 <expr>f-&gt;set_backend(backend)</expr> where <expr>backend</expr> is this
 object.</p>
</text></doc>
<method name='add_file'>
<arguments><argument name='f'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><object resolved='predef::Stdio.FILE'>Stdio.FILE</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='id'><doc><text><p>Return an integer that uniquely identifies this backend. For
 the default backend that integer is <expr>0</expr>.</p>
</text></doc>
<method name='id'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<module name='DefaultBackend'><doc><text><p>This is the <ref resolved='predef::Pike.Backend'>Backend</ref> object that files and call_outs are
   handled by by default.</p>
<p>   This is also the <ref resolved='predef::Pike.Backend'>Backend</ref> object that will be used if <ref>main()</ref>
   returns <expr>-1</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Pike.Backend'>Backend</ref>, <ref resolved='predef::Stdio.File.set_nonblocking'>Stdio.File()-&gt;set_nonblocking()</ref>, <ref resolved='predef::call_out'>call_out()</ref></p>
</text></group></doc></module>

<class name='BacktraceFrame'><docgroup homogen-type='method' homogen-name='_is_type'><doc><text><p>This object claims to be an array for backward compatibility.</p>
</text></doc>
<method name='_is_type'>
<arguments><argument name='t'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sprintf'><doc/>
<method name='_sprintf'>
<arguments><argument name='c'><type><int/></type></argument><argument name='opts'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sizeof'><doc/>
<method name='_sizeof'>
<arguments/>
<returntype><int><min>3</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]'><doc><text><p>The BacktraceFrame object can be indexed as an array.</p>
</text></doc>
<method name='`[]'>
<arguments><argument name='index'><type><int/></type></argument><argument name='end_or_none'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]='><doc/>
<method name='`[]='>
<arguments><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='gc_parameters' homogen-type='method'><doc><text><p>Set and get various parameters that control the operation of the
 garbage collector. The passed mapping contains the parameters to
 set. If a parameter is missing from the mapping, the current value
 will be filled in instead. The same mapping is returned. Thus an
 empty mapping, or no argument at all, causes a mapping with all
 current settings to be returned.</p>
<p> The following parameters are recognized:</p>
<mapping><group><member><type><int/></type><index>"enabled"</index></member><text><p>If this is 1 then the gc is enabled as usual. If it's 0 then all
   automatically scheduled gc runs are disabled and the parameters
   below have no effect, but explicit runs through the <ref resolved='predef::gc'>gc</ref>
   function still works as usual. If it's -1 then the gc is
   completely disabled so that even explicit <ref resolved='predef::gc'>gc</ref> calls won't do
   anything.</p>
</text></group><group><member><type><float/></type><index>"garbage_ratio_low"</index></member><text><p>As long as the gc time is less than gc_time_ratio, aim to run
   the gc approximately every time the ratio between the garbage
   and the total amount of allocated things is this.</p>
</text></group><group><member><type><float/></type><index>"time_ratio"</index></member><text><p>When more than this fraction of the cpu time is spent in the gc,
   aim for gc_garbage_ratio_high instead of gc_garbage_ratio_low.</p>
</text></group><group><member><type><float/></type><index>"garbage_ratio_high"</index></member><text><p>Upper limit for the garbage ratio - run the gc as often as it
   takes to keep it below this.</p>
</text></group><group><member><type><float/></type><index>"average_slowness"</index></member><text><p>When predicting the next gc interval, use a decaying average
   with this slowness factor. It should be a value between 0.0 and
   1.0 that specifies the weight to give to the old average value.
   The remaining weight up to 1.0 is given to the last reading.</p>
</text></group></mapping>
</text><group><seealso/><text><p><ref resolved='predef::gc'>gc</ref>, <ref resolved='predef::Debug.gc_status'>Debug.gc_status</ref></p>
</text></group></doc>
<method name='gc_parameters'>
<arguments><argument name='params'><type><or><void/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><float/></valuetype></mapping></returntype>
</method>
</docgroup></module>



<module name='Graphics'>

<module name='Graph'>

<class name='create_pie'><doc><text><p>Graph sub-module for drawing pie-charts.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike'/><classname resolved='predef::Graphics.Graph.polyline'>"polyline.pike"</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike'/><classname resolved='predef::Graphics.Graph.create_graph'>"create_graph.pike"</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_pie.pike'/><classname resolved='predef::Graphics.Graph.create_bars'>"create_bars.pike"</classname></inherit>
</docgroup>
</class>

<class name='create_bars'><doc><text><p>Graph sub-module for drawing bars.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_bars.pike'/><classname resolved='predef::Image.Image'>Image</classname></import>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_bars.pike'/><classname resolved='predef::Graphics.Graph.polyline'>"polyline.pike"</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_bars.pike'/><classname resolved='predef::Graphics.Graph.create_graph'>"create_graph.pike"</classname></inherit>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='polyline'><doc>
</doc>
<inherit name='polyline'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/><modifiers><private/></modifiers><classname>.polyline</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='create_graph'><doc>
</doc>
<inherit name='create_graph'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/><modifiers><private/></modifiers><classname>.create_graph</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='create_bars'><doc>
</doc>
<inherit name='create_bars'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/><modifiers><private/></modifiers><classname>.create_bars</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='create_pie'><doc>
</doc>
<inherit name='create_pie'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/><modifiers><private/></modifiers><classname>.create_pie</classname></inherit>
</docgroup>
<docgroup homogen-name='check_mapping' homogen-type='method'><doc><text><p>This function sets all unset elements in diagram_data to its
 default value as well as performing some simple sanity checks.
 This function is called from within <ref resolved='predef::Graphics.Graph.pie'>pie</ref>, <ref resolved='predef::Graphics.Graph.bars'>bars</ref>, <ref resolved='predef::Graphics.Graph.sumbars'>sumbars</ref>,
 <ref resolved='predef::Graphics.Graph.line'>line</ref>, <ref resolved='predef::Graphics.Graph.norm'>norm</ref> and <ref resolved='predef::Graphics.Graph.graph'>graph</ref>.</p>
</text></doc>
<method name='check_mapping'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument><argument name='type'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='pie' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='pie'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='bars' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='bars'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sumbars' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='sumbars'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='line' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='line'><source-position first-line='139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='norm' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='norm'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='graph' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='graph'><source-position first-line='157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/module.pmod'/>
<arguments><argument name='diagram_data'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>


<class name='create_graph'><doc><text><p>Graph sub-module for drawing graphs.</p>
<p> <ref resolved='predef::Graphics.Graph.create_graph'>create_graph</ref> draws a graph but there are also some other functions
 used by <ref resolved='predef::Graphics.Graph.create_pie'>create_pie</ref> and <ref resolved='predef::Graphics.Graph.create_bars'>create_bars</ref>.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike'/><classname resolved='predef::Image.Image'>Image</classname></import>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Graphics.pmod/Graph.pmod/create_graph.pike'/><classname resolved='predef::Graphics.Graph.polyline'>"polyline.pike"</classname></inherit>
</docgroup>
</class>

<class name='polyline'><doc><text><p>Graph sub-module providing draw functions.</p>
<p> $Id: polyline.pike,v 1.6 2003/11/22 15:00:54 grubba Exp $</p>
</text></doc></class></module>







</module>









<module name='Sql'><doc><text><p>The SQL module is a unified interface between pike and all
 its supported databases. The parts of this module that is
 usuable for all normal uses is the <ref resolved='predef::Sql.Sql'>Sql</ref> class and the
 <ref resolved='predef::Sql.sql_result'>sql_result</ref> class.</p>
</text><group><example/><text><p>string people_in_group(string group) {
    Sql.Sql db = Sql.Sql("mysql://localhost/testdb");
    return db-&gt;query("SELECT name FROM users WHERE "
                     "group=%s", group)-&gt;name * ",";
 }</p>
</text></group></doc>

<class name='msql'><doc><text><p>Implements the glue needed to access the Msql-module from the generic
 SQL module.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='msql'><doc>
</doc>
<inherit name='msql'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/msql.pike'/><classname resolved='predef::Msql.msql'>Msql.msql</classname></inherit>
</docgroup>
</class>

<class name='sql_result'><doc><text><p>Implements the generic result of the SQL-interface.
 Used for return results from SQL.sql-&gt;big_query().</p>
</text></doc><docgroup homogen-type='variable' homogen-name='master_res'><doc><text><p>The actual result.</p>
</text></doc>
<variable name='master_res'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/><type><or><object resolved='predef::Sql.sql_result'/><array/></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='index'><doc><text><p>This is the number of the current row. (0 &lt;= <ref resolved='predef::Sql.sql_result.index'>index</ref> &lt; <ref resolved='predef::Sql.sql_result.num_rows'>num_rows()</ref>)</p>
</text></doc>
<variable name='index'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new Sql.sql_result object</p>
</text><group><param name='res'/><text><p>Result to use as base.</p>
</text></group></doc>
<method name='create'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments><argument name='res'><type><or><object resolved='predef::Sql.sql_result.create'/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_rows' homogen-type='method'><doc><text><p>Returns the number of rows in the result.</p>
</text></doc>
<method name='num_rows'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_fields' homogen-type='method'><doc><text><p>Returns the number of fields in the result.</p>
</text></doc>
<method name='num_fields'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eof' homogen-type='method'><doc><text><p>Returns non-zero if there are no more rows.</p>
</text></doc>
<method name='eof'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_fields' homogen-type='method'><doc><text><p>Return information about the available fields.</p>
</text></doc>
<method name='fetch_fields'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments/>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><text><p>Skip past a number of rows.</p>
</text><group><param name='skip'/><text><p>Number of rows to skip.</p>
</text></group></doc>
<method name='seek'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments><argument name='skip'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_row' homogen-type='method'><doc><text><p>Fetch the next row from the result.</p>
</text></doc>
<method name='fetch_row'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_result.pike'/>
<arguments/>
<returntype><or><int/><array><valuetype><or><string/><int/></or></valuetype></array></or></returntype>
</method>
</docgroup>
</class>

<class name='postgres_result'><doc><text><p>Sql.postgres_result contains the result of a Postgres-query.
 See <ref resolved='predef::Sql.postgres'>Sql.postgres</ref> for a description of this program's functions.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='postgres_result'><doc>
</doc>
<inherit name='postgres_result'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres_result.pike'/><classname resolved='predef::Postgres.postgres_result'>Postgres.postgres_result</classname></inherit>
</docgroup>
</class>

<module name='sql_util'><doc><text><p>Some SQL utility functions</p>
</text></doc>

<class name='UnicodeWrapper'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/><doc><text><p>Result object wrapper performing utf8 decoding of all fields.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='master_result'><modifiers><static/></modifiers><type><object resolved='predef::Sql.sql_util.UnicodeWrapper'/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='master_result'><type><object resolved='predef::Sql.sql_util.UnicodeWrapper'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_rows' homogen-type='method'><doc><text><p>Returns the number of rows in the result.</p>
</text></doc>
<method name='num_rows'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_fields' homogen-type='method'><doc><text><p>Returns the number of fields in the result.</p>
</text></doc>
<method name='num_fields'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eof' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if there are no more rows in the result.</p>
</text></doc>
<method name='eof'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='field_info'><doc><text><p>Cached <ref resolved='predef::Sql.sql_util.UnicodeWrapper.fetch_fields'>fetch_fields()</ref> result.</p>
</text></doc>
<variable name='field_info'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/><modifiers><static/></modifiers><type><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='fetch_fields' homogen-type='method'><doc><text><p>Returns Information about the fields in the result.</p>
<p> The following fields are converted from UTF8 if present:</p>
<mapping><group><member><type><string/></type><index>"name"</index></member><text><p>The name of the field. Always present.</p>
</text></group><group><member><type><string/></type><index>"table"</index></member><text><p>The table the field is from. Not present from all databases.</p>
</text></group><group><member><type><string/></type><index>"default"</index></member><text><p>The default value for the column. Not available from all databases.</p>
</text></group></mapping>
</text></doc>
<method name='fetch_fields'><source-position first-line='101' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><text><p>Skip ahead the specified number of rows.</p>
</text></doc>
<method name='seek'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments><argument name='rows'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_row' homogen-type='method'><doc><text><p>Fetch the next row from the result.</p>
<p> All strings in the result are decoded from UTF8.</p>
</text></doc>
<method name='fetch_row'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><or><int/><array><valuetype><string/></valuetype></array></or></returntype>
</method>
</docgroup>
</class>

<class name='MySQLUnicodeWrapper'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/><doc><text><p>Result wrapper for MySQL that performs UTF-8 decoding of all
 nonbinary fields. Useful if the result charset of the connection
 has been set to UTF-8.</p>
</text><group><note/><text><p>There's normally no need to use this class directly. It's used
 automatically when <ref>Mysql.set_unicode_decode_mode</ref> is activated.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='UnicodeWrapper'><doc>
</doc>
<inherit name='UnicodeWrapper'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/><classname resolved='predef::Sql.sql_util.UnicodeWrapper'>UnicodeWrapper</classname></inherit>
</docgroup>
</class><docgroup homogen-name='quote' homogen-type='method'><doc><text><p>Quote a string so that it can safely be put in a query.</p>
</text><group><param name='s'/><text><p>String to quote.</p>
</text></group></doc>
<method name='quote'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fallback' homogen-type='method'><doc><text><p>Throw an error in case an unimplemented function is called.</p>
</text></doc>
<method name='fallback'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='emulate_bindings' homogen-type='method'><doc><text><p>Build a raw SQL query, given the cooked query and the variable bindings
 It's meant to be used as an emulation engine for those drivers not
 providing such a behaviour directly (i.e. Oracle).
 The raw query can contain some variables (identified by prefixing
 a colon to a name or a number (i.e. ":var" or  ":2"). They will be
 replaced by the corresponding value in the mapping.</p>
</text><group><param name='query'/><text><p>The query.</p>
</text></group><group><param name='bindings'/><text><p>Optional mapping containing the variable bindings. Make sure that
   no confusion is possible in the query. If necessary, change the
   variables' names.</p>
</text></group></doc>
<method name='emulate_bindings'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/sql_util.pmod'/>
<arguments><argument name='query'><type><string/></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument><argument name='driver'><type><or><void/><object resolved='predef::Sql.sql_util.emulate_bindings'/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<class name='Sql'><doc><text><p>Implements those functions that need not be present in all SQL-modules.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='master_sql'><doc><text><p>Object to use for the actual SQL-queries.</p>
</text></doc>
<variable name='master_sql'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/><type><object resolved='predef::Sql.Sql'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='case_convert'><doc><text><p>Convert all field names in mappings to lower_case.
 Only relevant to databases which only implement big_query(),
 and use upper/mixed-case fieldnames (eg Oracle).</p>
<int><group><value>0</value><text><p>No (default)</p>
</text></group><group><value>1</value><text><p>Yes</p>
</text></group></int>
</text></doc>
<variable name='case_convert'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-name='quote' homogen-type='method'><doc><text><p>Quote a string <ref resolved='predef::Sql.Sql.quote.s'>s</ref> so that it can safely be put in a query.</p>
<p> All input that is used in SQL-querys should be quoted to prevent
 SQL injections.</p>
<p> Consider this harmfull code:</p>
<code><text><p>string my_input = "rob' OR name!='rob";
   string my_query = "DELETE FROM tblUsers WHERE name='"+my_input+"'";
   my_db-&gt;query(my_query);</p>
</text></code><p>This type of problems can be avoided by quoting <tt>my_input</tt>.
 <tt>my_input</tt> would then probably read something like 
 <i>rob\' OR name!=\'rob</i> </p>
<p> Usually this is done - not by calling quote explicitly - but through
 using a <ref resolved='predef::sprintf'>sprintf</ref> like syntax</p>
<code><text><p>string my_input = "rob' OR name!='rob";
   my_db-&gt;query("DELETE FROM tblUsers WHERE name=%s",my_input);</p>
</text></code>
</text></doc>
<method name='quote'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_time' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted time
 spec for the database.</p>
</text><group><param name='t'/><text><p>Time to encode.</p>
</text></group><group><param name='is_utc'/><text><p>If nonzero then time is taken as a "full" unix time spec
   (where the date part is ignored), otherwise it's converted as a
   seconds-since-midnight value.</p>
</text></group></doc>
<method name='encode_time'>
<arguments><argument name='t'><type><int/></type></argument><argument name='is_utc'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_time' homogen-type='method'><doc><text><p>Converts a database time spec to a system time value.</p>
</text><group><param name='t'/><text><p>Time spec to decode.</p>
</text></group><group><param name='want_utc'/><text><p>Take the date part from this system time value. If zero, a
   seconds-since-midnight value is returned.</p>
</text></group></doc>
<method name='decode_time'>
<arguments><argument name='t'><type><string/></type></argument><argument name='want_utc'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_date' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted
 date-only spec for the database.</p>
</text><group><param name='t'/><text><p>Time to encode.</p>
</text></group></doc>
<method name='encode_date'>
<arguments><argument name='t'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_date' homogen-type='method'><doc><text><p>Converts a database date-only spec to a system time value.</p>
</text><group><param name='d'/><text><p>Date spec to decode.</p>
</text></group></doc>
<method name='decode_date'>
<arguments><argument name='d'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_datetime' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted
 date and time spec for the database.</p>
</text><group><param name='t'/><text><p>Time to encode.</p>
</text></group></doc>
<method name='encode_datetime'>
<arguments><argument name='t'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_datetime' homogen-type='method'><doc><text><p>Converts a database date and time spec to a system time value.</p>
</text><group><param name='datetime'/><text><p>Date and time spec to decode.</p>
</text></group></doc>
<method name='decode_datetime'>
<arguments><argument name='datetime'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new generic SQL object.</p>
</text><group><param name='host'/><text><mixed><group><type><object resolved='predef::Sql.Sql.create'/></type><text><p>Use this object to access the SQL-database.</p>
</text></group><group><type><string/></type><text><p>Connect to the server specified. The string should be on the
       format:
       <tt>dbtype://[user[:password]@]hostname[:port][/database]</tt>
       Use the <i>dbtype</i> protocol to connect to the database
       server on the specified host. If the hostname is <expr>""</expr>
       then the port can be a file name to access through a
       UNIX-domain socket or similar, e g
       <expr>"mysql://root@:/tmp/mysql.sock/"</expr>.</p>
<p>       There is a special dbtype <expr>"mysqls"</expr> which works like
       <expr>"mysql"</expr> but sets the <tt>CLIENT_SSL</tt> option and
       loads the <tt>/etc/my.cnf</tt> config file to find the SSL
       parameters. The same function can be achieved using the
       <expr>"mysql"</expr> dbtype.</p>
</text></group><group><type><int><min>0</min><max>0</max></int></type><text><p>Access through a UNIX-domain socket or similar.</p>
</text></group></mixed>
</text></group><group><param name='db'/><text><p>Select this database.</p>
</text></group><group><param name='user'/><text><p>User name to access the database as.</p>
</text></group><group><param name='password'/><text><p>Password to access the database.</p>
</text></group><group><param name='options'/><text><p>Optional mapping of options.
   See the SQL-database documentation for the supported options.
   (eg <ref resolved='predef::Mysql.mysql.create'>Mysql.mysql()-&gt;create()</ref>).</p>
</text></group><group><note/><text><p>In versions of Pike prior to 7.2 it was possible to leave out the
   dbtype, but that has been deprecated, since it never worked well.</p>
</text></group><group><note/><text><p>Support for <ref resolved='predef::Sql.Sql.create.options'>options</ref> was added in Pike 7.3.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='db'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><object resolved='predef::Sql.Sql.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><object resolved='predef::Sql.Sql.create'/></type></argument><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_charset' homogen-type='method'><doc><text><p>Changes the charset that the connection uses for queries and
 returned text strings.</p>
</text><group><param name='charset'/><text><p>The charset to use. The valid values and their meanings depends
   on the database brand. However, the special value
   <expr>"unicode"</expr> (if supported) selects a mode where the query
   and result strings are unencoded (and possibly wide) unicode
   strings.</p>
</text></group><group><throws/><text><p>An error is thrown if the connection doesn't support the
   specified charset, or doesn't support charsets being set this
   way at all.</p>
</text></group><group><note/><text><p>See the <expr>set_charset</expr> functions for each database
   connection type for further details about the effects on the
   connection.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql.get_charset'>get_charset</ref>, <ref resolved='predef::Sql.mysql.set_charset'>Sql.mysql.set_charset</ref></p>
</text></group></doc>
<method name='set_charset'><source-position first-line='287' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='charset'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_charset' homogen-type='method'><doc><text><p>Returns the (database dependent) name of the charset used for (at
 least) query strings. Returns zero if the connection doesn't
 support charsets this way (typically means that a call to
 <ref resolved='predef::Sql.Sql.set_charset'>set_charset</ref> will throw an error).</p>
</text><group><seealso/><text><p><ref resolved='predef::Sql.Sql.set_charset'>set_charset</ref>, <ref resolved='predef::Sql.mysql.get_charset'>Sql.mysql.get_charset</ref></p>
</text></group></doc>
<method name='get_charset'><source-position first-line='317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='error' homogen-type='method'><doc><text><p>Return last error message.</p>
</text></doc>
<method name='error'><source-position first-line='364' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><or><int/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_db' homogen-type='method'><doc><text><p>Select database to access.</p>
</text></doc>
<method name='select_db'><source-position first-line='372' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compile_query' homogen-type='method'><doc><text><p>Compiles the query (if possible). Otherwise returns it as is.
 The resulting object can be used multiple times in query() and
 big_query().</p>
</text><group><param name='q'/><text><p>SQL-query to compile.</p>
</text></group></doc>
<method name='compile_query'><source-position first-line='383' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='q'><type><string/></type></argument></arguments>
<returntype><or><string/><object resolved='predef::Sql.Sql.compile_query'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='handle_extraargs' homogen-type='method'><doc><text><p>Handle sprintf-based quoted arguments</p>
</text></doc>
<method name='handle_extraargs'><source-position first-line='392' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/><modifiers><private/></modifiers>
<arguments><argument name='query'><type><string/></type></argument><argument name='extraargs'><type><array><valuetype><mixed/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><or><string/><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='query' homogen-type='method'><doc><text><p>Send an SQL query to the underlying SQL-server.</p>
</text><group><param name='q'/><text><p>Query to send to the SQL-server. This can either be a string with the
   query, or a previously compiled query (see compile_query()).</p>
</text></group><group><param name='extraargs'/><text><p>This parameter, if specified, can be in two forms:</p>
<ol><group><item/><text><p>A mapping containing bindings of variables used in the query.
     A variable is identified by a colon (:) followed by a name or number.
     Each index in the mapping corresponds to one such variable, and the
     value for that index is substituted (quoted) into the query wherever
     the variable is used.</p>
<code><text><p>res = query("SELECT foo FROM bar WHERE gazonk=:baz",
             ([":baz":"value"]));</p>
</text></code><p>Binary values (BLOBs) may need to be placed in multisets.</p>
</text></group><group><item/><text><p>Arguments as you would use in sprintf. They are automatically
     quoted.</p>
<code><text><p>res = query("select foo from bar where gazonk=%s","value");</p>
</text></code></text></group></ol>
</text></group><group><returns/><text><p>Returns one of the following on success:</p>
<mixed><group><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></type><text><p>The result as an array of mappings indexed on the name
       of the columns</p>
</text></group><group><type><zero/></type><text><p>The value <expr>0</expr> (zero) if the query didn't return any
       result (eg <tt>INSERT</tt> or similar).</p>
</text></group></mixed>
</text></group><group><throws/><text><p>Throws an exception if the query fails.</p>
</text></group></doc>
<method name='query'><source-position first-line='460' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>Send an SQL query to the underlying SQL-server. The result is returned
 as a Sql.sql_result object. This allows for having results larger than
 the available memory, and returning some more info about the result.
 Returns 0 if the query didn't return any result (e.g. INSERT or similar).
 For the other arguments, they are the same as for the <ref resolved='predef::Sql.Sql.query'>query()</ref> function.</p>
</text></doc>
<method name='big_query'><source-position first-line='488' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='q'><type><or><object resolved='predef::Sql.Sql.big_query'/><string/></or></type></argument><argument name='extraargs'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><or><int/><object resolved='predef::Sql.Sql.big_query'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_db' homogen-type='method'><doc><text><p>Create a new database.</p>
</text><group><param name='db'/><text><p>Name of database to create.</p>
</text></group></doc>
<method name='create_db'><source-position first-line='518' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='drop_db' homogen-type='method'><doc><text><p>Drop database</p>
</text><group><param name='db'/><text><p>Name of database to drop.</p>
</text></group></doc>
<method name='drop_db'><source-position first-line='527' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='shutdown' homogen-type='method'><doc><text><p>Shutdown a database server.</p>
</text></doc>
<method name='shutdown'><source-position first-line='533' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reload' homogen-type='method'><doc><text><p>Reload the tables.</p>
</text></doc>
<method name='reload'><source-position first-line='543' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>Return info about the current SQL-server.</p>
</text></doc>
<method name='server_info'><source-position first-line='553' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='host_info' homogen-type='method'><doc><text><p>Return info about the connection to the SQL-server.</p>
</text></doc>
<method name='host_info'><source-position first-line='562' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>List available databases on this SQL-server.</p>
</text><group><param name='wild'/><text><p>Optional wildcard to match against.</p>
</text></group></doc>
<method name='list_dbs'><source-position first-line='574' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>List tables available in the current database.</p>
</text><group><param name='wild'/><text><p>Optional wildcard to match against.</p>
</text></group></doc>
<method name='list_tables'><source-position first-line='603' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='wild'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_fields' homogen-type='method'><doc><text><p>List fields available in the specified table</p>
</text><group><param name='table'/><text><p>Table to list the fields of.</p>
</text></group><group><param name='wild'/><text><p>Optional wildcard to match against.</p>
</text></group></doc>
<method name='list_fields'><source-position first-line='635' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/Sql.pike'/>
<arguments><argument name='table'><type><string/></type></argument><argument name='wild'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='postgres'><doc><text><p>This is an interface to the Postgres (Postgres95, pgsql) database
 server. This module may or may not be availible on your Pike,
 depending whether the appropriate include and library files could
 be found at compile-time. Note that you <b>do not</b> need to have a
 Postgres server running on your host to use this module: you can
 connect to the database over a TCP/IP socket.</p>
</text><group><note/><text><p>Also note that <b>this module uses blocking I/O</b> I/O to connect
 to the server. Postgres is quite slow, and so you might want to
 consider this particular aspect. It is (at least should be)
 thread-safe, and so it can be used in a multithread environment.</p>
<p> The behavior of the Postgres C API also depends on certain
 environment variables defined in the environment of the Pike
 interpreter.</p>
<string><group><value>"PGHOST"</value><text><p>Sets the name of the default host to connect to. It defaults
 	to <expr>"localhost"</expr>.</p>
</text></group><group><value>"PGOPTIONS"</value><text><p>Sets some extra flags for the frontend-backend connection.
     <b>do not set</b> unless you're sure of what you're doing.</p>
</text></group><group><value>"PGPORT"</value><text><p>Sets the default port to connect to, otherwise it will use
     compile-time defaults (that is: the time you compiled the postgres
 	library, not the Pike driver).</p>
</text></group><group><value>"PGTTY"</value><text><p>Sets the file to be used for Postgres frontend debugging.
     Do not use, unless you're sure of what you're doing.</p>
</text></group><group><value>"PGDATABASE"</value><text><p>Sets the default database to connect to.</p>
</text></group><group><value>"PGREALM"</value><text><p>Sets the default realm for Kerberos authentication. I never used
   	this, so I can't help you.</p>
</text></group></string><p>Refer to the Postgres documentation for further details.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Postgres.postgres'>Postgres.postgres</ref>, <ref resolved='predef::Sql.postgres_result'>Sql.postgres_result</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='mo'><doc>
</doc>
<inherit name='mo'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/><classname resolved='predef::Postgres.postgres'>Postgres.postgres</classname></inherit>
</docgroup>
<docgroup homogen-name='select_db' homogen-type='method'><doc><text><p>This function allows you to connect to a database. Due to
 restrictions of the Postgres frontend-backend protocol, you always
 have to be connected to a database, so in fact this function just
 allows you to connect to a different database on the same server.</p>
</text><group><note/><text><p>This function <b>can</b> raise exceptions if something goes wrong
 (backend process not running, not enough permissions..)</p>
</text></group><group><seealso/><text><p>create</p>
</text></group></doc>
<method name='select_db'>
<arguments><argument name='dbname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='error' homogen-type='method'><doc><text><p>This function returns the textual description of the last
 server-related error. Returns <expr>0</expr> if no error has occurred
 yet. It is not cleared upon reading (can be invoked multiple
 times, will return the same result until a new error occurs).</p>
</text><group><seealso/><text><p>big_query</p>
</text></group></doc>
<method name='error'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='host_info' homogen-type='method'><doc><text><p>This function returns a string describing what host are we talking to,
 and how (TCP/IP or UNIX sockets).</p>
</text></doc>
<method name='host_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reset' homogen-type='method'><doc><text><p>This function resets the connection to the backend. Can be used for
 a variety of reasons, for example to detect the status of a connection.</p>
</text><group><note/><text><p>This function is Postgres-specific, and thus it is not availible
 through the generic SQL-interface.</p>
</text></group></doc>
<method name='reset'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='version'><doc><text><p>Should you need to report a bug to the author, please submit along with
 the report the driver version number, as returned by this call.</p>
</text></doc>
<variable name='version'><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>With no arguments, this function initializes (reinitializes if a
 connection had been previously set up) a connection to the
 Postgres backend. Since Postgres requires a database to be
 selected, it will try to connect to the default database. The
 connection may fail however for a variety of reasons, in this case
 the most likely of all is because you don't have enough authority
 to connect to that database. So use of this particular syntax is
 discouraged.</p>
<p> The host argument can have the syntax <expr>"hostname"</expr> or
 <expr>"hostname:portname"</expr>. This allows to specify the TCP/IP
 port to connect to. If it is <expr>0</expr> or <expr>""</expr>, it will try
 to connect to localhost, default port.</p>
<p> The database argument specifies the database to connect to. If
 <expr>0</expr> or <expr>""</expr>, it will try to connect to the specified
 database.</p>
<p> The username and password arguments are silently ignored, since
 the Postgres C API doesn't allow to connect to the server as any
 user different than the user running the interface.</p>
</text><group><note/><text><p>You need to have a database selected before using the sql-object,
 otherwise you'll get exceptions when you try to query it. Also
 notice that this function <b>can</b> raise exceptions if the db
 server doesn't respond, if the database doesn't exist or is not
 accessible by you.</p>
<p> You don't need bothering about syncronizing the connection to the database:
 it is automatically closed (and the database is sync-ed) when the
 object is destroyed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Postgres.postgres'>Postgres.postgres</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.postgres.select_db'>postgres-&gt;select_db</ref></p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><or><void/><string/></or></type></argument><argument name='user'><type><or><void/><string/></or></type></argument><argument name='password'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_notify_callback' homogen-type='method'><doc><text><p>With Postgres you can associate events and notifications to tables.
 This function allows you to detect and handle such events.</p>
<p> With no arguments, resets and removes any callback you might have
 put previously, and any polling cycle.</p>
<p> With one argument, sets the notification callback (there can be only
 one for each sqlobject). </p>
<p> With two arguments, sets a notification callback and sets a polling
 cycle.</p>
<p> The polling cycle is necessary because of the way notifications are
 delivered, that is piggyback with a query result. This means that
 if you don't do any query, you'll receive no notification. The polling
 cycle starts a call_out cycle which will do an empty query when
 the specified interval expires, so that pending notifications 
 may be delivered.</p>
<p> The callback function must return no value, and takes a string argument,
 which will be the name of the table on which the notification event
 has occured. In future versions, support for user-specified arguments
 will be added.</p>
</text><group><note/><text><p>The polling cycle can be run only if your process is in "event-driven mode"
 (that is, if 'main' has returned a negative number).</p>
<p> This function is Postgres-specific, and thus it is not availible
 through the generic SQL-interface.</p>
</text></group><group><fixme/><text><p>An integer can be passed as first argument, but it's effect is
 not documented.</p>
</text></group></doc>
<method name='set_notify_callback'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='set_notify_callback'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_notify_callback'>
<arguments><argument name='f'><type><function/></type></argument><argument name='poll_delay'><type><or><int/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_db' homogen-type='method'><doc><text><p>This function creates a new database with the given name (assuming we
 have enough permissions to do this).</p>
</text><group><seealso/><text><p>drop_db</p>
</text></group></doc>
<method name='create_db'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='drop_db' homogen-type='method'><doc><text><p>This function destroys a database and all the data it contains (assuming
 we have enough permissions to do so).</p>
</text><group><seealso/><text><p>create_db</p>
</text></group></doc>
<method name='drop_db'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='db'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>This function returns a string describing the server we are
 talking to. It has the form <expr>"servername/serverversion"</expr>
 (like the HTTP protocol description) and is most useful in
 conjunction with the generic SQL-server module.</p>
</text></doc>
<method name='server_info'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>Lists all the databases available on the server.
 If glob is specified, lists only those databases matching it.</p>
</text></doc>
<method name='list_dbs'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='glob'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>Returns an array containing the names of all the tables in the currently
 selected database.
 If a glob is specified, it will return only those tables
 whose name matches it.</p>
</text></doc>
<method name='list_tables'><source-position first-line='276' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='glob'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_fields' homogen-type='method'><doc><text><p>Returns a mapping, indexed on the column name, of mappings describing
 the attributes of a table of the current database.
 If a glob is specified, will return descriptions only of the columns
 matching it.</p>
<p> The currently defined fields are:</p>
<mapping><group><member><type><int/></type><index>"has_rules"</index></member></group><group><member><type><int/></type><index>"is_shared"</index></member></group><group><member><type><string/></type><index>"owner"</index></member><text><p>The textual representation of a Postgres uid.</p>
</text></group><group><member><type><string/></type><index>"length"</index></member></group><group><member><type><string/></type><index>"text"</index></member><text><p>A textual description of the internal (to the server) type-name</p>
</text></group><group><member><type><mixed/></type><index>"default"</index></member></group><group><member><type><string/></type><index>"expires"</index></member><text><p>The "relexpires" attribute for the table. Obsolescent; modern
     versions of Postgres don't seem to use this feature, so don't
     count on this field to contain any useful value.</p>
</text></group></mapping>
</text></doc>
<method name='list_fields'><source-position first-line='322' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='table'><type><string/></type></argument><argument name='wild'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='big_query' homogen-type='method'><doc><text><p>This is the only provided interface which allows you to query the
 database. If you wish to use the simpler "query" function, you need to
 use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> generic SQL-object.</p>
<p> It returns a postgres_result object (which conforms to the
 <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref> standard interface for accessing data). I
 recommend using <ref>query()</ref> for simpler queries (because it is
 easier to handle, but stores all the result in memory), and
 <ref resolved='predef::Sql.postgres.big_query'>big_query()</ref> for queries you expect to return huge amounts of
 data (it's harder to handle, but fectches results on demand).</p>
</text><group><note/><text><p>This function <b>can</b> raise exceptions.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref></p>
</text></group></doc>
<method name='big_query'><source-position first-line='377' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/postgres.pike'/>
<arguments><argument name='q'><type><or><object resolved='predef::Sql.postgres.big_query'/><string/></or></type></argument><argument name='bindings'><type><or><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument></arguments>
<returntype><or><int/><object resolved='predef::Sql.postgres.big_query'/></or></returntype>
</method>
</docgroup>
</class>

<class name='mysqls'><doc><text><p>Implements SQL-urls for
   <tt>mysqls://[user[:password]@][hostname][:port][/database]</tt></p>
<p> Sets the connection to SSL-mode, and sets the default configuration
 file to <expr>"/etc/my.cnf"</expr>.</p>
</text><group><fixme/><text><p>Ought to load a suitable default configuration file for Win32 too.</p>
</text></group><group><note/><text><p>This connection method only exists if the Mysql-module has been
   compiled with SSL-support.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='mysql'><doc>
</doc>
<inherit name='mysql'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysqls.pike'/><classname resolved='predef::Sql.mysql'>Sql.mysql</classname></inherit>
</docgroup>
</class>

<class name='mysql'><doc><text><p>Implements the glue needed to access the Mysql-module from the generic
 SQL module.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='mysql'><doc>
</doc>
<inherit name='mysql'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/><classname resolved='predef::Mysql.mysql'>Mysql.mysql</classname></inherit>
</docgroup>
<docgroup homogen-name='set_unicode_encode_mode' homogen-type='method'><doc><text><p>Enables or disables unicode encode mode.</p>
<p> In this mode, if the server supports UTF-8 and the connection
 charset is <expr>latin1</expr> (the default) or <expr>unicode</expr> then
 <ref>big_query</ref> handles wide unicode queries. Enabled by default.</p>
<p> Unicode encode mode works as follows: Eight bit strings are sent
 as <expr>latin1</expr> and wide strings are sent using <expr>utf8</expr>.
 <ref>big_query</ref> sends <expr>SET character_set_client</expr> statements as
 necessary to update the charset on the server side. If the server
 doesn't support that then it fails, but the wide string query
 would fail anyway.</p>
<p> To make this transparent, string literals with introducers (e.g.
 <expr>_binary 'foo'</expr>) are excluded from the UTF-8 encoding. This
 means that <ref>big_query</ref> needs to do some superficial parsing of
 the query when it is a wide string.</p>
</text><group><returns/><text><int><group><value>1</value><text><p>Unicode encode mode is enabled.</p>
</text></group><group><value>0</value><text><p>Unicode encode mode couldn't be enabled because an
       incompatible connection charset is set. You need to do
       <expr><ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref>("latin1")</expr> or
       <expr><ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref>("unicode")</expr> to enable it.</p>
</text></group></int>
</text></group><group><note/><text><p>Note that this mode doesn't affect the MySQL system variable
   <expr>character_set_connection</expr>, i.e. it will still be set to
   <expr>latin1</expr> by default which means server functions like
   <expr>UPPER()</expr> won't handle non-<expr>latin1</expr> characters
   correctly in all cases.</p>
<p>   To fix that, do <expr><ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref>("unicode")</expr>. That will
   allow unicode encode mode to work while <expr>utf8</expr> is fully
   enabled at the server side.</p>
<p>   Tip: If you enable <expr>utf8</expr> on the server side, you need to
   send raw binary strings as <expr>_binary'...'</expr>. Otherwise they
   will get UTF-8 encoded by the server.</p>
</text></group><group><note/><text><p>When unicode encode mode is enabled and the connection charset
   is <expr>latin1</expr>, the charset accepted by <ref>big_query</ref> is not
   quite Unicode since <expr>latin1</expr> is based on <expr>cp1252</expr>.
   The differences are in the range <expr>0x80..0x9f</expr> where
   Unicode have control chars.</p>
<p>   This small discrepancy is not present when the connection
   charset is <expr>unicode</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref>, <ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref></p>
</text></group></doc>
<method name='set_unicode_encode_mode'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='enable'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_unicode_encode_mode' homogen-type='method'><doc><text><p>Returns nonzero if unicode encode mode is enabled, zero otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref></p>
</text></group></doc>
<method name='get_unicode_encode_mode'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_unicode_decode_mode' homogen-type='method'><doc><text><p>Enable or disable unicode decode mode.</p>
<p> In this mode, if the server supports UTF-8 then non-binary text
 strings in results are automatically decoded to (possibly wide)
 unicode strings. Not enabled by default.</p>
<p> The statement "<expr>SET character_set_results = utf8</expr>" is sent
 to the server to enable the mode. When the mode is disabled,
 "<expr>SET character_set_results = xxx</expr>" is sent, where
 <expr>xxx</expr> is the connection charset that <ref resolved='predef::Sql.mysql.get_charset'>get_charset</ref> returns.</p>
</text><group><param name='enable'/><text><p>Nonzero enables this feature, zero disables it.</p>
</text></group><group><throws/><text><p>Throws an exception if the server doesn't support this, i.e. if
   the statement above fails. The MySQL system variable
   <expr>character_set_results</expr> was added in MySQL 4.1.1.</p>
</text></group><group><note/><text><p>This function is only available if Pike has been compiled with
   MySQL client library 4.1.0 or later, or if the environment
   variable <tt>PIKE_BROKEN_MYSQL_UNICODE_MODE</tt> is set.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref></p>
</text></group></doc>
<method name='set_unicode_decode_mode'><source-position first-line='139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='enable'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_unicode_decode_mode' homogen-type='method'><doc><text><p>Returns nonzero if unicode decode mode is enabled, zero otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref></p>
</text></group></doc>
<method name='get_unicode_decode_mode'><source-position first-line='184' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_charset' homogen-type='method'><doc><text><p>Changes the connection charset. Works similar to sending the query
 <expr>SET NAMES <ref resolved='predef::Sql.mysql.set_charset.charset'>charset</ref></expr> but also records the charset on the
 client side so that various client functions work correctly.</p>
<p> <ref resolved='predef::Sql.mysql.set_charset.charset'>charset</ref> is a MySQL charset name or the special value
 <expr>"unicode"</expr> (see below). You can use <expr>SHOW CHARACTER
 SET</expr> to get a list of valid charsets.</p>
<p> Specifying <expr>"unicode"</expr> as charset is the same as
 <expr>"utf8"</expr> except that unicode encode and decode modes are
 enabled too. Briefly, this means that you can send queries as
 unencoded unicode strings and will get back non-binary text
 results as unencoded unicode strings. See
 <ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref> and <ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref> for
 further details.</p>
</text><group><throws/><text><p>Throws an exception if the server doesn't support this, i.e. if
   the statement <expr>SET NAMES</expr> fails. Support for it was added
   in MySQL 4.1.0.</p>
</text></group><group><note/><text><p>If <ref resolved='predef::Sql.mysql.set_charset.charset'>charset</ref> is <expr>"latin1"</expr> and unicode encode mode is
   enabled (the default) then <ref>big_query</ref> can send wide unicode
   queries transparently if the server supports UTF-8. See
   <ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref>.</p>
</text></group><group><note/><text><p>If unicode decode mode is already enabled (see
   <ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref>) then this function won't affect the
   result charset (i.e. the MySQL system variable
   <expr>character_set_results</expr>).</p>
<p>   Actually, a query <expr>SET character_set_results = utf8</expr> will
   be sent immediately after setting the charset as above if
   unicode decode mode is enabled and <ref resolved='predef::Sql.mysql.set_charset.charset'>charset</ref> isn't
   <expr>"utf8"</expr>.</p>
</text></group><group><note/><text><p>You should always use either this function or the
   <expr>"mysql_charset_name"</expr> option to <ref resolved='predef::Mysql.mysql.create'>create</ref> to set the
   connection charset, or more specifically the charset that the
   server expects queries to have (i.e. the MySQL system variable
   <expr>character_set_client</expr>). Otherwise <ref>big_query</ref> might not
   work correctly.</p>
<p>   Afterwards you may change the system variable
   <expr>character_set_connection</expr>, and also
   <expr>character_set_results</expr> if unicode decode mode isn't
   enabled.</p>
</text></group><group><note/><text><p>The MySQL <expr>latin1</expr> charset is close to Windows
   <expr>cp1252</expr>. The difference from ISO-8859-1 is a bunch of
   printable chars in the range <expr>0x80..0x9f</expr> (which contains
   control chars in ISO-8859-1). For instance, the euro currency
   sign is <expr>0x80</expr>.</p>
<p>   You can use the <expr>mysql-latin1</expr> encoding in the
   <ref resolved='predef::Locale.Charset'>Locale.Charset</ref> module to do conversions, or just use the
   special <expr>"unicode"</expr> charset instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.mysql.get_charset'>get_charset</ref>, <ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref>, <ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref></p>
</text></group></doc>
<method name='set_charset'><source-position first-line='193' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='charset'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_charset' homogen-type='method'><doc><text><p>Returns the MySQL name for the current connection charset.</p>
<p> Returns <expr>"unicode"</expr> if unicode encode mode is enabled and
 UTF-8 is used on the server side (i.e. in
 <expr>character_set_connection</expr>).</p>
</text><group><note/><text><p>In servers with full charset support (i.e. MySQL 4.1.0 or
   later), this corresponds to the MySQL system variable
   <expr>character_set_client</expr> (with one exception - see next
   note) and thus controls the charset in which queries are sent.
   The charset used for text strings in results might be something
   else (and typically is if unicode decode mode is enabled; see
   <ref resolved='predef::Sql.mysql.set_unicode_decode_mode'>set_unicode_decode_mode</ref>).</p>
</text></group><group><note/><text><p>If the returned charset is <expr>latin1</expr> or <expr>unicode</expr> and
   unicode encode mode is enabled (the default) then
   <expr>character_set_client</expr> in the server might be either
   <expr>latin1</expr> or <expr>utf8</expr>, depending on the last sent
   query. See <ref resolved='predef::Sql.mysql.set_unicode_encode_mode'>set_unicode_encode_mode</ref> for more info.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.mysql.set_charset'>set_charset</ref></p>
</text></group></doc>
<method name='get_charset'><source-position first-line='286' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='quote' homogen-type='method'><doc><text><p>Quote a string so that it can safely be put in a query.</p>
</text><group><param name='s'/><text><p>String to quote.</p>
</text></group></doc>
<method name='quote'><source-position first-line='334' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='latin1_to_utf8' homogen-type='method'><doc><text><p>Converts a string in MySQL <expr>latin1</expr> format to UTF-8.</p>
</text></doc>
<method name='latin1_to_utf8'><source-position first-line='341' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='utf8_encode_query' homogen-type='method'><doc><text><p>Encodes the appropriate sections of the query with <ref resolved='predef::Sql.mysql.utf8_encode_query.encode_fn'>encode_fn</ref>.
 Everything except strings prefixed by an introducer (i.e.
 <expr>_something</expr> or <expr>N</expr>) is encoded.</p>
</text></doc>
<method name='utf8_encode_query'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='q'><type><string/></type></argument><argument name='encode_fn'><type><function><argtype><string/></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_time' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted time
 spec for the database.</p>
</text><group><param name='time'/><text><p>Time to encode.</p>
</text></group><group><param name='date'/><text><p>If nonzero then time is taken as a "full" unix time spec
   (where the date part is ignored), otherwise it's converted as a
   seconds-since-midnight value.</p>
</text></group></doc>
<method name='encode_time'><source-position first-line='480' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='time'><type><int/></type></argument><argument name='date'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_date' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted
 date-only spec for the database.</p>
</text><group><param name='time'/><text><p>Time to encode.</p>
</text></group></doc>
<method name='encode_date'><source-position first-line='495' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='time'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_datetime' homogen-type='method'><doc><text><p>Converts a system time value to an appropriately formatted
 date and time spec for the database.</p>
</text><group><param name='time'/><text><p>Time to encode.</p>
</text></group></doc>
<method name='encode_datetime'><source-position first-line='507' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='time'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_time' homogen-type='method'><doc><text><p>Converts a database time spec to a system time value.</p>
</text><group><param name='timestr'/><text><p>Time spec to decode.</p>
</text></group><group><param name='date'/><text><p>Take the date part from this system time value. If zero, a
   seconds-since-midnight value is returned.</p>
</text></group></doc>
<method name='decode_time'><source-position first-line='524' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='timestr'><type><string/></type></argument><argument name='date'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_date' homogen-type='method'><doc><text><p>Converts a database date-only spec to a system time value.
 Assumes 4-digit years.</p>
</text><group><param name='datestr'/><text><p>Date spec to decode.</p>
</text></group></doc>
<method name='decode_date'><source-position first-line='541' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='datestr'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_datetime' homogen-type='method'><doc><text><p>Converts a database date and time spec to a system time value.
 Can decode strings missing the time part.</p>
</text><group><param name='datestr'/><text><p>Date and time spec to decode.</p>
</text></group></doc>
<method name='decode_datetime'><source-position first-line='557' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='timestr'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_keyword' homogen-type='method'><doc><text><p>Return 1 if the argument <ref resolved='predef::Sql.mysql.is_keyword.name'>name</ref> is a mysql keyword.</p>
</text></doc>
<method name='is_keyword'><source-position first-line='663' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Sql.pmod/mysql.pike'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class></module>

















<module name='Crypto'>

<module name='Blowfish'><doc><text><p>BLOWFISH is a block cipher designed by Bruce Schneier. It uses a
 block size of 64 bits (8 octets), and a variable key size, up to
 448 bits. It has some weak keys.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='BLOWFISH_Info'><doc>
</doc>
<inherit name='BLOWFISH_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Blowfish.pmod'/><classname resolved='predef::Nettle.BLOWFISH_Info'>Nettle.BLOWFISH_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Blowfish.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='IDEA'><doc><text><p>The IDEA(tm) block cipher is covered by patents held by ETH and a
 Swiss company called Ascom-Tech AG. The Swiss patent number is
 PCT/CH91/00117, the European patent number is EP 0 482 154 B1, and
 the U.S. patent number is US005214703. IDEA(tm) is a trademark of
 Ascom-Tech AG. There is no license fee required for noncommercial
 use.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='IDEA_Info'><doc>
</doc>
<inherit name='IDEA_Info'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/IDEA.pmod'/><classname resolved='predef::Nettle.IDEA_Info'>Nettle.IDEA_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/IDEA.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='AES'><doc><text><p>AES (American Encryption Standard) is a quite new block cipher,
 specified by NIST as a replacement for the older DES standard. The
 standard is the result of a competition between cipher designers.
 The winning design, also known as RIJNDAEL, was constructed by
 Joan Daemen and Vincent Rijnmen.</p>
<p> Like all the AES candidates, the winning design uses a block size
 of 128 bits, or 16 octets, and variable key-size, 128, 192 and 256
 bits (16, 24 and 32 octets) being the allowed key sizes. It does
 not have any weak keys.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='AES_Info'><doc>
</doc>
<inherit name='AES_Info'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/AES.pmod'/><classname resolved='predef::Nettle.AES_Info'>Nettle.AES_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/AES.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='MD2'><doc><text><p>MD2 is a message digest function constructed by Burton Kaliski,
 and is described in RFC 1319. It outputs message digests of 128
 bits, or 16 octets.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='MD2_Info'><doc>
</doc>
<inherit name='MD2_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD2.pmod'/><classname resolved='predef::Nettle.MD2_Info'>Nettle.MD2_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Hash'><doc>
</doc>
<inherit name='Hash'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD2.pmod'/><classname resolved='predef::Crypto.Hash'>.Hash</classname></inherit>
</docgroup>
</module>

<module name='Serpent'><doc><text><p>SERPENT is one of the AES finalists, designed by Ross Anderson,
 Eli Biham and Lars Knudsen. Thus, the interface and properties are
 similar to <ref resolved='predef::Crypto.AES'>AES</ref>'. One peculiarity is that it is quite pointless to
 use it with anything but the maximum key size, smaller keys are
 just padded to larger ones.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Serpent_Info'><doc>
</doc>
<inherit name='Serpent_Info'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Serpent.pmod'/><classname resolved='predef::Nettle.Serpent_Info'>Nettle.Serpent_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Serpent.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='Koremutake'><doc><text><p>Quote from Koremutake home page <url>http://shorl.com/koremutake</url>:</p>
<p> In an attempt to temporarily solve the fact that human beings seem
 to be inable to remember important things (such as their names, car
 keys and seemingly random numbers with fourteen digits in 'em), we
 invented Koremutake.</p>
<p> It is, in plain language, a way to express any large number as a
 sequence of syllables. The general idea is that word-sounding
 pieces of information are a lot easier to remember than a sequence
 of digits.</p>
</text></doc><docgroup homogen-name='encrypt' homogen-type='method'><doc><text><p>Encode an integer as a koremutake string.</p>
</text></doc>
<method name='encrypt'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Koremutake.pmod'/>
<arguments><argument name='m'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decrypt' homogen-type='method'><doc><text><p>Decode a koremutake string into an integer.</p>
</text></doc>
<method name='decrypt'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Koremutake.pmod'/>
<arguments><argument name='c'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</module>

<module name='MD5'><doc><text><p>MD5 is a message digest function constructed by Ronald Rivest, and
 is described in RFC 1321. It outputs message digests of 128 bits,
 or 16 octets.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='MD5_Info'><doc>
</doc>
<inherit name='MD5_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD5.pmod'/><classname resolved='predef::Nettle.MD5_Info'>Nettle.MD5_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Hash'><doc>
</doc>
<inherit name='Hash'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD5.pmod'/><classname resolved='predef::Crypto.Hash'>.Hash</classname></inherit>
</docgroup>
</module>

<module name='SHA256'><doc><text><p>SHA256 is another hash function specified by NIST, intended as a
 replacement for <ref>SHA</ref>, generating larger digests. It outputs hash
 values of 256 bits, or 32 octets.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='SHA256_Info'><doc>
</doc>
<inherit name='SHA256_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/SHA256.pmod'/><classname resolved='predef::Nettle.SHA256_Info'>Nettle.SHA256_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Hash'><doc>
</doc>
<inherit name='Hash'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/SHA256.pmod'/><classname resolved='predef::Crypto.Hash'>.Hash</classname></inherit>
</docgroup>
</module>

<module name='Random'><doc><text><p>This module contains stuff to that tries to give you the
 best possible random generation.</p>
</text></doc><docgroup homogen-name='random_string' homogen-type='method'><doc><text><p>Returns a string of length <ref resolved='predef::Crypto.Random.random_string.len'>len</ref> with random content. The
 content is generated by a Yarrow random generator that is
 constantly updated with output from /dev/random on UNIX and
 CryptGenRandom on NT. The Yarrow random generator is fed
 at least the amount of random data from its sources as it
 outputs, thus doing its best to give at least good pseudo-
 random data on operating systems with bad /dev/random.</p>
</text></doc>
<method name='random_string'><source-position first-line='178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Random.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='random' homogen-type='method'><doc><text><p>Returns a <ref resolved='predef::Gmp.mpz'>Gmp.mpz</ref> object with a random value between <expr>0</expr>
 and <ref resolved='predef::Crypto.Random.random.top'>top</ref>. Uses <ref resolved='predef::Crypto.Random.random_string'>random_string</ref>.</p>
</text></doc>
<method name='random'><source-position first-line='184' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Random.pmod'/>
<arguments><argument name='top'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='blocking_random_string' homogen-type='method'><doc><text><p>Works as <ref resolved='predef::Crypto.Random.random_string'>random_string</ref>, but may block in order to gather enough
 entropy to make a truely random output. Using this function is
 probably overkill for about all applications.</p>
</text></doc>
<method name='blocking_random_string'><source-position first-line='193' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Random.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_entropy' homogen-type='method'><doc><text><p>Inject additional entropy into the random generator.</p>
</text><group><param name='data'/><text><p>The random string.</p>
</text></group><group><param name='entropy'/><text><p>The number of bits in the random string that is
   truely random.</p>
</text></group></doc>
<method name='add_entropy'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Random.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='entropy'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module>

<module name='DES'><doc><text><p>DES is the old Data Encryption Standard, specified by NIST. It
 uses a block size of 64 bits (8 octets), and a key size of 56
 bits. However, the key bits are distributed over 8 octets, where
 the least significant bit of each octet is used for parity. A
 common way to use DES is to generate 8 random octets in some way,
 then set the least significant bit of each octet to get odd
 parity, and initialize DES with the resulting key.</p>
<p> The key size of DES is so small that keys can be found by brute
 force, using specialized hardware or lots of ordinary work
 stations in parallel. One shouldn't be using plain DES at all
 today, if one uses DES at all one should be using <ref resolved='predef::Crypto.DES3'>DES3</ref> or "triple
 DES".</p>
<p> DES also has some weak keys.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='DES_Info'><doc>
</doc>
<inherit name='DES_Info'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DES.pmod'/><classname resolved='predef::Nettle.DES_Info'>Nettle.DES_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DES.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='MD4'><doc><text><p>MD4 is a message digest function constructed by Ronald Rivest, and
 is described in RFC 1320. It outputs message digests of 128 bits,
 or 16 octets.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='MD4_Info'><doc>
</doc>
<inherit name='MD4_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD4.pmod'/><classname resolved='predef::Nettle.MD4_Info'>Nettle.MD4_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Hash'><doc>
</doc>
<inherit name='Hash'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/MD4.pmod'/><classname resolved='predef::Crypto.Hash'>.Hash</classname></inherit>
</docgroup>
</module>

<module name='SHA1'><doc><text><p>SHA1 is a hash function specified by NIST (The U.S. National
 Institute for Standards and Technology). It outputs hash values of
 160 bits, or 20 octets.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='SHA1_Info'><doc>
</doc>
<inherit name='SHA1_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/SHA1.pmod'/><classname resolved='predef::Nettle.SHA1_Info'>Nettle.SHA1_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Hash'><doc>
</doc>
<inherit name='Hash'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/SHA1.pmod'/><classname resolved='predef::Crypto.Hash'>.Hash</classname></inherit>
</docgroup>
</module>

<module name='CAST'><doc><text><p>CAST-128 is a block cipher, specified in RFC 2144. It uses a 64
 bit (8 octets) block size, and a variable key size of up to 128
 bits.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='CAST128_Info'><doc>
</doc>
<inherit name='CAST128_Info'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/CAST.pmod'/><classname resolved='predef::Nettle.CAST128_Info'>Nettle.CAST128_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/CAST.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='Twofish'><doc><text><p>Another <ref resolved='predef::Crypto.AES'>AES</ref> finalist, this one designed by Bruce Schneier and
 others.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Twofish_Info'><doc>
</doc>
<inherit name='Twofish_Info'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Twofish.pmod'/><classname resolved='predef::Nettle.Twofish_Info'>Nettle.Twofish_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Twofish.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<module name='Arcfour'><doc><text><p>Arcfour is a stream cipher, also known under the trade marked name
 RC4, and it is one of the fastest ciphers around. A problem is
 that the key setup of Arcfour is quite weak, you should never use
 keys with structure, keys that are ordinary passwords, or
 sequences of keys like <expr>"secret:1"</expr>, <expr>"secret:2"</expr>,
 ..... If you have keys that don't look like random bit strings,
 and you want to use Arcfour, always hash the key before feeding it
 to Arcfour.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='ARCFOUR_Info'><doc>
</doc>
<inherit name='ARCFOUR_Info'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Arcfour.pmod'/><classname resolved='predef::Nettle.ARCFOUR_Info'>Nettle.ARCFOUR_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Arcfour.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<class name='Pipe'><doc><text><p>A wrapper class that connects several cipher algorithms into one
 algorithm. E.g. triple DES can be emulated with
 <expr>Crypto.Pipe(Crypto.DES, Crypto.DES, Crypto.DES)</expr>.</p>
</text></doc></class>

<class name='HMAC'><doc><text><p>HMAC, defined by RFC-2104</p>
</text></doc>

<class name='`()'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/><doc><text><p>Calling the HMAC object with a password returns a new object that
 can perform the actual HMAC hashing. E.g. doing a HMAC hash with
 MD5 and the password <expr>"bar"</expr> of the string <expr>"foo"</expr>
 would require the code <expr>Crypto.HMAC(Crypto.MD5)("bar")("foo")</expr>.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='passwd'/><text><p>The secret password (K).</p>
</text></group></doc>
<method name='create'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='passwd'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Hashes the <ref resolved='predef::Crypto.HMAC.`().`().text'>text</ref> according to the HMAC algorithm and returns
 the hash value.</p>
</text></doc>
<method name='`()'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='digest_info' homogen-type='method'><doc><text><p>Hashes the <ref resolved='predef::Crypto.HMAC.`().digest_info.text'>text</ref> according to the HMAC algorithm and returns
 the hash value as a PKCS-1 digestinfo block.</p>
</text></doc>
<method name='digest_info'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='h'/><text><p>The hash object on which the HMAC object should base its
   operations. Typical input is <ref resolved='predef::Crypto.MD5'>Crypto.MD5</ref>.</p>
</text></group><group><param name='b'/><text><p>The block size of one compression block, in octets. Defaults to
   64.</p>
</text></group></doc>
<method name='create'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='h'><type><object resolved='predef::Crypto.Hash'>.Hash</object></type></argument><argument name='b'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_hash' homogen-type='method'><doc><text><p>Calls the hash function given to <ref resolved='predef::Crypto.HMAC.create'>create</ref> and returns the hash
 value of <ref resolved='predef::Crypto.HMAC.raw_hash.s'>s</ref>.</p>
</text></doc>
<method name='raw_hash'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pkcs_digest' homogen-type='method'><doc><text><p>Makes a PKCS-1 digestinfo block with the message <ref resolved='predef::Crypto.HMAC.pkcs_digest.s'>s</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.PKCS.Signature.build_digestinfo'>Standards.PKCS.Signature.build_digestinfo</ref></p>
</text></group></doc>
<method name='pkcs_digest'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/HMAC.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Substitution'><doc><text><p>Implements a simple substitution crypto, ie. one of the first crypto
 systems ever invented and thus one of the least secure ones available.</p>
</text></doc><docgroup homogen-name='set_key' homogen-type='method'><doc><text><p>Sets the encryption and decryption key. The decryption key is
 derived from the encryption <ref resolved='predef::Crypto.Substitution.set_key.key'>key</ref> by reversing the mapping. If
 one index maps to an array of strings, one element from the array
 will be chosen at random in such substitution.</p>
</text><group><throws/><text><p>An error is thrown if the encryption key can not be made reversible.</p>
</text></group></doc>
<method name='set_key'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='key'><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_null_chars' homogen-type='method'><doc><text><p>Set null characters (fillers). Characters from <ref resolved='predef::Crypto.Substitution.set_null_chars.chars'>chars</ref> will be
 inserted into the output stream with a probability <ref resolved='predef::Crypto.Substitution.set_null_chars.p'>p</ref>.</p>
</text><group><param name='p'/><text><p>A float between 0.0 and 1.0 or an integer between 0 and 100.</p>
</text></group><group><param name='chars'/><text><p>An array of one character strings.</p>
</text></group></doc>
<method name='set_null_chars'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='p'><type><or><int/><float/></or></type></argument><argument name='chars'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_rot_key' homogen-type='method'><doc><text><p>Sets the key to a ROT substitution system. <ref resolved='predef::Crypto.Substitution.set_rot_key.steps'>steps</ref> defaults
 to 13 and <ref resolved='predef::Crypto.Substitution.set_rot_key.alphabet'>alphabet</ref> defaults to A-Z, i.e. this function
 defaults to set the substitution crypto to be ROT13. If no
 alphabet is given the key will be case insensitive, e.g. the
 key will really be two ROT13 alphabets, one a-z and one A-Z,
 used simultaneously.</p>
</text></doc>
<method name='set_rot_key'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='steps'><type><or><void/><int/></or></type></argument><argument name='alphabet'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_ACA_K1_key' homogen-type='method'><doc><text><p>Sets the key according to ACA K1 key generation. The plaintext
 alphabet is prepended with a keyword <ref resolved='predef::Crypto.Substitution.set_ACA_K1_key.key'>key</ref> that shifts the alphabet
 positions compared to the cryptogram alphabet. The plaintext
 alphabet is then reduced with the characters in the keyword. It is
 also optionally rotated <ref resolved='predef::Crypto.Substitution.set_ACA_K1_key.offset'>offset</ref> number of steps.</p>
</text></doc>
<method name='set_ACA_K1_key'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='offset'><type><or><void/><int/></or></type></argument><argument name='alphabet'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_ACA_K2_key' homogen-type='method'><doc><text><p>Sets the key according to ACA K2 key generation. The cryptogram
 alphabet is prepended with a keyword <ref resolved='predef::Crypto.Substitution.set_ACA_K2_key.key'>key</ref> that shifts the alphabet
 positions compared to the plaintext alphabet. The cryptogram
 alphabet is then reduced with the characters in the keyword. It is
 als optionally reotated <ref resolved='predef::Crypto.Substitution.set_ACA_K2_key.offset'>offset</ref> number of steps.</p>
</text></doc>
<method name='set_ACA_K2_key'><source-position first-line='142' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='offset'><type><or><void/><int/></or></type></argument><argument name='alphabet'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_ACA_K3_key' homogen-type='method'><doc><text><p>Sets the key according to ACA K3 key generation. Both the plaintext
 and the cryptogram alphabets are prepended with a keyword <ref resolved='predef::Crypto.Substitution.set_ACA_K3_key.key'>key</ref>,
 which characters are removed from the rest of the alphabet. The
 plaintext alphabet is then rotated <ref resolved='predef::Crypto.Substitution.set_ACA_K3_key.offset'>offset</ref> number of steps.</p>
</text></doc>
<method name='set_ACA_K3_key'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='offset'><type><int/></type></argument><argument name='alphabet'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_ACA_K4_key' homogen-type='method'><doc><text><p>Sets the key according to ACA K4 key generation. Both the plaintext
 and the cryptogram alphabets are prepended with the keywords <ref resolved='predef::Crypto.Substitution.set_ACA_K4_key.key1'>key1</ref>
 and <ref resolved='predef::Crypto.Substitution.set_ACA_K4_key.key2'>key2</ref>. The plaintext alphabet is then rotated <ref resolved='predef::Crypto.Substitution.set_ACA_K4_key.offset'>offset</ref> number
 of steps.</p>
</text></doc>
<method name='set_ACA_K4_key'><source-position first-line='168' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='key1'><type><string/></type></argument><argument name='key2'><type><string/></type></argument><argument name='offset'><type><or><void/><int/></or></type></argument><argument name='alphabet'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Substitution'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='encrypt' homogen-type='method'><doc><text><p>Encrypts the message <ref resolved='predef::Crypto.Substitution.encrypt.m'>m</ref>.</p>
</text></doc>
<method name='encrypt'><source-position first-line='179' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='m'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decrypt' homogen-type='method'><doc><text><p>Decrypts the cryptogram <ref resolved='predef::Crypto.Substitution.decrypt.c'>c</ref>.</p>
</text></doc>
<method name='decrypt'><source-position first-line='199' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='c'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='filter' homogen-type='method'><doc><text><p>Removes characters not in the encryption key or in
 the <ref resolved='predef::Crypto.Substitution.filter.save'>save</ref> multiset from the message <ref resolved='predef::Crypto.Substitution.filter.m'>m</ref>.</p>
</text></doc>
<method name='filter'><source-position first-line='206' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/Substitution.pike'/>
<arguments><argument name='m'><type><string/></type></argument><argument name='save'><type><or><void/><multiset><indextype><int/></indextype></multiset></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='RSA'><docgroup homogen-name='get_n' homogen-type='method'><doc><text><p>Returns the RSA modulo.</p>
</text></doc>
<method name='get_n'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_e' homogen-type='method'><doc><text><p>Returns the RSA public exponent.</p>
</text></doc>
<method name='get_e'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_d' homogen-type='method'><doc><text><p>Returns the RSA private exponent (if known).</p>
</text></doc>
<method name='get_d'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_p' homogen-type='method'><doc><text><p>Returns the first RSA prime (if known).</p>
</text></doc>
<method name='get_p'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_q' homogen-type='method'><doc><text><p>Returns the second RSA prime (if known).</p>
</text></doc>
<method name='get_q'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_get_n' homogen-type='method'><doc><text><p>Returns the RSA modulo as a binary string.</p>
</text></doc>
<method name='cooked_get_n'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_get_e' homogen-type='method'><doc><text><p>Returns the RSA public exponent as a binary string.</p>
</text></doc>
<method name='cooked_get_e'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_get_d' homogen-type='method'><doc><text><p>Returns the RSA private exponent (if known) as a binary string.</p>
</text></doc>
<method name='cooked_get_d'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_get_p' homogen-type='method'><doc><text><p>Returns the first RSA prime (if known) as a binary string.</p>
</text></doc>
<method name='cooked_get_p'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_get_q' homogen-type='method'><doc><text><p>Returns the second RSA prime (if known) as a binary string.</p>
</text></doc>
<method name='cooked_get_q'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_public_key' homogen-type='method'><doc><text><p>Sets the public key.</p>
</text></doc>
<method name='set_public_key'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='modulo'><type><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></type></argument><argument name='pub'><type><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_private_key' homogen-type='method'><doc><text><p>Sets the private key.</p>
</text><group><param name='extra'/><text><array><group><elem><type><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></type><index>0</index></elem><text><p>The first prime.</p>
</text></group><group><elem><type><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></type><index>1</index></elem><text><p>The second prime.</p>
</text></group></array>
</text></group></doc>
<method name='set_private_key'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='priv'><type><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></type></argument><argument name='extra'><type><or><array><valuetype><or><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><int/></or></valuetype></array><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_blocksize' homogen-type='method'><doc><text><p>Returns the crypto block size, or zero if not yet set.</p>
</text></doc>
<method name='query_blocksize'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_pad' homogen-type='method'><doc><text><p>Pads the <ref resolved='predef::Crypto.RSA.rsa_pad.message'>message</ref> to the current block size with method <ref resolved='predef::Crypto.RSA.rsa_pad.type'>type</ref>
 and returns the result as an integer.</p>
</text><group><param name='type'/><text><int><group><value>1</value><text><p>The message is padded with <expr>0xff</expr> bytes.</p>
</text></group><group><value>2</value><text><p>The message is padded with random data, using the <ref resolved='predef::Crypto.RSA.rsa_pad.random'>random</ref>
       function if provided. Otherwise
       <ref resolved='predef::Crypto.Random.random_string'>Crypto.Random.random_string</ref> will be used.</p>
</text></group></int>
</text></group></doc>
<method name='rsa_pad'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='type'><type><int><min>1</min><max>2</max></int></type></argument><argument name='random'><type><or><function><argtype><int/></argtype><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_unpad' homogen-type='method'><doc><text><p>Reverse the effect of <ref resolved='predef::Crypto.RSA.rsa_pad'>rsa_pad</ref>.</p>
</text></doc>
<method name='rsa_unpad'><source-position first-line='158' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='block'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='type'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_sign' homogen-type='method'><doc><text><p>Pads the <ref resolved='predef::Crypto.RSA.raw_sign.digest'>digest</ref> with <ref resolved='predef::Crypto.RSA.rsa_pad'>rsa_pad</ref> type 1 and signs it.</p>
</text></doc>
<method name='raw_sign'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='digest'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cooked_sign' homogen-type='method'><doc><text><p>Signs <ref resolved='predef::Crypto.RSA.cooked_sign.digest'>digest</ref> as <ref resolved='predef::Crypto.RSA.raw_sign'>raw_sign</ref> and returns the signature as a byte
 string.</p>
</text></doc>
<method name='cooked_sign'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='digest'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_verify' homogen-type='method'><doc><text><p>Verifies the <ref resolved='predef::Crypto.RSA.raw_verify.digest'>digest</ref> against the signature <ref resolved='predef::Crypto.RSA.raw_verify.s'>s</ref>, assuming pad
 type 1.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.RSA.rsa_pad'>rsa_pad</ref>, <ref resolved='predef::Crypto.RSA.raw_sign'>raw_sign</ref></p>
</text></group></doc>
<method name='raw_verify'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='digest'><type><string/></type></argument><argument name='s'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='encrypt' homogen-type='method'><doc><text><p>Pads the message <ref resolved='predef::Crypto.RSA.encrypt.s'>s</ref> with <ref resolved='predef::Crypto.RSA.rsa_pad'>rsa_pad</ref> type 2, signs it and returns
 the signature as a byte string.</p>
</text><group><param name='r'/><text><p>Optional random function to be passed down to <ref resolved='predef::Crypto.RSA.rsa_pad'>rsa_pad</ref>.</p>
</text></group></doc>
<method name='encrypt'><source-position first-line='194' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='r'><type><or><function><argtype><int/></argtype><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decrypt' homogen-type='method'><doc><text><p>Decrypt a message encrypted with <ref resolved='predef::Crypto.RSA.encrypt'>encrypt</ref>.</p>
</text></doc>
<method name='decrypt'><source-position first-line='200' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_size' homogen-type='method'><doc><text><p>Returns the size of the key in terms of number of bits.</p>
</text></doc>
<method name='rsa_size'><source-position first-line='206' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='public_key_equal' homogen-type='method'><doc><text><p>Compares the public key of this RSA object with another RSA
 object.</p>
</text></doc>
<method name='public_key_equal'><source-position first-line='210' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>this_program</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sign' homogen-type='method'><doc><text><p>Signs the <ref resolved='predef::Crypto.RSA.sign.message'>message</ref> with a PKCS-1 signature using hash algorithm
 <ref resolved='predef::Crypto.RSA.sign.h'>h</ref>.</p>
</text></doc>
<method name='sign'><source-position first-line='219' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='h'><type><object resolved='predef::Crypto.Hash'>.Hash</object></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify' homogen-type='method'><doc><text><p>Verify PKCS-1 signature <ref resolved='predef::Crypto.RSA.verify.sign'>sign</ref> of message <ref resolved='predef::Crypto.RSA.verify.msg'>msg</ref> using hash
 algorithm <ref resolved='predef::Crypto.RSA.verify.h'>h</ref>.</p>
</text></doc>
<method name='verify'><source-position first-line='226' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument><argument name='h'><type><object resolved='predef::Crypto.Hash'>.Hash</object></type></argument><argument name='sign'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sha_sign' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='sha_sign'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='r'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sha_verify' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='sha_verify'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='signature'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='md5_sign' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='md5_sign'><source-position first-line='252' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='r'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='md5_verify' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='md5_verify'><source-position first-line='261' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='message'><type><string/></type></argument><argument name='signature'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_prime' homogen-type='method'><doc><text><p>Generate a prime with <ref resolved='predef::Crypto.RSA.get_prime.bits'>bits</ref> number of bits using random function
 <ref resolved='predef::Crypto.RSA.get_prime.r'>r</ref>.</p>
</text></doc>
<method name='get_prime'><source-position first-line='270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='bits'><type><int/></type></argument><argument name='r'><type><function><argtype><int/></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='generate_key' homogen-type='method'><doc><text><p>Generate a valid RSA key pair with the size <ref resolved='predef::Crypto.RSA.generate_key.bits'>bits</ref>. A random
 function may be provided as arguemnt <ref resolved='predef::Crypto.RSA.generate_key.r'>r</ref>, otherwise
 <ref resolved='predef::Crypto.Random.random_string'>Crypto.Random.random_string</ref> will be used. Keys must be at least
 128 bits.</p>
</text></doc>
<method name='generate_key'><source-position first-line='291' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='bits'><type><int><min>128</min><max/></int></type></argument><argument name='r'><type><or><function><argtype><int/></argtype><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_encrypt_key' homogen-type='method'><doc><text><p>Sets the public key to <ref resolved='predef::Crypto.RSA.set_encrypt_key.key'>key</ref> and the mode to encryption.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.RSA.set_decrypt_key'>set_decrypt_key</ref>, <ref resolved='predef::Crypto.RSA.crypt'>crypt</ref></p>
</text></group></doc>
<method name='set_encrypt_key'><source-position first-line='339' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='key'><type><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_decrypt_key' homogen-type='method'><doc><text><p>Sets the public key to <ref resolved='predef::Crypto.RSA.set_decrypt_key.key'>key</ref>and the mod to decryption.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.RSA.set_encrypt_key'>set_encrypt_key</ref>, <ref resolved='predef::Crypto.RSA.crypt'>crypt</ref></p>
</text></group></doc>
<method name='set_decrypt_key'><source-position first-line='349' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='key'><type><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='crypt' homogen-type='method'><doc><text><p>Encrypt or decrypt depending on set mode.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.RSA.set_encrypt_key'>set_encrypt_key</ref>, <ref resolved='predef::Crypto.RSA.set_decrypt_key'>set_decrypt_key</ref></p>
</text></group></doc>
<method name='crypt'><source-position first-line='360' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns the string <expr>"RSA"</expr>.</p>
</text></doc>
<method name='name'><source-position first-line='366' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/RSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<module name='PGP'><doc><text><p>PGP stuff. See RFC 2440.</p>
</text></doc><docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes PGP data.</p>
</text></doc>
<method name='decode'><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/PGP.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><or><string/><mapping/></or></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_signature' homogen-type='method'><doc><text><p>Verify <ref resolved='predef::Crypto.PGP.verify_signature.text'>text</ref> against signature <ref resolved='predef::Crypto.PGP.verify_signature.sig'>sig</ref> with the public key
 <ref resolved='predef::Crypto.PGP.verify_signature.pubkey'>pubkey</ref>.</p>
</text></doc>
<method name='verify_signature'><source-position first-line='246' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/PGP.pmod'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='sig'><type><string/></type></argument><argument name='pubkey'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_radix64' homogen-type='method'><doc><text><p>Encode PGP data with ASCII armour.</p>
</text></doc>
<method name='encode_radix64'><source-position first-line='302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/PGP.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='type'><type><string/></type></argument><argument name='extra'><type><or><void/><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_radix64' homogen-type='method'><doc><text><p>Decode ASCII armour.</p>
</text></doc>
<method name='decode_radix64'><source-position first-line='319' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/PGP.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
</module><doc><text><p>Various cryptographic classes and functions.</p>
<p> <b>Hash functions</b>
 These are based on the <ref resolved='predef::Crypto.Hash'>Hash</ref> API; <ref resolved='predef::Crypto.MD2'>MD2</ref>, <ref resolved='predef::Crypto.MD4'>MD4</ref>, <ref resolved='predef::Crypto.MD5'>MD5</ref>,
 <ref resolved='predef::Crypto.SHA1'>SHA1</ref>, <ref resolved='predef::Crypto.SHA256'>SHA256</ref>.</p>
<p> <b>Stream cipher functions</b>
 These are based on the <ref resolved='predef::Crypto.Cipher'>Cipher</ref> API; <ref resolved='predef::Crypto.AES'>AES</ref>, <ref resolved='predef::Crypto.Arcfour'>Arcfour</ref>,
 <ref resolved='predef::Crypto.Blowfish'>Blowfish</ref>, <ref resolved='predef::Crypto.CAST'>CAST</ref>, <ref resolved='predef::Crypto.DES'>DES</ref>, <ref resolved='predef::Crypto.DES3'>DES3</ref>, <ref resolved='predef::Crypto.IDEA'>IDEA</ref>, <ref resolved='predef::Crypto.Serpent'>Serpent</ref>,
 <ref resolved='predef::Crypto.Twofish'>Twofish</ref>. The <ref resolved='predef::Crypto.Substitution'>Substitution</ref> program is compatible with the
 CipherState. Also conforming to the API are the helper programs
 <ref resolved='predef::Crypto.Buffer'>Buffer</ref>, <ref resolved='predef::Crypto.CBC'>CBC</ref> and <ref resolved='predef::Crypto.Pipe'>Pipe</ref>.</p>
</text></doc>

<class name='Hash'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/><doc><text><p>Abstract class for hash algorithms. Contains some tools useful
 for all hashes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='HashInfo'><doc>
</doc>
<inherit name='HashInfo'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/><classname resolved='predef::Nettle.HashInfo'>Nettle.HashInfo</classname></inherit>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Calling `() will return a <ref resolved='predef::Nettle.HashState'>Nettle.HashState</ref> object.</p>
</text></doc>
<method name='`()'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments/>
<returntype><object>HashState</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hash' homogen-type='method'><doc><text><p>Works as a shortcut for <expr>obj-&gt;update(data)-&gt;digest()</expr>.</p>
</text><group><seealso/><text><p><ref>HashState()-&gt;update()</ref> and <ref>HashState()-&gt;digest()</ref>.</p>
</text></group></doc>
<method name='hash'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Cipher'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/><doc><text><p>Abstract class for crypto algorithms. Contains some tools useful
 for all ciphers.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='CipherInfo'><doc>
</doc>
<inherit name='CipherInfo'><source-position first-line='81' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/><classname resolved='predef::Nettle.CipherInfo'>Nettle.CipherInfo</classname></inherit>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Calling `() will return a <ref resolved='predef::Nettle.CipherState'>Nettle.CipherState</ref> object.</p>
</text></doc>
<method name='`()'><source-position first-line='84' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments/>
<returntype><object>CipherState</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='encrypt' homogen-type='method'><doc><text><p>Works as a shortcut for <expr>obj-&gt;set_encrypt_key(key)-&gt;crypt(data)</expr></p>
</text></doc>
<method name='encrypt'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decrypt' homogen-type='method'><doc><text><p>Works as a shortcut for <expr>obj-&gt;set_decrypt_key(key)-&gt;crypt(data)</expr></p>
</text></doc>
<method name='decrypt'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='key'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='make_crypt_md5' homogen-type='method'><doc><text><p>Hashes a <ref resolved='predef::Crypto.make_crypt_md5.password'>password</ref> together with a <ref resolved='predef::Crypto.make_crypt_md5.salt'>salt</ref> with the
 crypt_md5 algorithm and returns the result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.verify_crypt_md5'>verify_crypt_md5</ref></p>
</text></group></doc>
<method name='make_crypt_md5'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='password'><type><string/></type></argument><argument name='salt'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_crypt_md5' homogen-type='method'><doc><text><p>Verifies the <ref resolved='predef::Crypto.verify_crypt_md5.password'>password</ref> against the crypt_md5 hash.</p>
</text><group><throws/><text><p>May throw an exception if the hash value is bad.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Crypto.make_crypt_md5'>make_crypt_md5</ref></p>
</text></group></doc>
<method name='verify_crypt_md5'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='password'><type><string/></type></argument><argument name='hash'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>


<module name='DES3'><doc><text><p>The inadequate key size of <ref resolved='predef::Crypto.DES'>DES</ref> has already been mentioned. One
 way to increase the key size is to pipe together several DES boxes
 with independent keys. It turns out that using two DES ciphers is
 not as secure as one might think, even if the key size of the
 combination is a respectable 112 bits.</p>
<p> The standard way to increase DES's key size is to use three DES
 boxes. The mode of operation is a little peculiar: the middle DES
 box is wired in the reverse direction. To encrypt a block with
 DES3, you encrypt it using the first 56 bits of the key, then
 decrypt it using the middle 56 bits of the key, and finally
 encrypt it again using the last 56 bits of the key. This is known
 as "ede" triple-DES, for "encrypt-decrypt-encrypt".</p>
<p> The "ede" construction provides some backward compatibility, as
 you get plain single DES simply by feeding the same key to all
 three boxes. That should help keeping down the gate count, and the
 price, of hardware circuits implementing both plain DES and DES3.</p>
<p> DES3 has a key size of 168 bits, but just like plain DES, useless
 parity bits are inserted, so that keys are represented as 24
 octets (192 bits). As a 112 bit key is large enough to make brute
 force attacks impractical, some applications uses a "two-key"
 variant of triple-DES. In this mode, the same key bits are used
 for the first and the last DES box in the pipe, while the middle
 box is keyed independently. The two-key variant is believed to be
 secure, i.e. there are no known attacks significantly better than
 brute force.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='DES3_Info'><doc>
</doc>
<inherit name='DES3_Info'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DES3.pmod'/><classname resolved='predef::Nettle.DES3_Info'>Nettle.DES3_Info</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Cipher'><doc>
</doc>
<inherit name='Cipher'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DES3.pmod'/><classname resolved='predef::Crypto.Cipher'>.Cipher</classname></inherit>
</docgroup>
</module>

<class name='DSA'><doc><text><p>The Digital Signature Algorithm (aka DSS, Digital Signature Standard).</p>
</text></doc><docgroup homogen-name='get_p' homogen-type='method'><doc><text><p>Returns the modulo.</p>
</text></doc>
<method name='get_p'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_q' homogen-type='method'><doc><text><p>Returns the group order.</p>
</text></doc>
<method name='get_q'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_g' homogen-type='method'><doc><text><p>Returns the generator.</p>
</text></doc>
<method name='get_g'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_y' homogen-type='method'><doc><text><p>Returns the public key.</p>
</text></doc>
<method name='get_y'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_x' homogen-type='method'><doc><text><p>Returns the private key.</p>
</text></doc>
<method name='get_x'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_public_key' homogen-type='method'><doc><text><p>Sets the public key in this DSA object.</p>
</text></doc>
<method name='set_public_key'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='p_'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='q_'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='g_'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='y_'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><object resolved='predef::Crypto.DSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_private_key' homogen-type='method'><doc><text><p>Sets the private key in this DSA object.</p>
</text></doc>
<method name='set_private_key'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='secret'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><object resolved='predef::Crypto.DSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_random' homogen-type='method'><doc><text><p>Sets the random function, used to generate keys and parameters, to
 the function <ref resolved='predef::Crypto.DSA.set_random.r'>r</ref>. Default is <ref resolved='predef::Crypto.Random.random_string'>Crypto.Random.random_string</ref>.</p>
</text></doc>
<method name='set_random'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='r'><type><function><argtype><int/></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><object resolved='predef::Crypto.DSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hash' homogen-type='method'><doc><text><p>Makes a DSA hash of the messge <ref resolved='predef::Crypto.DSA.hash.msg'>msg</ref>.</p>
</text></doc>
<method name='hash'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_sign' homogen-type='method'><doc><text><p>Sign the message <ref resolved='predef::Crypto.DSA.raw_sign.h'>h</ref>. Returns the signature as two <ref resolved='predef::Gmp.mpz'>Gmp.mpz</ref>
 objects.</p>
</text></doc>
<method name='raw_sign'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='h'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='k'><type><or><void/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_verify' homogen-type='method'><doc><text><p>Verify the signature <ref resolved='predef::Crypto.DSA.raw_verify.r'>r</ref>,<ref resolved='predef::Crypto.DSA.raw_verify.s'>s</ref> against the message <ref resolved='predef::Crypto.DSA.raw_verify.h'>h</ref>.</p>
</text></doc>
<method name='raw_verify'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='h'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='r'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='s'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sign_rsaref' homogen-type='method'><doc><text><p>Make a RSA ref signature of message <ref resolved='predef::Crypto.DSA.sign_rsaref.msg'>msg</ref>.</p>
</text></doc>
<method name='sign_rsaref'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_rsaref' homogen-type='method'><doc><text><p>Verify a RSA ref signature <ref resolved='predef::Crypto.DSA.verify_rsaref.s'>s</ref> of message <ref resolved='predef::Crypto.DSA.verify_rsaref.msg'>msg</ref>.</p>
</text></doc>
<method name='verify_rsaref'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sign_ssl' homogen-type='method'><doc><text><p>Make an SSL signatrue of message <ref resolved='predef::Crypto.DSA.sign_ssl.msg'>msg</ref>.</p>
</text></doc>
<method name='sign_ssl'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_ssl' homogen-type='method'><doc><text><p>Verify an SSL signature <ref resolved='predef::Crypto.DSA.verify_ssl.s'>s</ref> of message <ref resolved='predef::Crypto.DSA.verify_ssl.msg'>msg</ref>.</p>
</text></doc>
<method name='verify_ssl'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='msg'><type><string/></type></argument><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='nist_primes' homogen-type='method'><doc><text><p>The (slow) NIST method of generating a DSA prime pair. Algorithm
 4.56 of Handbook of Applied Cryptography.</p>
</text></doc>
<method name='nist_primes'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='l'><type><int/></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='generate_parameters' homogen-type='method'><doc><text><p>Generate key parameters using <ref resolved='predef::Crypto.DSA.nist_primes'>nist_primes</ref>.</p>
</text></doc>
<method name='generate_parameters'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='bits'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.DSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='generate_key' homogen-type='method'><doc><text><p>Generates a public/private key pair. Needs the public parameters
 p, q and g set, either through <ref resolved='predef::Crypto.DSA.set_public_key'>set_public_key</ref> or
 <ref resolved='predef::Crypto.DSA.generate_parameters'>generate_parameters</ref>.</p>
</text></doc>
<method name='generate_key'><source-position first-line='258' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><object resolved='predef::Crypto.DSA'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='public_key_equal' homogen-type='method'><doc><text><p>Compares the public key in this object with that in the provided
 <ref resolved='predef::Crypto.DSA'>DSA</ref> object.</p>
</text></doc>
<method name='public_key_equal'><source-position first-line='270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments><argument name='dsa'><type><object resolved='predef::Crypto.DSA'>.DSA</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns the string <expr>"DSA"</expr>.</p>
</text></doc>
<method name='name'><source-position first-line='277' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Crypto.pmod/DSA.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<module name='NT'>

<class name='CryptContext'><doc><text><p>Class representing an HCRYPTPROV handle.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='name'/><text><p>Key container name. When flags is set to <ref>CRYPT_VERIFYCONTEXT</ref>
 the name must be <expr>0</expr>.</p>
</text></group><group><param name='csp'/><text><p>The name of the Crypto Service Provider to use. If set to
 <expr>0</expr> the user default CSP will be used.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='name'><type><string/></type></argument><argument name='csp'><type><string/></type></argument><argument name='type'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Retreive some random data. Calls CryptGenRandom in the NT API.</p>
</text></doc>
<method name='read'>
<arguments><argument name='size'><type><int/></type></argument><argument name='init'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class></module><class name='CBC'><doc><text><p>Implementation of the cipher block chaining mode (CBC). Works as
 a wrapper for the cipher algorithm put in create.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initialize the CBC wrapper with a cipher algorithm. If it is a
 program, an object will be instantiated with <ref resolved='predef::Crypto.CBC.create.args'>args</ref> as arguments.
 If it is an object that doesn't conform to the cipher API, but has
 an <ref>LFUN::`()</ref>, that LFUN will be called. If it is a function,
 that function will be called with <ref resolved='predef::Crypto.CBC.create.args'>args</ref> as arguments.</p>
</text></doc>
<method name='create'>
<arguments><argument name='cipher'><type><or><program/><object resolved='predef::Crypto.CBC.create'/><function/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns the string <expr>"CBC(x)"</expr> where x is the
 encapsulated algorithm.</p>
</text></doc>
<method name='name'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='block_size' homogen-type='method'><doc><text><p>Reurns the block size of the encapsulated cipher.</p>
</text></doc>
<method name='block_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='key_size' homogen-type='method'><doc><text><p>Returns the key size of the encapsulated cipher.</p>
</text></doc>
<method name='key_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_encrypt_key' homogen-type='method'><doc><text><p>Prepare the cipher and the wrapper for encrypting
 with the given <ref resolved='predef::Crypto.CBC.set_encrypt_key.key'>key</ref>.</p>
</text></doc>
<method name='set_encrypt_key'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.CBC'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_decrypt_key' homogen-type='method'><doc><text><p>Prepare the cipher and the wrapper for decrypting
 with the given <ref resolved='predef::Crypto.CBC.set_decrypt_key.key'>key</ref>.</p>
</text></doc>
<method name='set_decrypt_key'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.CBC'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_iv' homogen-type='method'><doc><text><p>Set the initialization vector to <ref resolved='predef::Crypto.CBC.set_iv.iv'>iv</ref>.</p>
</text></doc>
<method name='set_iv'>
<arguments><argument name='iv'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.CBC'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='crypt' homogen-type='method'><doc><text><p>Encrypt/decrypt <ref resolved='predef::Crypto.CBC.crypt.data'>data</ref> and return the result. <ref resolved='predef::Crypto.CBC.crypt.data'>data</ref> must
 be an integral number of blocks.</p>
</text></doc>
<method name='crypt'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><class name='Buffer'><doc><text><p>Acts as a buffer so that data can be fed to a cipher in blocks
 that doesn't correspond to cipher block sizes.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initialize the Proxy wrapper with a cipher algorithm. If it is a
 program, an object will be instantiated with <ref resolved='predef::Crypto.Buffer.create.args'>args</ref> as arguments.
 If it is an object that doesn't conform to the cipher API, but has
 an <ref>LFUN::`()</ref>, that LFUN will be called. If it is a function,
 that function will be called with <ref resolved='predef::Crypto.Buffer.create.args'>args</ref> as arguments.</p>
</text></doc>
<method name='create'>
<arguments><argument name='cipher'><type><or><program/><object resolved='predef::Crypto.Buffer.create'/><function/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns the string <expr>"CBC(x)"</expr> where x is the
 encapsulated algorithm.</p>
</text></doc>
<method name='name'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='block_size' homogen-type='method'><doc><text><p>Get the block size of the contained block crypto.</p>
</text></doc>
<method name='block_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='key_size' homogen-type='method'><doc><text><p>Get the key size of the contained block crypto.</p>
</text></doc>
<method name='key_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_encrypt_key' homogen-type='method'><doc><text><p>Set the encryption key.</p>
</text><group><note/><text><p>As a side-effect any buffered data will be cleared.</p>
</text></group></doc>
<method name='set_encrypt_key'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Buffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_decrypt_key' homogen-type='method'><doc><text><p>Set the decryption key.</p>
</text><group><note/><text><p>As a side-effect any buffered data will be cleared.</p>
</text></group></doc>
<method name='set_decrypt_key'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.Buffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='crypt' homogen-type='method'><doc><text><p>Encrypt some data.</p>
<p> Adds data to be encrypted to the buffer. If there's enough
 data to en/decrypt a block, that will be done, and the result
 returned. Any uncrypted data will be left in the buffer.</p>
</text></doc>
<method name='crypt'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pad' homogen-type='method'><doc><text><p>Pad and de/encrypt any data left in the buffer.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.Buffer.unpad'>unpad()</ref></p>
</text></group></doc>
<method name='pad'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unpad' homogen-type='method'><doc><text><p>De/encrypt and unpad a block of data.</p>
<p> This performs the reverse operation of <ref resolved='predef::Crypto.Buffer.pad'>pad()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Crypto.Buffer.pad'>pad()</ref></p>
</text></group></doc>
<method name='unpad'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class></module>













































<module name='GLUE'><doc><text><p>GL Universal Environment</p>
</text></doc>

<class name='List'><source-position first-line='535' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A display list abstraction. Automatically allocates a display list
 id upon creation and correctly deallocate it upon destruction.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.DynList'>DynList</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>When creating a new list, the list code can be compiled upon
 creation by supplying a function <ref resolved='predef::GLUE.List.create.f'>f</ref> that performs the GL
 operations.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.List.call'>call</ref></p>
</text></group><group><example/><text><p>List list = List() {
   // GL code
 };</p>
</text></group></doc>
<method name='create'><source-position first-line='547' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='f'><type><or><void/><function/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Deletes this list and frees the list id from the id pool.</p>
</text></doc>
<method name='destroy'><source-position first-line='556' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_id' homogen-type='method'><doc><text><p>Returns this lists' id.</p>
</text></doc>
<method name='get_id'><source-position first-line='565' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p><ref resolved='predef::GLUE.List'>List</ref> objects can be sorted according to list id.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.List.get_id'>get_id</ref></p>
</text></group></doc>
<method name='`&gt;'><source-position first-line='572' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='begin' homogen-type='method'><doc><text><p>Start defining the list. If <ref resolved='predef::GLUE.List.begin.run'>run</ref> is provided, the list will
 be executed as it is compiled (<ref resolved='predef::GL.GL_COMPILE_AND_EXECUTE'>GL.GL_COMPILE_AND_EXECUTE</ref>).</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.List.end'>end</ref>, <ref resolved='predef::GLUE.List.compile'>compile</ref></p>
</text></group></doc>
<method name='begin'><source-position first-line='581' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='run'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='end' homogen-type='method'><doc><text><p>Finish the list definition.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.List.begin'>begin</ref>, <ref resolved='predef::GLUE.List.compile'>compile</ref></p>
</text></group></doc>
<method name='end'><source-position first-line='591' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compile' homogen-type='method'><doc><text><p>Compile a list be executing the list code <ref resolved='predef::GLUE.List.compile.f'>f</ref>. Exceptions in
 <ref resolved='predef::GLUE.List.compile.f'>f</ref> will be thrown after <ref resolved='predef::GL.glEndList'>GL.glEndList</ref> has been called.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.List.begin'>begin</ref></p>
</text></group></doc>
<method name='compile'><source-position first-line='599' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call' homogen-type='method'><doc><text><p>Execute the commands in the list.</p>
</text></doc>
<method name='call'><source-position first-line='607' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='DynList'><source-position first-line='624' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A displaylist that is generated on demand.</p>
</text><group><note/><text><p>On Windows lists needs to be regenerated when the video driver
 mode is changed. Thus the DynList is to prefer over <ref resolved='predef::GLUE.List'>List</ref>, since
 regeneration is done automatically upon video mode change.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='List'><doc>
</doc>
<inherit name='List'><source-position first-line='625' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.List'>List</classname></inherit>
</docgroup>
<docgroup homogen-name='modeswitch' homogen-type='method'><doc><text><p>Called by videodriver when a video mode change occurs.</p>
</text></doc>
<method name='modeswitch'><source-position first-line='630' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_generator' homogen-type='method'><doc><text><p>Sets a function which can generate a displaylist.
 Hint: Use implicit lambda...</p>
</text></doc>
<method name='set_generator'><source-position first-line='639' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='_generator'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='init' homogen-type='method'><doc><text><p>Generates the displaylist, ie calls the function set in
 <ref resolved='predef::GLUE.DynList.set_generator'>set_generator</ref>. Called only when the display list needs to
 be generated.</p>
</text></doc>
<method name='init'><source-position first-line='646' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call' homogen-type='method'><doc><text><p>Call the displaylist, ie draw it.</p>
</text></doc>
<method name='call'><source-position first-line='663' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new DynList object and optionally set a function
 that can generate the displaylist</p>
</text><group><param name='f'/><text><p>Function which contains the GL commands that generates
 the displaylist.</p>
</text></group></doc>
<method name='create'><source-position first-line='674' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><or><function/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='BaseTexture'><source-position first-line='703' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>The texture base class. Using e.g. <ref resolved='predef::GLUE.Texture'>Texture</ref> might be more
 convenient.</p>
</text></doc><docgroup homogen-type='variable'><doc><text><p>Texture dimensions</p>
</text></doc>
<variable name='t_width'><source-position first-line='707' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><int/></type></variable>
<variable name='t_height'><source-position first-line='707' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Image dimensions</p>
</text></doc>
<variable name='i_width'><source-position first-line='709' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><int/></type></variable>
<variable name='i_height'><source-position first-line='709' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Utilization in percent.</p>
</text></doc>
<variable name='width_u'><source-position first-line='711' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><float/></type></variable>
<variable name='height_u'><source-position first-line='711' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='texture_type'><doc><text><p>The texture type, e.g. <ref resolved='predef::GL.GL_TEXTURE_2D'>GL.GL_TEXTURE_2D</ref>.</p>
</text></doc>
<variable name='texture_type'><source-position first-line='714' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='debug'><doc><text><p>A string to identify the texture.</p>
</text></doc>
<variable name='debug'><source-position first-line='719' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='construct' homogen-type='method'><doc><text><p>Construct a new texture. Processes <ref resolved='predef::GLUE.BaseTexture.construct._alpha'>_alpha</ref>, <ref resolved='predef::GLUE.BaseTexture.construct._mode'>_mode</ref> and
 <ref resolved='predef::GLUE.BaseTexture.construct.debug_text'>debug_text</ref> and calls <ref resolved='predef::GLUE.BaseTexture.resize'>resize</ref>.</p>
</text><group><param name='_alpha'/><text><p>The alpha mode the texture is operating in.</p>
<int><group><value>0</value><text><p>RGB</p>
</text></group><group><value>1</value><text><p>RGBA</p>
</text></group><group><value>2</value><text><p>ALPHA</p>
</text></group><group><value>3</value><text><p>LUM</p>
</text></group><group><value>4</value><text><p>LUM+ALPHA</p>
</text></group></int></text></group><group><param name='_mode'/><text><p>The mode the texture is operating in. Autoselected wrt <ref resolved='predef::GLUE.BaseTexture.construct._alpha'>_alpha</ref>
 if <expr>0</expr>.</p>
</text></group><group><param name='debug_text'/><text><p>A string that can be used to identify this texture.</p>
</text></group></doc>
<method name='construct'><source-position first-line='746' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='_alpha'><type><int/></type></argument><argument name='imgs'><type><or><mapping/><void/></or></type></argument><argument name='mipmap'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='_mode'><type><or><int/><void/></or></type></argument><argument name='debug_text'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Calls <ref resolved='predef::GLUE.BaseTexture.construct'>construct</ref> with <ref resolved='predef::GLUE.BaseTexture.create.args'>args</ref>.</p>
</text></doc>
<method name='create'><source-position first-line='760' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Properly deallocates the texture.</p>
</text></doc>
<method name='destroy'><source-position first-line='765' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resize' homogen-type='method'><doc><text><p>Resizes/creates a texture to meet the dimensions <ref resolved='predef::GLUE.BaseTexture.resize.width'>width</ref> and
 <ref resolved='predef::GLUE.BaseTexture.resize.height'>height</ref>. If <ref resolved='predef::GLUE.BaseTexture.resize.nocreate'>nocreate</ref> isn't given, <ref resolved='predef::GLUE.BaseTexture.create_texture'>create_texture</ref> is
 called to actually perform the resize/creation.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.BaseTexture.construct'>construct</ref></p>
</text></group></doc>
<method name='resize'><source-position first-line='777' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='imgs'><type><or><mapping/><void/></or></type></argument><argument name='mipmap'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='nocreate'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_texture' homogen-type='method'><doc><text><p>Actually creates the texture.</p>
</text><group><param name='imgs'/><text><p>If zero, a black texture with the dimensions <ref resolved='predef::GLUE.BaseTexture.create_texture.width'>width</ref> *
 <ref resolved='predef::GLUE.BaseTexture.create_texture.height'>height</ref> will be generated. Otherwise <ref resolved='predef::GLUE.BaseTexture.create_texture.imgs'>imgs</ref> should be a
 mapping as follows.</p>
<mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The actual image to be used as texture. It will be
     cropped/padded to meet the dimensions given in <ref resolved='predef::GLUE.BaseTexture.create_texture.width'>width</ref> and
     <ref resolved='predef::GLUE.BaseTexture.create_texture.height'>height</ref>.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>Optional image to be used as alpha channel, depending on the
     alpha value given to <ref resolved='predef::GLUE.BaseTexture.create'>create</ref>/<ref resolved='predef::GLUE.BaseTexture.construct'>construct</ref>.</p>
</text></group></mapping></text></group><group><param name='mipmap'/><text><p>If <expr>1</expr>, the texture will be mipmapped.</p>
</text></group><group><param name='width'/><param name='height'/><text><p>The dimensions of the texture. If omitted the dimensions of
   the images in <ref resolved='predef::GLUE.BaseTexture.create_texture.imgs'>imgs</ref> will be used.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::GLUE.BaseTexture.resize'>resize</ref></p>
</text></group></doc>
<method name='create_texture'><source-position first-line='815' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='imgs'><type><or><mapping/><void/></or></type></argument><argument name='mipmap'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='width'><type><or><int/><void/></or></type></argument><argument name='height'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_mipmap' homogen-type='method'><doc><text><p>Renders a mipmap of the image/partial image <ref resolved='predef::GLUE.BaseTexture.make_mipmap.imgs'>imgs</ref>.</p>
</text><group><param name='imgs'/><text><p>Image data mapping to feed <ref resolved='predef::GL.glTexImage2D'>GL.glTexImage2D</ref> or
   <ref resolved='predef::GL.glTexSubImage2D'>GL.glTexSubImage2D</ref>.</p>
</text></group><group><param name='imode'/><text><p>Internal format to feed <ref resolved='predef::GL.glTexImage2D'>GL.glTexImage2D</ref>, or UNDEFINED for
   partial images.</p>
</text></group><group><param name='dx'/><param name='dy'/><text><p>Xoffs, yoffs to feed <ref resolved='predef::GL.glTexSubImage2D'>GL.glTexSubImage2D</ref> for partial images.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::GLUE.BaseTexture.create_texture'>create_texture</ref></p>
</text></group></doc>
<method name='make_mipmap'><source-position first-line='950' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='imgs'><type><mapping/></type></argument><argument name='imode'><type><or><int/><void/></or></type></argument><argument name='dx'><type><or><int/><void/></or></type></argument><argument name='dy'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Clears the texture.</p>
</text></doc>
<method name='clear'><source-position first-line='981' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='paste' homogen-type='method'><doc><text><p>Paste the image <ref resolved='predef::GLUE.BaseTexture.paste.i'>i</ref> with alpha channel <ref resolved='predef::GLUE.BaseTexture.paste.a'>a</ref> at coordinates <ref resolved='predef::GLUE.BaseTexture.paste.x'>x</ref>
 and <ref resolved='predef::GLUE.BaseTexture.paste.y'>y</ref> in the current texture.</p>
</text></doc>
<method name='paste'><source-position first-line='997' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='a'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Returns the size of memory allocated by the texture.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='1038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_id' homogen-type='method'><doc><text><p>Returns the id of this texture.</p>
</text></doc>
<method name='get_id'><source-position first-line='1072' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p>Textures can be sorted according to texture id.</p>
</text></doc>
<method name='`&gt;'><source-position first-line='1077' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw' homogen-type='method'><doc><text><p>Draw the texture at <ref resolved='predef::GLUE.BaseTexture.draw.x'>x</ref>,<ref resolved='predef::GLUE.BaseTexture.draw.y'>y</ref>,<ref resolved='predef::GLUE.BaseTexture.draw.z'>z</ref> with dimensions <ref resolved='predef::GLUE.BaseTexture.draw.w'>w</ref>*<ref resolved='predef::GLUE.BaseTexture.draw.h'>h</ref>.</p>
</text></doc>
<method name='draw'><source-position first-line='1083' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='z'><type><float/></type></argument><argument name='w'><type><float/></type></argument><argument name='h'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_region' homogen-type='method'><doc><text><p>Draw texture region <ref resolved='predef::GLUE.BaseTexture.draw_region.s0'>s0</ref>,<ref resolved='predef::GLUE.BaseTexture.draw_region.q0'>q0</ref> - <ref resolved='predef::GLUE.BaseTexture.draw_region.ss'>ss</ref>,<ref resolved='predef::GLUE.BaseTexture.draw_region.qs'>qs</ref> at <ref resolved='predef::GLUE.BaseTexture.draw_region.x'>x</ref>,<ref resolved='predef::GLUE.BaseTexture.draw_region.y'>y</ref>,<ref resolved='predef::GLUE.BaseTexture.draw_region.z'>z</ref>
 with dimensions <ref resolved='predef::GLUE.BaseTexture.draw_region.w'>w</ref>*<ref resolved='predef::GLUE.BaseTexture.draw_region.h'>h</ref>.</p>
</text></doc>
<method name='draw_region'><source-position first-line='1096' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='z'><type><float/></type></argument><argument name='w'><type><float/></type></argument><argument name='h'><type><float/></type></argument><argument name='s0'><type><float/></type></argument><argument name='q0'><type><float/></type></argument><argument name='ss'><type><float/></type></argument><argument name='qs'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='use' homogen-type='method'><doc><text><p>Use the generated texture (<ref resolved='predef::GL.glBindTexture'>GL.glBindTexture</ref>).</p>
</text></doc>
<method name='use'><source-position first-line='1109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='coords' homogen-type='method'><doc><text><p>Sets the texture coordinates to <ref resolved='predef::GLUE.BaseTexture.coords.x'>x</ref>*width,<ref resolved='predef::GLUE.BaseTexture.coords.y'>y</ref>*height.</p>
</text></doc>
<method name='coords'><source-position first-line='1114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_image_data' homogen-type='method'><doc><text><p>Set the contents (and size) of the texture from the supplied
 data. The <ref resolved='predef::GLUE.BaseTexture.set_image_data.data'>data</ref> is identical to what would normally be sent as
 the last argument to glTex[Sub]Image2D() or an Image.Image object.</p>
<p> If <ref resolved='predef::GLUE.BaseTexture.set_image_data.no_resize'>no_resize</ref> is specified, it is assumed that the data will
 fit in the texture, otherwise the parts that extend beyond it
 will be discarded.</p>
</text><group><param name='data'/><text><p>Besides being an <ref resolved='predef::Image.Image'>Image.Image</ref> object, <ref resolved='predef::GLUE.BaseTexture.set_image_data.data'>data</ref> can be either of
 two types of mappins. First it can be a mapping with Image data.</p>
<mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"rgb"</index></member><text><p>Texture image data.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>Optional alpha channel.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"luminance"</index></member><text><p>Optional luminance channel.</p>
</text></group></mapping><p>Second it can be a mapping pointing out a shared memory segment.</p>
<mapping><group><member><type><object resolved='predef::System.Memory'>System.Memory</object></type><index>"mem"</index></member><text><p>The shared memory segment.</p>
</text></group><group><member><type><int/></type><index>"mem_w"</index></member><member><type><int/></type><index>"mem_h"</index></member><text><p>The width and height of the memory segment.</p>
</text></group><group><member><type><int/></type><index>"mem_format"</index></member><text><p>The format of the memory segment, e.g. <ref resolved='predef::GL.GL_RGB'>GL.GL_RGB</ref>.</p>
</text></group><group><member><type><int/></type><index>"mem_type"</index></member><text><p>The low level format of the memory segment, e.g.
     <ref resolved='predef::GL.GL_UNSIGNED_BYTE'>GL.GL_UNSIGNED_BYTE</ref>.</p>
</text></group></mapping>
</text></group></doc>
<method name='set_image_data'><source-position first-line='1150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='data'><type><or><object resolved='predef::Image.Image'>Image.Image</object><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument><argument name='no_resize'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='RectangleTexture'><source-position first-line='1250' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>Uses the NVidia RECT texture extension for non-power-of-two
 textures.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='BaseTexture'><doc>
</doc>
<inherit name='BaseTexture'><source-position first-line='1252' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.BaseTexture'>BaseTexture</classname></inherit>
</docgroup>
</class>

<class name='BaseDWIM'><source-position first-line='1268' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A mixin class with a dwim create function.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>This create function has the following heuristic:</p>
<p> If a mapping is encountered, the following information will be
 attempted to be extracted.</p>
<mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The texture image.</p>
</text></group><group><member><type><int/></type><index>"xsize"</index></member><member><type><int/></type><index>"ysize"</index></member><member><type><int/></type><index>"height"</index></member><member><type><int/></type><index>"width"</index></member><text><p>The image dimensions. If not provided, the dimensions of the
     <expr>"image"</expr> member will be used.</p>
</text></group><group><member><type><int/></type><index>"alpha"</index></member><text><p>The alpha mode.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"mipmap"</index></member><text><p>Should the texture be mipmapped or not.</p>
</text></group><group><member><type><int/></type><index>"mode"</index></member><text><p>The texture mode.</p>
</text></group><group><member><type><string/></type><index>"debug"</index></member><text><p>The debug name associated with this texture.</p>
</text></group></mapping><p>If an object is encountered in the argument list, the first
 object will be used as texture image and the second as texture
 alpha.</p>
<p> If a string is encountered in the argument list, it will be used
 as debug name associated with this texture.</p>
<p> Once all mappings, strings and objects are removed from the
 argument list, the remaining integers will be interpreted as
 width, height, alpha, mipmap and mode, unless there is only one
 argument. In that case it will be interpreted as the alpha mode.</p>
</text></doc>
<method name='create'><source-position first-line='1308' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Texture'><source-position first-line='1408' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>Convenience version of the <ref resolved='predef::GLUE.Texture'>Texture</ref> class.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='BaseTexture'><doc><text><p>Texture base</p>
</text></doc>
<inherit name='BaseTexture'><source-position first-line='1411' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.BaseTexture'>BaseTexture</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='BaseDWIM'><doc><text><p>Convenience methods</p>
</text></doc>
<inherit name='BaseDWIM'><source-position first-line='1414' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.BaseDWIM'>BaseDWIM</classname></inherit>
</docgroup>
</class>

<class name='RectangleDWIMTexture'><source-position first-line='1418' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>Convenience version of the <ref resolved='predef::GLUE.RectangleTexture'>RectangleTexture</ref> class.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='RectangleTexture'><doc><text><p>Texture base</p>
</text></doc>
<inherit name='RectangleTexture'><source-position first-line='1421' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.RectangleTexture'>RectangleTexture</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='BaseDWIM'><doc><text><p>Convenience methods</p>
</text></doc>
<inherit name='BaseDWIM'><source-position first-line='1424' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.BaseDWIM'>BaseDWIM</classname></inherit>
</docgroup>
</class>

<class name='Region'><source-position first-line='1464' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A rectangle. Used by the text routines to avoid drawing outside
 the current region.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='x'><type><float/></type></variable>
<variable name='y'><type><float/></type></variable>
<variable name='w'><type><float/></type></variable>
<variable name='h'><type><float/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='w'><type><float/></type></argument><argument name='h'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_region'><doc><text><p>All region objects have this constant.</p>
</text></doc>
<constant name='is_region'><source-position first-line='1467' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-name='move' homogen-type='method'><doc><text><p>Move the region <ref resolved='predef::GLUE.Region.move.xp'>xp</ref> units right and <ref resolved='predef::GLUE.Region.move.yp'>yp</ref> units down.</p>
</text></doc>
<method name='move'><source-position first-line='1470' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='xp'><type><float/></type></argument><argument name='yp'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resize' homogen-type='method'><doc><text><p>Make the region <ref resolved='predef::GLUE.Region.resize.xs'>xs</ref> units wider and <ref resolved='predef::GLUE.Region.resize.ys'>ys</ref> units higher.</p>
</text></doc>
<method name='resize'><source-position first-line='1476' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='xs'><type><float/></type></argument><argument name='ys'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='outside' homogen-type='method'><doc><text><p>Returns 1 if the region <ref resolved='predef::GLUE.Region.outside.R'>R</ref> is fully outside this region.</p>
</text></doc>
<method name='outside'><source-position first-line='1486' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='R'><type><object resolved='predef::GLUE.Region'>Region</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='inside' homogen-type='method'><doc><text><p>Returns 1 if the region <ref resolved='predef::GLUE.Region.inside.R'>R</ref> is fully inside this region.</p>
</text></doc>
<method name='inside'><source-position first-line='1491' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='R'><type><object resolved='predef::GLUE.Region'>Region</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&amp;' homogen-type='method'><doc><text><p>Creates a new region with the intersection of this region and <ref resolved='predef::GLUE.Region.`&amp;.R'>R</ref>.</p>
</text></doc>
<method name='`&amp;'><source-position first-line='1496' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='R'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GLUE.Region'>Region</object></returntype>
</method>
</docgroup>
</class>

<class name='Font'><source-position first-line='1530' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A font.</p>
</text></doc>

<class name='Character'><source-position first-line='1638' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A character to draw.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Region'><doc>
</doc>
<inherit name='Region'><source-position first-line='1640' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GLUE.Region'>Region</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pos'><doc><text><p>Character position in texture <ref resolved='predef::GLUE.Font.Character.txt'>txt</ref>.</p>
</text></doc>
<variable name='pos'><source-position first-line='1642' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><object resolved='predef::GLUE.Region'>Region</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='txt'><doc><text><p>Texture holding the character.</p>
</text></doc>
<variable name='txt'><source-position first-line='1643' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='slice'><doc><text><p>Slice of character to be shown.</p>
</text></doc>
<variable name='slice'><source-position first-line='1644' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><type><object resolved='predef::GLUE.Region'>Region</object></type></variable>
</docgroup>
<docgroup homogen-name='set_data' homogen-type='method'><doc><text><p>Set character to be region <ref resolved='predef::GLUE.Font.Character.set_data._slice'>_slice</ref> of region <ref resolved='predef::GLUE.Font.Character.set_data._pos'>_pos</ref> of
 texture <ref resolved='predef::GLUE.Font.Character.set_data._txt'>_txt</ref>.</p>
</text></doc>
<method name='set_data'><source-position first-line='1648' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='_pos'><type><object resolved='predef::GLUE.Region'>Region</object></type></argument><argument name='_txt'><type><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></type></argument><argument name='_slice'><type><or><void/><object resolved='predef::GLUE.Region'>Region</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw' homogen-type='method'><doc><text><p>Draw the character using the texture <ref resolved='predef::GLUE.Font.Character.txt'>txt</ref> with the
 texture-coordinates indicated in <ref resolved='predef::GLUE.Font.Character.pos'>pos</ref>, possible cropped with
 <ref resolved='predef::GLUE.Font.Character.slice'>slice</ref>.</p>
</text></doc>
<method name='draw'><source-position first-line='1657' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='1550' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Image.Fonts.Font'>Image.Fonts.Font</object></type></argument><argument name='_scale_width'><type><or><float/><void/></or></type></argument><argument name='_scale_spacing'><type><or><float/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_character' homogen-type='method'><doc><text><p>Returns the advance (in pixels), the texture and the texture
 coordinates for the specified character, or 0 if it's
 nonprintable.</p>
</text><group><note/><text><p>If the font-&gt;write call fails, the backtrace will be written
 to stderr.</p>
</text></group></doc>
<method name='get_character'><source-position first-line='1592' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='c'><type><int/></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object><object resolved='predef::GLUE.Region'>Region</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='text_extents' homogen-type='method'><doc><text><p>Get the width and height of the area that the string <ref resolved='predef::GLUE.Font.text_extents.text'>text</ref> in
 size <ref resolved='predef::GLUE.Font.text_extents.h'>h</ref> would cover.</p>
</text></doc>
<method name='text_extents'><source-position first-line='1695' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='h'><type><float/></type></argument></arguments>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_now' homogen-type='method'><doc><text><p>Write the <ref resolved='predef::GLUE.Font.write_now.text'>text</ref> in size [h], possibly restricted by region <ref resolved='predef::GLUE.Font.write_now.roi'>roi</ref>.
 Return the width and height of the resulting text area. If <ref resolved='predef::GLUE.Font.write_now.roi'>roi</ref> is
 a float, <expr>Region(0.0, 0.0, roi, 10000.0)</expr> will be used.</p>
</text></doc>
<method name='write_now'><source-position first-line='1702' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='h'><type><float/></type></argument><argument name='roi'><type><or><void/><float/><object resolved='predef::GLUE.Region'>Region</object></or></type></argument><argument name='align'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Create a display list that writes text.</p>
</text><group><param name='text'/><text><p>The text to write.</p>
</text></group><group><param name='h'/><text><p>The font height</p>
</text></group><group><param name='roi'/><text><p>The region, if supplied, to restrict writing to.</p>
</text></group><group><param name='align'/><text><p>The text justification; "left" (default), "center" or "right".</p>
</text></group></doc>
<method name='write'><source-position first-line='1822' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='h'><type><float/></type></argument><argument name='roi'><type><or><void/><float/><object resolved='predef::GLUE.Region'>Region</object></or></type></argument><argument name='align'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><object resolved='predef::GLUE.List'>List</object><float/></or></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='SquareMesh'><source-position first-line='1967' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><doc><text><p>A mesh of squares.</p>
</text></doc><docgroup homogen-name='recalculate' homogen-type='method'><doc><text><p>Recalculate the mesh.</p>
</text></doc>
<method name='recalculate'><source-position first-line='1980' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='surface_normal' homogen-type='method'><doc><text><p>Return the normal for the surface at coordinates x,y.
 Used internally.</p>
</text></doc>
<method name='surface_normal'><source-position first-line='2000' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Math.Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_texture' homogen-type='method'><doc><text><p>Set a texture to be mapped on the mesh.</p>
</text></doc>
<method name='set_texture'><source-position first-line='2028' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='tex'><type><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw' homogen-type='method'><doc><text><p>Draw the mesh.</p>
</text></doc>
<method name='draw'><source-position first-line='2034' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_lighting' homogen-type='method'><doc><text><p>Indicate whether or not lighting is used. If it is, the normals
 of each vertex will be calculated as well as the coordinates.</p>
</text></doc>
<method name='set_lighting'><source-position first-line='2061' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='do_lighting'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_size' homogen-type='method'><doc><text><p>Set the size of the mesh</p>
</text></doc>
<method name='set_size'><source-position first-line='2067' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The <ref resolved='predef::GLUE.SquareMesh.create.calculator'>calculator</ref> will be called for each corner and should
 return a 1x3 matrix describing the coordinates for the given
 spot om the surface.</p>
</text></doc>
<method name='create'><source-position first-line='2080' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='calculator'><type><function><argtype><float/></argtype><argtype><float/></argtype><returntype><object resolved='predef::Math.Matrix'>Math.Matrix</object></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/><classname resolved='predef::GL'>GL</classname></import>
</docgroup>
<docgroup homogen-name='get_drivers' homogen-type='method'><doc><text><p>Returns the name of the available drivers.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.init'>init</ref></p>
</text></group></doc>
<method name='get_drivers'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_reinit_callback' homogen-type='method'><doc><text><p>Add a callback that will be called every time the resolution
 is about to change.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.remove_reinit_callback'>remove_reinit_callback</ref></p>
</text></group></doc>
<method name='add_reinit_callback'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><function><argtype><void/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_reinit_callback' homogen-type='method'><doc><text><p>Removes a reinitialization callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.add_reinit_callback'>add_reinit_callback</ref></p>
</text></group></doc>
<method name='remove_reinit_callback'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><function><argtype><void/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_screen_mode' homogen-type='method'><doc><text><p>Returns 1 if in fullscreen mode, otherwise 0.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.toggle_fullscreen'>toggle_fullscreen</ref></p>
</text></group></doc>
<method name='get_screen_mode'><source-position first-line='151' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggle_fullscreen' homogen-type='method'><doc><text><p>Toggles between fullscreen and window mode.
 If a screen mode is provided, that mode will be assumed.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.get_screen_mode'>get_screen_mode</ref></p>
</text></group></doc>
<method name='toggle_fullscreen'><source-position first-line='157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='_fullscreen'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_gl_flags' homogen-type='method'><doc><text><p>Returns the GL flags currently used.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.set_gl_flags'>set_gl_flags</ref></p>
</text></group></doc>
<method name='get_gl_flags'><source-position first-line='168' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_gl_flags' homogen-type='method'><doc><text><p>Sets the GL flags.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.get_gl_flags'>get_gl_flags</ref></p>
</text></group></doc>
<method name='set_gl_flags'><source-position first-line='173' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='_gl_flags'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_depth' homogen-type='method'><doc><text><p>Returns the current color depth.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.set_depth'>set_depth</ref></p>
</text></group></doc>
<method name='get_depth'><source-position first-line='181' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_depth' homogen-type='method'><doc><text><p>Sets the color depth.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.get_depth'>get_depth</ref></p>
</text></group></doc>
<method name='set_depth'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='_depth'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the screen width/height.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.set_resolution'>set_resolution</ref></p>
</text></group></doc>
<method name='xsize'><source-position first-line='202' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='ysize'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_resolution' homogen-type='method'><doc><text><p>Sets the resolution to <ref resolved='predef::GLUE.set_resolution.w'>w</ref>x<ref resolved='predef::GLUE.set_resolution.h'>h</ref> pixels.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.xsize'>xsize</ref>, <ref resolved='predef::GLUE.xsize'>ysize</ref></p>
</text></group></doc>
<method name='set_resolution'><source-position first-line='208' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='w'><type><int/></type></argument><argument name='h'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_aspect' homogen-type='method'><doc><text><p>Returns the screen aspect.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.set_aspect'>set_aspect</ref></p>
</text></group></doc>
<method name='get_aspect'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_aspect' homogen-type='method'><doc><text><p>Set the aspect of the draw area. Does nothing if the provided aspect
 is equal to the one currently used.</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.get_aspect'>get_aspect</ref></p>
</text></group></doc>
<method name='set_aspect'>
<arguments><argument name='asp'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_aspect'>
<arguments><argument name='w'><type><int/></type></argument><argument name='h'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_screen_rotation' homogen-type='method'><doc><text><p>Rotates the drawing area <ref resolved='predef::GLUE.set_screen_rotation.deg'>deg</ref> degrees. Useful e.g. when drawing
 for tilted monitors.</p>
</text></doc>
<method name='set_screen_rotation'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='deg'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mirror_screen' homogen-type='method'><doc><text><p>Mirrors the screen in x and/or y axis. Useful e.g. when drawing
 for backlight projection.</p>
</text><group><param name='how'/><text><p>A string that contains the mirror axis, e.g. <expr>"x"</expr> or
 <expr>"xy"</expr>.</p>
</text></group></doc>
<method name='mirror_screen'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='how'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='init' homogen-type='method'><doc><text><p>Initializes GLUE and loads a driver from a list of drivers.
 If a driver fails to load or initialize, the next driver
 is tried.</p>
</text><group><throws/><text><p><ref>driver_names</ref> not listed in the result from <ref resolved='predef::GLUE.get_drivers'>get_drivers</ref>
 will cause an error to be thrown.</p>
</text></group><group><param name='options'/><text><mapping><group><member><type><or><string/><array><valuetype><string/></valuetype></array></or></type><index>"driver_names"</index></member><text><p>The name of a driver or a list of drivers to try, in given
       order. If no driver name is given, the list given by
       <ref resolved='predef::GLUE.get_drivers'>get_drivers</ref> is used.</p>
</text></group><group><member><type><function><argtype><object resolved='predef::GLUE.Events.Event'>.Events.Event</object></argtype><returntype><void/></returntype></function></type><index>"event_callback"</index></member><text><p>This callback is called with a <ref resolved='predef::GLUE.Events.Event'>Events.Event</ref> object
       whenever an event is trapped by the driver.</p>
</text></group><group><member><type><function><argtype><float/></argtype><argtype><int><min>0</min><max>1</max></int></argtype><returntype><void/></returntype></function></type><index>"resize_callback"</index></member><text><p>This callback is called with the aspect whenever the drawing
       area is resized, either by an event or explicitly by the program.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"fullscreen"</index></member><text><p>Set fullscreen/window mode. 1 is fullscreen, 0 is window.
       Defaults to fullscreen.</p>
</text></group><group><member><type><array><valuetype><int/></valuetype></array></type><index>"resolution"</index></member><text><p>Sets the resolution of the drawing area. Defaults to
       ({ 800, 600 }).</p>
</text></group><group><member><type><float/></type><index>"aspect"</index></member><text><p>Sets the aspect of the drawing area. Defaults to 1.333333
       (4:3).</p>
</text></group><group><member><type><int/></type><index>"depth"</index></member><text><p>Sets the color depth of the drawing area. Defaults to 32.</p>
</text></group><group><member><type><string/></type><index>"title"</index></member><text><p>Sets the window title to this string.</p>
</text></group><group><member><type><string/></type><index>"icon_title"</index></member><text><p>Sets the icon title to this string.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"fast_mipmap"</index></member><text><p>Use GL_NEAREST_MIMAP_NEAREST instead of GL_LINEAR_MIPMAP_LINEAR,
       which also is the default.</p>
</text></group><group><member><type><float/></type><index>"rotation"</index></member><text><p>The rotation in z-axis of the drawing field.</p>
</text></group><group><member><type><string/></type><index>"mirror"</index></member><text><p>Mirroring in x and/or y axis.</p>
</text></group></mapping></text></group><group><seealso/><text><p><ref resolved='predef::GLUE.get_drivers'>get_drivers</ref></p>
</text></group></doc>
<method name='init'><source-position first-line='308' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='options'><type><or><void/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='swap_buffers' homogen-type='method'><doc><text><p>Swap the drawing buffer and the viewing buffer.</p>
</text></doc>
<method name='swap_buffers'><source-position first-line='404' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_cursor' homogen-type='method'><doc><text><p>Show the mouse cursor.</p>
</text></doc>
<method name='show_cursor'><source-position first-line='409' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_cursor' homogen-type='method'><doc><text><p>Hide the mouse cursor.</p>
</text></doc>
<method name='hide_cursor'><source-position first-line='414' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='allocate_light' homogen-type='method'><doc><text><p>Allocate a hardwareaccelerated lightsource from OpenGL.</p>
</text><group><returns/><text><p>an id which may be added to the GL.GL_LIGHT0 constant.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::GLUE.free_light'>free_light</ref></p>
</text></group></doc>
<method name='allocate_light'><source-position first-line='482' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='free_light' homogen-type='method'><doc><text><p>Call this function to free a lightsource that has been allocated with
 <ref resolved='predef::GLUE.allocate_light'>allocate_light</ref>.</p>
</text><group><param name='l'/><text><p>Id which has been allocated using <ref resolved='predef::GLUE.allocate_light'>allocate_light</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::GLUE.allocate_light'>allocate_light</ref></p>
</text></group></doc>
<method name='free_light'><source-position first-line='492' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='l'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pushpop_depth' homogen-type='method'><doc><text><p>Returns the PushPop depth, i.e. the number of pushes awaiting
 corresponding pops.</p>
</text></doc>
<method name='pushpop_depth'><source-position first-line='502' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='PushPop' homogen-type='method'><doc><text><p>Performs function <ref resolved='predef::GLUE.PushPop.f'>f</ref> between <ref resolved='predef::GL.glPushMatrix'>GL.glPushMatrix</ref> and
 <ref resolved='predef::GL.glPopMatrix'>GL.glPopMatrix</ref> calls.</p>
</text><group><example/><text><p>PushPop() {
     GL.glTranslate( 0.01, -0.9, 0.0 );
     write_text( "Press esc to quit" );
   };</p>
</text></group></doc>
<method name='PushPop'><source-position first-line='513' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all_lists' homogen-type='method'><doc><text><p>Returns all defined lists. Only available on Windows.</p>
</text></doc>
<method name='get_all_lists'><source-position first-line='683' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::GLUE.List'>List</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='only_dynlists' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if all defined lists are <ref resolved='predef::GLUE.DynList'>DynList</ref> lists.</p>
</text></doc>
<method name='only_dynlists'><source-position first-line='688' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_texture' homogen-type='method'><doc><text><p>Create a texture.  Mainly here for symetry with <ref resolved='predef::GLUE.make_rect_texture'>make_rect_texture</ref></p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.Texture'>Texture</ref>, <ref resolved='predef::GLUE.make_rect_texture'>make_rect_texture</ref></p>
</text></group></doc>
<method name='make_texture'><source-position first-line='1430' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='image'><type><or><mapping/><object resolved='predef::Image.Image'>Image.Image</object></or></type></argument><argument name='name'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_rect_texture' homogen-type='method'><doc><text><p>Create a texture with the specified image as contents.  Will try
 to use the TEXTURE_RECTANGLE_NV extension if available, otherwise 
 normal textures will be used (like <ref resolved='predef::GLUE.make_texture'>make_texture</ref>).</p>
</text><group><seealso/><text><p><ref resolved='predef::GLUE.make_texture'>make_texture</ref></p>
</text></group></doc>
<method name='make_rect_texture'><source-position first-line='1440' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='image'><type><or><mapping/><object resolved='predef::Image.Image'>Image.Image</object></or></type></argument><argument name='name'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all_textures' homogen-type='method'><doc><text><p>Returns a list of all current textures.</p>
</text></doc>
<method name='get_all_textures'><source-position first-line='1450' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::GLUE.BaseTexture'>BaseTexture</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_texture_mem_usage' homogen-type='method'><doc><text><p>Returns the number of bytes used by the textures.</p>
</text></doc>
<method name='get_texture_mem_usage'><source-position first-line='1455' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_line' homogen-type='method'><doc/>
<method name='draw_line'>
<arguments><argument name='x0'><type><float/></type></argument><argument name='y0'><type><float/></type></argument><argument name='x1'><type><float/></type></argument><argument name='y1'><type><float/></type></argument><argument name='c'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument><argument name='a'><type><or><void/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='draw_line'>
<arguments><argument name='x0'><type><float/></type></argument><argument name='y0'><type><float/></type></argument><argument name='z0'><type><float/></type></argument><argument name='x1'><type><float/></type></argument><argument name='y1'><type><float/></type></argument><argument name='z1'><type><float/></type></argument><argument name='c'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument><argument name='a'><type><or><void/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_obox' homogen-type='method'><doc><text><p>Draw a box outline around the specified coordinates. <ref resolved='predef::GLUE.draw_obox.c'>c</ref> is
 either a single color, in which case it will be used for all
 corners, or an array of four colors, which will be used for each
 corner.</p>
<p> <ref resolved='predef::GLUE.draw_obox.a'>a</ref> is similar to <ref resolved='predef::GLUE.draw_obox.c'>c</ref>, but is the alpha values for each coordinate.</p>
</text></doc>
<method name='draw_obox'><source-position first-line='1933' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x0'><type><float/></type></argument><argument name='y0'><type><float/></type></argument><argument name='x1'><type><float/></type></argument><argument name='y1'><type><float/></type></argument><argument name='c'><type><or><array><valuetype><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></valuetype></array><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></or></type></argument><argument name='a'><type><or><void/><array><valuetype><float/></valuetype></array><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_box' homogen-type='method'><doc><text><p>Draw a box at the specified coordinates. <ref resolved='predef::GLUE.draw_box.c'>c</ref> is either a single
 color, in which case it will be used for all corners, or an array
 of four colors, which will be used for each corner.</p>
<p> <ref resolved='predef::GLUE.draw_box.a'>a</ref> is similar to <ref resolved='predef::GLUE.draw_box.c'>c</ref>, but is the alpha values for each coordinate.</p>
</text></doc>
<method name='draw_box'><source-position first-line='1945' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='x0'><type><float/></type></argument><argument name='y0'><type><float/></type></argument><argument name='x1'><type><float/></type></argument><argument name='y1'><type><float/></type></argument><argument name='c'><type><or><array><valuetype><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></valuetype></array><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></or></type></argument><argument name='a'><type><or><void/><array><valuetype><float/></valuetype></array><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_polygon' homogen-type='method'><doc/>
<method name='draw_polygon'><source-position first-line='1953' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments><argument name='coords'><type><array><valuetype><float/></valuetype></array></type></argument><argument name='c'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument><argument name='a'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='debug_stuff' homogen-type='method'><doc><text><p>Returns some internal states for debug purposes. The actual
 content may change.</p>
</text></doc>
<method name='debug_stuff'><source-position first-line='2090' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/module.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>


<module name='Events'><doc><text><p>GLUE Event abstraction.</p>
</text></doc>

<class name='Event'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/><doc><text><p>Contains an event.</p>
</text></doc><docgroup homogen-name='dup' homogen-type='method'><doc><text><p>Returns a copy of this Event object.</p>
</text></doc>
<method name='dup'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/>
<arguments/>
<returntype><object resolved='predef::GLUE.Events.Event'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pressure'><doc><text><p>The pressure of the key stroke. A value between 0.0 and 1.0.
 Unknown values are represented as 0.</p>
</text></doc>
<variable name='pressure'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='press'><doc><text><p>Press event or release event.</p>
</text></doc>
<variable name='press'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='307' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='_key'><type><or><int/><void/></or></type></argument><argument name='_press'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='_data'><type><or><string/><void/></or></type></argument><argument name='_modifiers'><type><or><int/><void/></or></type></argument><argument name='pressure'><type><or><float/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='_SHFT'><doc><text><p>Integer constant representing shift.</p>
</text></doc>
<constant name='_SHFT'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='_CTRL'><doc><text><p>Integer constant representing control.</p>
</text></doc>
<constant name='_CTRL'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='_ALT'><doc><text><p>Integer constant representing alternate.</p>
</text></doc>
<constant name='_ALT'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='KNOWN_MODIFIERS'><doc><text><p>Integer constant with the union of all known modifiers, i.e.
 <expr>_SHFT | _CTRL | _ALT</expr>.</p>
</text></doc>
<constant name='KNOWN_MODIFIERS'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-name='CTRL' homogen-type='method'><doc><text><p>Adds the <ref resolved='predef::GLUE.Events._CTRL'>_CTRL</ref> modifier to an <ref resolved='predef::GLUE.Events.Event'>Event</ref>, key or array of Events
 and/or keys.</p>
</text></doc>
<method name='CTRL'>
<arguments><argument name='X'><type><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></type></argument></arguments>
<returntype><object resolved='predef::GLUE.Events.Event'>Event</object></returntype>
</method>
<method name='CTRL'>
<arguments><argument name='X'><type><array><valuetype><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::GLUE.Events.Event'>Event</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='SHFT' homogen-type='method'><doc><text><p>Adds the <ref resolved='predef::GLUE.Events._SHFT'>_SHFT</ref> modifier to an <ref resolved='predef::GLUE.Events.Event'>Event</ref>, key or array of Events
 and/or keys.</p>
</text></doc>
<method name='SHFT'>
<arguments><argument name='X'><type><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></type></argument></arguments>
<returntype><object resolved='predef::GLUE.Events.Event'>Event</object></returntype>
</method>
<method name='SHFT'>
<arguments><argument name='X'><type><array><valuetype><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::GLUE.Events.Event'>Event</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='ALT' homogen-type='method'><doc><text><p>Adds the <ref resolved='predef::GLUE.Events._ALT'>_ALT</ref> modifier to an <ref resolved='predef::GLUE.Events.Event'>Event</ref>, key or array of Events
 and/or keys.</p>
</text></doc>
<method name='ALT'>
<arguments><argument name='X'><type><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></type></argument></arguments>
<returntype><object resolved='predef::GLUE.Events.Event'>Event</object></returntype>
</method>
<method name='ALT'>
<arguments><argument name='X'><type><array><valuetype><or><int/><object resolved='predef::GLUE.Events.Event'>Event</object></or></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::GLUE.Events.Event'>Event</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Numeric constant representing a key.</p>
</text></doc>
<constant name='BACKSPACE'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='DELETE'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='TAB'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F1'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F2'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F3'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F4'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F5'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F6'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F7'><source-position first-line='63' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F8'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F9'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F10'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F11'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F12'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='ESCAPE'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='UP'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='DOWN'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='LEFT'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='RIGHT'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='PGUP'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='PGDWN'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='ENTER'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='SPACE'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='HOME'><source-position first-line='78' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='END'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='PAUSE'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='INSERT'><source-position first-line='81' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='SCROLL_LOCK'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='SYS_REQ'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='PRINT_SCRN'><source-position first-line='84' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='CAPSLOCK'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='MENU'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='NUMLOCK'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='A'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='B'><source-position first-line='89' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='C'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='D'><source-position first-line='91' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='E'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='F'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='G'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='H'><source-position first-line='95' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='I'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='J'><source-position first-line='97' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='K'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='L'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='M'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='N'><source-position first-line='101' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='O'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='P'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='Q'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='R'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='S'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='T'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='U'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='V'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='W'><source-position first-line='110' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='X'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='Y'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='Z'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Numeric constant representing a mouse button.</p>
</text></doc>
<constant name='BUTTON_1'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='BUTTON_2'><source-position first-line='118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='BUTTON_3'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='BUTTON_4'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='BUTTON_5'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Numeric constant representing a mouse movement.</p>
</text></doc>
<constant name='MOUSE_UP'><source-position first-line='124' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='MOUSE_DOWN'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='MOUSE_LEFT'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='MOUSE_RIGHT'><source-position first-line='127' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='MOUSE_ABS'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Numeric constant representing a modifier key.</p>
</text></doc>
<constant name='LSHIFT'><source-position first-line='131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='RSHIFT'><source-position first-line='132' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='LCTRL'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='RCTRL'><source-position first-line='134' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='LALT'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
<constant name='RALT'><source-position first-line='136' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='MODIFIERS'><doc><text><p>Mapping that maps a modifier key to any of the symbolic modifiers
 <ref resolved='predef::GLUE.Events._SHFT'>_SHFT</ref>, <ref resolved='predef::GLUE.Events._CTRL'>_CTRL</ref> and <ref resolved='predef::GLUE.Events._ALT'>_ALT</ref>.</p>
</text></doc>
<constant name='MODIFIERS'><source-position first-line='140' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='EXIT'><doc><text><p>Numeric constant representing an exit event.</p>
</text></doc>
<constant name='EXIT'><source-position first-line='150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='key_names'><doc><text><p>Mapping that maps key identifiers with a printable name, e.g.
 <ref resolved='predef::GLUE.Events.LSHIFT'>LSHIFT</ref> to <expr>"Left shift"</expr>.</p>
</text></doc>
<constant name='key_names'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/></constant>
</docgroup>
<docgroup homogen-name='is_modifier' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if the key code <ref resolved='predef::GLUE.Events.is_modifier.k'>k</ref> is a modifier key, e.g.
 <ref resolved='predef::GLUE.Events.LSHIFT'>LSHIFT</ref> or <ref resolved='predef::GLUE.Events.RSHIFT'>RSHIFT</ref>.</p>
</text></doc>
<method name='is_modifier'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLUE.pmod/Events.pmod'/>
<arguments><argument name='k'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</module></module>



<module name='Stdio'>

<class name='FakeFile'><doc><text><p>A string wrapper that pretends to be a <ref resolved='predef::Stdio.File'>Stdio.File</ref> object.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='is_fake_file'><doc><text><p>This constant can be used to distinguish a FakeFile object
 from a real <ref resolved='predef::Stdio.File'>Stdio.File</ref> object.</p>
</text></doc>
<constant name='is_fake_file'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/></constant>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.close'>Stdio.File()-&gt;close()</ref></p>
</text></group></doc>
<method name='close'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='direction'><type><or><void/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.create'>Stdio.File()-&gt;create()</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='data'><type><string/></type></argument><argument name='type'><type><or><void/><string/></or></type></argument><argument name='pointer'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='dup' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.dup'>Stdio.File()-&gt;dup()</ref></p>
</text></group></doc>
<method name='dup'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.FakeFile'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>Always returns 0.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.errno'>Stdio.File()-&gt;errno()</ref></p>
</text></group></doc>
<method name='errno'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='stat' homogen-type='method'><doc><text><p>Returns size and the creation time of the string.</p>
</text></doc>
<method name='stat'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.Stat'>Stdio.Stat</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='line_iterator' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.line_iterator'>Stdio.File()-&gt;line_iterator()</ref></p>
</text></group></doc>
<method name='line_iterator'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='trim'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::String.SplitIterator'>String.SplitIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_id' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_id'>Stdio.File()-&gt;query_id()</ref></p>
</text></group></doc>
<method name='query_id'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_id' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_id'>Stdio.File()-&gt;set_id()</ref></p>
</text></group></doc>
<method name='set_id'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='_id'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_function' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.read_function'>Stdio.File()-&gt;read_function()</ref></p>
</text></group></doc>
<method name='read_function'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='nbytes'><type><int/></type></argument></arguments>
<returntype><function><returntype><string/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.peek'>Stdio.File()-&gt;peek()</ref></p>
</text></group></doc>
<method name='peek'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='timeout'><type><or><int/><float/><void/></or></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_address' homogen-type='method'><doc><text><p>Always returns 0.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_address'>Stdio.File()-&gt;query_address()</ref></p>
</text></group></doc>
<method name='query_address'><source-position first-line='123' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='is_local'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.read'>Stdio.File()-&gt;read()</ref></p>
</text></group></doc>
<method name='read'><source-position first-line='127' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='len'><type><or><void/><int><min>0</min><max/></int></or></type></argument><argument name='not_all'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.seek'>Stdio.File()-&gt;seek()</ref></p>
</text></group></doc>
<method name='seek'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='pos'><type><int/></type></argument><argument name='mult'><type><or><void/><int/></or></type></argument><argument name='add'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sync' homogen-type='method'><doc><text><p>Always returns 1.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.sync'>Stdio.File()-&gt;sync()</ref></p>
</text></group></doc>
<method name='sync'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><int><min>1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='tell' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.tell'>Stdio.File()-&gt;tell()</ref></p>
</text></group></doc>
<method name='tell'><source-position first-line='167' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='truncate' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.truncate'>Stdio.File()-&gt;truncate()</ref></p>
</text></group></doc>
<method name='truncate'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='length'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.write'>Stdio.File()-&gt;write()</ref></p>
</text></group></doc>
<method name='write'><source-position first-line='178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='str'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>-1</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_blocking'>Stdio.File()-&gt;set_blocking</ref></p>
</text></group></doc>
<method name='set_blocking'><source-position first-line='200' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking_keep_callbacks' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>Stdio.File()-&gt;set_blocking_keep_callbacks</ref></p>
</text></group></doc>
<method name='set_blocking_keep_callbacks'><source-position first-line='210' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_blocking'>Stdio.File()-&gt;set_blocking</ref></p>
</text></group></doc>
<method name='set_nonblocking'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='rcb'><type><function/></type></argument><argument name='wcb'><type><function/></type></argument><argument name='ccb'><type><function/></type></argument><argument name='rocb'><type><function/></type></argument><argument name='wocb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking_keep_callbacks' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>Stdio.File()-&gt;set_blocking_keep_callbacks</ref></p>
</text></group></doc>
<method name='set_nonblocking_keep_callbacks'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_close_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_read_callback'>Stdio.File()-&gt;set_close_callback</ref></p>
</text></group></doc>
<method name='set_close_callback'><source-position first-line='230' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_read_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_read_callback'>Stdio.File()-&gt;set_read_callback</ref></p>
</text></group></doc>
<method name='set_read_callback'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_read_oob_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_read_callback'>Stdio.File()-&gt;set_read_oob_callback</ref></p>
</text></group></doc>
<method name='set_read_oob_callback'><source-position first-line='238' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_write_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_read_callback'>Stdio.File()-&gt;set_write_callback</ref></p>
</text></group></doc>
<method name='set_write_callback'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_write_oob_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_read_callback'>Stdio.File()-&gt;set_write_oob_callback</ref></p>
</text></group></doc>
<method name='set_write_oob_callback'><source-position first-line='246' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_close_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_read_callback'>Stdio.File()-&gt;query_close_callback</ref></p>
</text></group></doc>
<method name='query_close_callback'><source-position first-line='251' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_read_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_read_callback'>Stdio.File()-&gt;query_read_callback</ref></p>
</text></group></doc>
<method name='query_read_callback'><source-position first-line='255' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_read_oob_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_read_callback'>Stdio.File()-&gt;query_read_oob_callback</ref></p>
</text></group></doc>
<method name='query_read_oob_callback'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_write_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_read_callback'>Stdio.File()-&gt;query_write_callback</ref></p>
</text></group></doc>
<method name='query_write_callback'><source-position first-line='263' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_write_oob_callback' homogen-type='method'><doc><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_read_callback'>Stdio.File()-&gt;query_write_oob_callback</ref></p>
</text></group></doc>
<method name='query_write_oob_callback'><source-position first-line='267' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>A FakeFile can be casted to a string.</p>
</text></doc>
<method name='cast'><source-position first-line='278' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Sizeof on a FakeFile returns the size of its contents.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='287' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/FakeFile.pike'/>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
</class>

<class name='Stream'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>The Stdio.Stream API.</p>
<p> This class exists purely for typing reasons.</p>
<p> Use in types in place of <ref resolved='predef::Stdio.File'>Stdio.File</ref> where only blocking stream-oriented
 I/O is done with the object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.NonblockingStream'>NonblockingStream</ref>, <ref resolved='predef::Stdio.BlockFile'>BlockFile</ref>, <ref resolved='predef::Stdio.File'>File</ref>, <ref resolved='predef::Stdio.FILE'>FILE</ref></p>
</text></group></doc></class>

<class name='NonblockingStream'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>The Stdio.NonblockingStream API.</p>
<p> This class exists purely for typing reasons.</p>
<p> Use in types in place of <ref resolved='predef::Stdio.File'>Stdio.File</ref> where nonblocking and/or blocking
 stream-oriented I/O is done with the object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Stream'>Stream</ref>, <ref resolved='predef::Stdio.BlockFile'>BlockFile</ref>, <ref resolved='predef::Stdio.File'>File</ref>, <ref resolved='predef::Stdio.FILE'>FILE</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Stream'><doc>
</doc>
<inherit name='Stream'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname resolved='predef::Stdio.Stream'>Stream</classname></inherit>
</docgroup>
</class>

<class name='BlockFile'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>The Stdio.BlockFile API.</p>
<p> This class exists purely for typing reasons.</p>
<p> Use in types in place of <ref resolved='predef::Stdio.File'>Stdio.File</ref> where only blocking
 I/O is done with the object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Stream'>Stream</ref>, <ref resolved='predef::Stdio.NonblockingStream'>NonblockingStream</ref>, <ref resolved='predef::Stdio.File'>File</ref>, <ref resolved='predef::Stdio.FILE'>FILE</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Stream'><doc>
</doc>
<inherit name='Stream'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname resolved='predef::Stdio.Stream'>Stream</classname></inherit>
</docgroup>
</class>

<class name='File'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>This is the basic I/O object, it provides socket and pipe
 communication as well as file access. It does not buffer reads and
 writes or provide line-by-line reading, that is done with
 <ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref> object.</p>
</text><group><note/><text><p>The file or stream will normally be closed when this object is
 destructed (unless there are more objects that refer to the same
 file through use of <ref resolved='predef::Stdio.File.assign'>assign</ref> or <ref resolved='predef::Stdio.File.dup'>dup</ref>). Objects do not contain
 cyclic references in themselves, so they will be destructed timely
 when they run out of references.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Fd_ref'><doc>
</doc>
<inherit name='Fd_ref'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><modifiers><optional/></modifiers><classname resolved='predef::Stdio.Fd_ref'>Fd_ref</classname></inherit>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>Returns the error code for the last command on this file.
 Error code is normally cleared when a command is successful.</p>
</text></doc>
<method name='errno'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open' homogen-type='method'><doc><text><p>Open a file for read, write or append. The parameter <ref resolved='predef::Stdio.File.open.mode'>mode</ref> should
 contain one or more of the following letters:</p>
<string><group><value>"r"</value><text><p>Open file for reading.</p>
</text></group><group><value>"w"</value><text><p>Open file for writing.</p>
</text></group><group><value>"a"</value><text><p>Open file for append (use with <expr>"w"</expr>).</p>
</text></group><group><value>"t"</value><text><p>Truncate file at open (use with <expr>"w"</expr>).</p>
</text></group><group><value>"c"</value><text><p>Create file if it doesn't exist (use with <expr>"w"</expr>).</p>
</text></group><group><value>"x"</value><text><p>Fail if file already exists (use with <expr>"c"</expr>).</p>
</text></group></string><p><ref resolved='predef::Stdio.File.open.mode'>mode</ref> should always contain at least one of the letters
 <expr>"r"</expr> or <expr>"w"</expr>.</p>
<p> The parameter <ref resolved='predef::Stdio.File.open.mask'>mask</ref> is protection bits to use if the file is
 created. Default is <expr>0666</expr> (read+write for all in octal
 notation).</p>
</text><group><returns/><text><p>This function returns <expr>1</expr> for success, <expr>0</expr> otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.close'>close()</ref>, <ref resolved='predef::Stdio.File.create'>create()</ref></p>
</text></group></doc>
<method name='open'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='open'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument><argument name='mask'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='openpt' homogen-type='method'><doc><text><p>Open the master end of a pseudo-terminal pair.  The parameter
 <ref resolved='predef::Stdio.File.openpt.mode'>mode</ref> should contain one or more of the following letters:</p>
<string><group><value>"r"</value><text><p>Open terminal for reading.</p>
</text></group><group><value>"w"</value><text><p>Open terminal for writing.</p>
</text></group></string><p><ref resolved='predef::Stdio.File.openpt.mode'>mode</ref> should always contain at least one of the letters
 <expr>"r"</expr> or <expr>"w"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.grantpt'>grantpt()</ref></p>
</text></group></doc>
<method name='openpt'>
<arguments><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open_socket' homogen-type='method'><doc><text><p>This makes this file into a socket ready for connections. The reason
 for this function is so that you can set the socket to nonblocking
 or blocking (default is blocking) before you call <ref resolved='predef::Stdio.File.connect'>connect()</ref>.</p>
<p> If you give a <ref resolved='predef::Stdio.File.open_socket.port'>port</ref> number to this function, the socket will be
 bound to this <ref resolved='predef::Stdio.File.open_socket.port'>port</ref> locally before connecting anywhere. This is
 only useful for some silly protocols like <b>FTP</b>. You may also
 specify an <ref resolved='predef::Stdio.File.open_socket.address'>address</ref> to bind to if your machine has many IP numbers.</p>
<p> <ref resolved='predef::Stdio.File.open_socket.port'>port</ref> can also be specified as a string, giving the name of the
 service associated with the port.</p>
<p> Finally, a protocol <ref resolved='predef::Stdio.File.open_socket.family'>family</ref> for the socket can be specified.
 If no <ref resolved='predef::Stdio.File.open_socket.family'>family</ref> is specified, one which is appropriate for the
 <ref resolved='predef::Stdio.File.open_socket.address'>address</ref> is automatically selected.  Thus, there is normally
 no need to specify it.</p>
</text><group><returns/><text><p>This function returns 1 for success, 0 otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.connect'>connect()</ref>, <ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>, <ref resolved='predef::Stdio.File.set_blocking'>set_blocking()</ref></p>
</text></group></doc>
<method name='open_socket'><source-position first-line='279' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='port'><type><or><int/><string/><void/></or></type></argument><argument name='address'><type><or><string/><void/></or></type></argument><argument name='family'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>This function connects a socket previously created with
 <ref resolved='predef::Stdio.File.open_socket'>open_socket()</ref> to a remote socket through TCP/IP. The
 <ref resolved='predef::Stdio.File.connect.host'>host</ref> argument is the hostname or IP number of the remote machine.
 A local IP and port can be explicitly bound by specifying <ref resolved='predef::Stdio.File.connect.client'>client</ref>
 and <ref resolved='predef::Stdio.File.connect.client_port'>client_port</ref>.</p>
</text><group><returns/><text><p>This function returns 1 for success, 0 otherwise.</p>
</text></group><group><note/><text><p>In nonblocking mode <expr>0</expr> (zero) may be returned and
 <ref resolved='predef::Stdio.File.errno'>errno()</ref> set to <expr>EWOULDBLOCK</expr> or
 <expr>WSAEWOULDBLOCK</expr>. This should not be regarded as a
 connection failure. In nonblocking mode you need to wait for a
 write or close callback before you know if the connection failed
 or not.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_address'>query_address()</ref>, <ref resolved='predef::Stdio.File.async_connect'>async_connect()</ref>, <ref resolved='predef::Stdio.File.connect_unix'>connect_unix()</ref></p>
</text></group></doc>
<method name='connect'><source-position first-line='329' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='host'><type><string/></type></argument><argument name='port'><type><or><int/><string/></or></type></argument><argument name='client'><type><or><void/><string/></or></type></argument><argument name='client_port'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect_unix' homogen-type='method'><doc><text><p>Open a UNIX domain socket connection to the specified destination.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, and <expr>0</expr> on failure.</p>
</text></group><group><note/><text><p>Nonblocking mode is not supported while connecting</p>
</text></group></doc>
<method name='connect_unix'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_function' homogen-type='method'><doc><text><p>Returns a function that when called will call <ref resolved='predef::Stdio.File.read'>read</ref> with
 nbytes as argument. Can be used to get various callback
 functions, eg for the fourth argument to
 <ref resolved='predef::String.SplitIterator'>String.SplitIterator</ref>.</p>
</text></doc>
<method name='read_function'><source-position first-line='404' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='nbytes'><type><int/></type></argument></arguments>
<returntype><function><returntype><string/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='line_iterator' homogen-type='method'><doc><text><p>Returns an iterator that will loop over the lines in this file. 
 If trim is true, all <tt>'\r'</tt> characters will be removed from
 the input.</p>
</text></doc>
<method name='line_iterator'><source-position first-line='415' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='trim'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><object resolved='predef::String.SplitIterator'>String.SplitIterator</object><object>LineIterator</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_connect' homogen-type='method'><doc><text><p>Open a TCP/IP connection asynchronously.</p>
<p> This function is similar to <ref resolved='predef::Stdio.File.connect'>connect()</ref>, but works asynchronously.</p>
</text><group><param name='host'/><text><p>Hostname or IP to connect to.</p>
</text></group><group><param name='port'/><text><p>Port number or service name to connect to.</p>
</text></group><group><param name='callback'/><text><p>Function to be called on completion.
   The first argument will be <expr>1</expr> if a connection was
   successfully estabished, and <expr>0</expr> (zero) on failure.
   The rest of the arguments to <ref resolved='predef::Stdio.File.async_connect.callback'>callback</ref> are passed
   verbatim from <ref resolved='predef::Stdio.File.async_connect.args'>args</ref>.</p>
</text></group><group><param name='args'/><text><p>Extra arguments to pass to <ref resolved='predef::Stdio.File.async_connect.callback'>callback</ref>.</p>
</text></group><group><returns/><text><p>Returns <expr>0</expr> on failure, and <expr>1</expr> if <ref resolved='predef::Stdio.File.async_connect.callback'>callback</ref>
   will be used.</p>
</text></group><group><note/><text><p>The socket may be opened with <ref resolved='predef::Stdio.File.open_socket'>open_socket()</ref> ahead of
   the call to this function, but it is not required.</p>
</text></group><group><note/><text><p>This object is put in callback mode by this function. For
   <ref resolved='predef::Stdio.File.async_connect.callback'>callback</ref> to be called, the backend must be active. See e.g.
   <ref resolved='predef::Stdio.File.set_read_callback'>set_read_callback</ref> for more details about backends and
   callback mode.</p>
</text></group><group><note/><text><p>The socket will be in nonblocking state if the connection is
   successful, and any callbacks will be cleared.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.connect'>connect()</ref>, <ref resolved='predef::Stdio.File.open_socket'>open_socket()</ref>, <ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref></p>
</text></group></doc>
<method name='async_connect'><source-position first-line='467' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='host'><type><string/></type></argument><argument name='port'><type><or><int/><string/></or></type></argument><argument name='callback'><type><function><argtype><int/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pipe' homogen-type='method'><doc><text><p>This function creates a pipe between the object it was called in
 and an object that is returned.</p>
</text><group><param name='required_properties'/><text><p>Binary or (<ref resolved='predef::`|'>predef::`|()</ref>) of required <expr>PROP_</expr> properties.</p>
<int><group><value>PROP_IPC</value><text><p>The resulting pipe may be used for inter process communication.</p>
</text></group><group><value>PROP_NONBLOCK</value><text><p>The resulting pipe supports nonblocking I/O.</p>
</text></group><group><value>PROP_SHUTDOWN</value><text><p>The resulting pipe supports shutting down transmission in either
       direction (see <ref resolved='predef::Stdio.File.close'>close()</ref>).</p>
</text></group><group><value>PROP_BUFFERED</value><text><p>The resulting pipe is buffered (usually 4KB).</p>
</text></group><group><value>PROP_BIDIRECTIONAL</value><text><p>The resulting pipe is bi-directional.</p>
</text></group><group><value>PROP_REVERSE</value><text><p>The resulting pipe supports communication "backwards" (but
       not necessarily "forwards", see <ref resolved='predef::Stdio.PROP_BIDIRECTIONAL'>PROP_BIDIRECTIONAL</ref>).</p>
</text></group></int><p>The default is <expr>PROP_NONBLOCK|PROP_BIDIRECTIONAL</expr>.</p>
<p> If <ref resolved='predef::Stdio.PROP_BIDIRECTIONAL'>PROP_BIDIRECTIONAL</ref> isn't specified, the read-end is this
 object, and the write-end is the returned object (unless
 <ref resolved='predef::Stdio.PROP_REVERSE'>PROP_REVERSE</ref> has been specified, in which case it is the other
 way around).</p>
<p> The two ends of a bi-directional pipe are indistinguishable.</p>
<p> If the File object this function is called in was open to begin with,
 it will be closed before the pipe is created.</p>
</text></group><group><note/><text><p>Calling this function with an argument of <tt>0</tt> is not the
   same as calling it with no arguments.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref>, <ref resolved='predef::Stdio.PROP_IPC'>PROP_IPC</ref>, <ref resolved='predef::Stdio.PROP_NONBLOCK'>PROP_NONBLOCK</ref>,
   <ref resolved='predef::Stdio.PROP_SHUTDOWN'>PROP_SHUTDOWN</ref>, <ref resolved='predef::Stdio.PROP_BUFFERED'>PROP_BUFFERED</ref>, <ref resolved='predef::Stdio.PROP_REVERSE'>PROP_REVERSE</ref>,
   <ref resolved='predef::Stdio.PROP_BIDIRECTIONAL'>PROP_BIDIRECTIONAL</ref></p>
</text></group></doc>
<method name='pipe'><source-position first-line='546' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='required_properties'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>There are four basic ways to create a Stdio.File object.
 The first is calling it without any arguments, in which case the you'd
 have to call <ref resolved='predef::Stdio.File.open'>open()</ref>, <ref resolved='predef::Stdio.File.connect'>connect()</ref> or some other method which connects
 the File object with a stream.</p>
<p> The second way is calling it with a <ref resolved='predef::Stdio.File.create.filename'>filename</ref> and open <ref resolved='predef::Stdio.File.create.mode'>mode</ref>. This is
 the same thing as cloning and then calling <ref resolved='predef::Stdio.File.open'>open()</ref>, except shorter and
 faster.</p>
<p> The third way is to call it with <ref resolved='predef::Stdio.File.create.descriptorname'>descriptorname</ref> of <expr>"stdin"</expr>,
 <expr>"stdout"</expr> or <expr>"stderr"</expr>. This will open the specified
 standard stream.</p>
<p> For the advanced users, you can use the file descriptors of the
 systems (note: emulated by pike on some systems - like NT). This is
 only useful for streaming purposes on unix systems. This is <b>not
 recommended at all</b> if you don't know what you're into. Default
 <ref resolved='predef::Stdio.File.create.mode'>mode</ref> for this is <expr>"rw"</expr>.</p>
</text><group><note/><text><p>Open mode will be filtered through the system UMASK. You
 might need to use <ref>chmod()</ref> later.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open()</ref>, <ref resolved='predef::Stdio.File.connect'>connect()</ref>, <ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref>,</p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='descriptorname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='fd'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='fd'><type><int/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='assign' homogen-type='method'><doc><text><p>This function takes a clone of Stdio.File and assigns all
 variables of this file from it. It can be used together with <ref resolved='predef::Stdio.File.dup'>dup()</ref>
 to move files around.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.dup'>dup()</ref></p>
</text></group></doc>
<method name='assign'><source-position first-line='665' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='o'><type><or><object resolved='predef::Stdio.File'>File</object><object resolved='predef::Stdio.Fd'>Fd</object></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='dup' homogen-type='method'><doc><text><p>This function returns a clone of Stdio.File with all variables
 copied from this file.</p>
</text><group><note/><text><p>All variables, even <tt>id</tt>, are copied.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.assign'>assign()</ref></p>
</text></group></doc>
<method name='dup'><source-position first-line='693' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Close the file. Optionally, specify "r", "w" or "rw" to close just
 the read, just the write or both read and write directions of the file
 respectively.</p>
<p> An exception is thrown if an I/O error occurs.</p>
</text><group><returns/><text><p>Nonzero is returned if the file wasn't open in the specified
 direction, zero otherwise.</p>
</text></group><group><note/><text><p>This function will not call the <tt>close_callback</tt>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open</ref>, <ref resolved='predef::Stdio.File.open_socket'>open_socket</ref></p>
</text></group></doc>
<method name='close'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='close'>
<arguments><argument name='direction'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>These functions set the various callbacks, which will be called
 when various events occur on the stream. A zero as argument will
 remove the callback.</p>
<p> A <ref resolved='predef::Pike.Backend'>Pike.Backend</ref> object is responsible for calling the
 callbacks. It requires a thread to be waiting in it to execute
 the calls. That means that only one of the callbacks will be
 running at a time, so you don't need mutexes between them.</p>
<p> Unless you've specified otherwise with the <ref resolved='predef::Stdio.File.set_backend'>set_backend</ref>
 function, the default backend <ref resolved='predef::Pike.DefaultBackend'>Pike.DefaultBackend</ref> will be
 used. It's normally activated by returning <expr>-1</expr> from the
 <tt>main</tt> function and will then execute in the main thread.</p>
<ul><group><item/><text><p>When data arrives on the stream, <ref resolved='predef::Stdio.File.set_read_callback.read_cb'>read_cb</ref> will be called with
   some or all of that data as the second argument.</p>
</text></group><group><item/><text><p>When the stream has buffer space over for writing, <ref resolved='predef::Stdio.File.set_read_callback.write_cb'>write_cb</ref>
   will be called so that you can write more data to it.</p>
</text></group><group><item/><text><p>When out-of-band data arrives on the stream, <ref resolved='predef::Stdio.File.set_read_callback.read_oob_cb'>read_oob_cb</ref>
   will be called with some or all of that data as the second
   argument.</p>
</text></group><group><item/><text><p>When the stream allows out-of-band data to be sent,
   <ref resolved='predef::Stdio.File.set_read_callback.write_oob_cb'>write_oob_cb</ref> will be called so that you can write more
   out-of-band data to it.</p>
</text></group><group><item/><text><p>When the stream has been shut down, either due to an error or
   a close from the other end, <ref resolved='predef::Stdio.File.set_read_callback.close_cb'>close_cb</ref> will be called.
   <ref resolved='predef::Stdio.File.errno'>errno</ref> will return the error that has occurred or zero in
   the case of a normal close. Note that <ref resolved='predef::Stdio.File.set_read_callback.close_cb'>close_cb</ref> will not be
   called for a local close, neither by a call to <ref resolved='predef::Stdio.File.close'>close</ref> or by
   destructing this object.</p>
</text></group></ul><p>All callbacks will receive the <tt>id</tt> set by <ref resolved='predef::Stdio.File.set_id'>set_id</ref> as
 first argument.</p>
<p> If a callback returns <expr>-1</expr>, no other callback or call out
 will be called by the backend in that round. I.e. the caller of
 the backend will get control back right away. For the default
 backend that means it will immediately start another round and
 check files and call outs anew.</p>
</text><group><note/><text><p>These functions do not set the file nonblocking.</p>
</text></group><group><note/><text><p>Callbacks are also set by <ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>.</p>
</text></group><group><note/><text><p>After a callback has been called, it's disabled until it has
 accessed the stream accordingly, i.e. the <ref resolved='predef::Stdio.File.set_read_callback.write_cb'>write_cb</ref> callback
 is disabled after it's been called until something has been
 written with <ref resolved='predef::Stdio.File.write'>write</ref>, and the <ref resolved='predef::Stdio.File.set_read_callback.write_oob_cb'>write_oob_cb</ref> callback is
 likewise disabled until something has been written with
 <ref resolved='predef::Stdio.File.write_oob'>write_oob</ref>. Since the data already has been read when the read
 callbacks are called, this effect is not noticeable for them.</p>
</text></group><group><note/><text><p>Installing callbacks means that you will start doing I/O on the
 stream from the thread running the backend. If you are running
 these set functions from another thread you must be prepared
 that the callbacks can be called immediately by the backend
 thread, so it might not be safe to continue using the stream in
 this thread.</p>
<p> Because of that, it's useful to talk about "callback mode" when
 any callback is installed. In callback mode the stream should be
 seen as "bound" to the backend thread. For instance, it's only
 the backend thread that reliably can end callback mode before
 the stream is "handed over" to another thread.</p>
</text></group><group><note/><text><p>Callback mode has nothing to do with nonblocking mode - although
 the two often are used together they don't have to be.</p>
</text></group><group><note/><text><p>The file object will stay referenced from the backend object as
 long as there are callbacks that can receive events.</p>
</text></group><group><bugs/><text><p>Setting a close callback without a read callback currently only
 works when there's no risk of getting more data on the stream.
 Otherwise the close callback will be silently deregistered if
 data arrives.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>, <ref resolved='predef::Stdio.File.set_id'>set_id()</ref>, <ref resolved='predef::Stdio.File.set_backend'>set_backend</ref>,
 <ref resolved='predef::Stdio.File.query_read_callback'>query_read_callback</ref>, <ref resolved='predef::Stdio.File.query_read_callback'>query_write_callback</ref>,
 <ref resolved='predef::Stdio.File.query_read_callback'>query_read_oob_callback</ref>, <ref resolved='predef::Stdio.File.query_read_callback'>query_write_oob_callback</ref>,
 <ref resolved='predef::Stdio.File.query_read_callback'>query_close_callback</ref></p>
</text></group></doc>
<method name='set_read_callback'>
<arguments><argument name='read_cb'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_write_callback'>
<arguments><argument name='write_cb'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_read_oob_callback'>
<arguments><argument name='read_oob_cb'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_write_oob_callback'>
<arguments><argument name='write_oob_cb'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_close_callback'>
<arguments><argument name='close_cb'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>These functions return the currently installed callbacks for the
 respective events.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_read_callback</ref>,
 <ref resolved='predef::Stdio.File.set_read_callback'>set_write_callback</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_read_oob_callback</ref>,
 <ref resolved='predef::Stdio.File.set_read_callback'>set_write_oob_callback</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_close_callback</ref></p>
</text></group></doc>
<method name='query_read_callback'>
<arguments/>
<returntype><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></returntype>
</method>
<method name='query_write_callback'>
<arguments/>
<returntype><function><argtype><mixed/></argtype><returntype><int/></returntype></function></returntype>
</method>
<method name='query_read_oob_callback'>
<arguments/>
<returntype><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></returntype>
</method>
<method name='query_write_oob_callback'>
<arguments/>
<returntype><function><argtype><mixed/></argtype><returntype><int/></returntype></function></returntype>
</method>
<method name='query_close_callback'>
<arguments/>
<returntype><function><argtype><mixed/></argtype><returntype><int/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_id' homogen-type='method'><doc><text><p>This function sets the <tt>id</tt> of this file. The <tt>id</tt> is mainly
 used as an identifier that is sent as the first argument to all
 callbacks. The default <tt>id</tt> is <expr>0</expr> (zero). Another possible
 use of the <tt>id</tt> is to hold all data related to this file in a
 mapping or array.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_id'>query_id()</ref></p>
</text></group></doc>
<method name='set_id'><source-position first-line='1139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='id'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_id' homogen-type='method'><doc><text><p>This function returns the <tt>id</tt> that has been set with <ref resolved='predef::Stdio.File.set_id'>set_id()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_id'>set_id()</ref></p>
</text></group></doc>
<method name='query_id'><source-position first-line='1146' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><text><p>This function sets a stream to nonblocking mode and installs the
 specified callbacks. See the <expr>set_*_callback</expr> functions
 for details about them. If no arguments are given, the callbacks
 will be cleared.</p>
</text><group><note/><text><p>As opposed to calling the set callback functions separately,
 this function will set all the callbacks and nonblocking mode
 atomically so that no callback gets called in between. That
 avoids races in case the backend is executed by another thread.</p>
</text></group><group><note/><text><p>Out-of-band data was not be supported on Pike 0.5 and earlier,
   and not on Pike 0.6 through 7.4 if they were compiled with the
   option <tt>'--without-oob'</tt>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_blocking'>set_blocking()</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_read_callback()</ref>,
 <ref resolved='predef::Stdio.File.set_read_callback'>set_write_callback()</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_read_oob_callback()</ref>,
 <ref resolved='predef::Stdio.File.set_read_callback'>set_write_oob_callback()</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_close_callback()</ref>
 <ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>set_nonblocking_keep_callbacks()</ref>,
 <ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>set_blocking_keep_callbacks()</ref></p>
</text></group></doc>
<method name='set_nonblocking'>
<arguments><argument name='read_callback'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></type></argument><argument name='write_callback'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument><argument name='close_callback'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_nonblocking'>
<arguments><argument name='read_callback'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></type></argument><argument name='write_callback'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument><argument name='close_callback'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument><argument name='read_oob_callback'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><int/></returntype></function></type></argument><argument name='write_oob_callback'><type><function><argtype><mixed/></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_nonblocking'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><text><p>This function clears all callbacks and sets a stream to blocking
 mode. i.e. reading, writing and closing will wait until data has
 been transferred before returning.</p>
</text><group><note/><text><p>The callbacks are cleared and blocking mode is set in one atomic
 operation, so no callback gets called in between if the backend
 is running in another thread.</p>
<p> Even so, if the stream is in callback mode (i.e. if any
 callbacks are installed) then only the backend thread can use
 this function reliably; it might otherwise already be running in
 a callback which is about to call e.g. <ref resolved='predef::Stdio.File.write'>write</ref> when the stream
 becomes blocking.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>, <ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>set_nonblocking_keep_callbacks()</ref>,
 <ref resolved='predef::Stdio.File.set_nonblocking_keep_callbacks'>set_blocking_keep_callbacks()</ref></p>
</text></group></doc>
<method name='set_blocking'><source-position first-line='1231' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Toggle between blocking and nonblocking,
    without changing the callbacks.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>, <ref resolved='predef::Stdio.File.set_blocking'>set_blocking()</ref></p>
</text></group></doc>
<method name='set_nonblocking_keep_callbacks'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='set_blocking_keep_callbacks'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Gets/sets term attributes. The returned value/the <ref resolved='predef::Stdio.File.tcgetattr.attr'>attr</ref> parameter
 is a mapping on the form</p>
<mapping><group><member><type><int><min>-1</min><max/></int></type><index>"ispeed"</index></member><text><p>In baud rate.</p>
</text></group><group><member><type><int><min>-1</min><max/></int></type><index>"ospeed"</index></member><text><p>Out baud rate.</p>
</text></group><group><member><type><or><int><min>-1</min><max>-1</max></int><int><min>5</min><max>8</max></int></or></type><index>"csize"</index></member><text><p>Character size.</p>
</text></group><group><member><type><int/></type><index>"rows"</index></member><text><p>Terminal rows.</p>
</text></group><group><member><type><int/></type><index>"columns"</index></member><text><p>Terminal columns.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>flag_name</index></member><text><p>The value of a named flag. The flag name is
     the string describing the termios flags (IGNBRK, BRKINT,
     IGNPAR, PARMRK, INPCK, ISTRIP, INLCR, IGNCR, ICRNL, IUCLC,
     IXON, IXANY, IXOFF, IMAXBEL, OPOST, OLCUC, ONLCR, OCRNL,
     ONOCR, ONLRET, OFILL, OFDEL, OXTABS, ONOEOT, CSTOPB, CREAD,
     PARENB, PARODD, HUPCL, CLOCAL, CRTSCTS, ISIG, ICANON, XCASE,
     ECHO, ECHOE, ECHOK, ECHONL, ECHOCTL, ECHOPRT, ECHOKE, FLUSHO,
     NOFLSH, TOSTOP, PENDIN). See the manpage for termios or
     other documentation for more information. All flags are not
     available on all platforms.</p>
</text></group><group><member><type><int><min>0</min><max>255</max></int></type><index>character_name</index></member><text><p>Sets the value of a control character (VINTR, VQUIT, VERASE,
     VKILL, VEOF, VTIME, VMIN, VSWTC, VSTART, VSTOP, VSUSP, VEOL,
     VREPRINT, VDISCARD, VWERASE, VLNEXT, VEOL2). All control
     characters are not available on all platforms.</p>
</text></group></mapping><p>Negative values are not allowed as indata, but might appear in the
 result from <ref resolved='predef::Stdio.File.tcgetattr'>tcgetattr</ref> when the actual value is unknown. <ref resolved='predef::Stdio.File.tcgetattr'>tcsetattr</ref>
 returns 0 if failed.</p>
<p> The argument <ref resolved='predef::Stdio.File.tcgetattr.when'>when</ref> to <ref resolved='predef::Stdio.File.tcgetattr'>tcsetattr</ref> describes when the
 changes are to take effect:</p>
<string><group><value>"TCSANOW"</value><text><p>The change occurs immediately (default).</p>
</text></group><group><value>"TCSADRAIN"</value><text><p>The change occurs after all output has been written.</p>
</text></group><group><value>"TCSAFLUSH"</value><text><p>The change occurs after all output has been written,
     and empties input buffers.</p>
</text></group></string>
</text><group><example/><text><p>// setting the terminal in raw mode:
   Stdio.stdin-&gt;tcsetattr((["ECHO":0,"ICANON":0,"VMIN":0,"VTIME":0]));</p>
</text></group><group><note/><text><p>Unknown flags are ignored by <ref resolved='predef::Stdio.File.tcgetattr'>tcsetattr()</ref>. <ref resolved='predef::Stdio.File.tcgetattr'>tcsetattr</ref> always
   changes the attribute, so only include attributes that actually
   should be altered in the attribute mapping.</p>
</text></group><group><bugs/><text><p>Terminal rows and columns setting by <ref resolved='predef::Stdio.File.tcgetattr'>tcsetattr()</ref> is not
   currently supported.</p>
</text></group></doc>
<method name='tcgetattr'>
<arguments/>
<returntype><mapping/></returntype>
</method>
<method name='tcsetattr'>
<arguments><argument name='attr'><type><mapping/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='tcsetattr'>
<arguments><argument name='attr'><type><mapping/></type></argument><argument name='when'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read data from a file or a stream.</p>
<p> Attempts to read <ref resolved='predef::Stdio.File.read.len'>len</ref> bytes from the file, and return it as a
 string. Less than <ref resolved='predef::Stdio.File.read.len'>len</ref> bytes can be returned if:</p>
<ul><group><item/><text><p>end-of-file is encountered for a normal file, or</p>
</text></group><group><item/><text><p>it's a stream that has been closed from the other end, or</p>
</text></group><group><item/><text><p>it's a stream in nonblocking mode, or</p>
</text></group><group><item/><text><p>it's a stream and <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> is set, or</p>
</text></group><group><item/><text><p><ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> isn't set and an error occurred (see below).</p>
</text></group></ul><p>If <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> is nonzero, <ref resolved='predef::Stdio.File.read'>read()</ref> will not try its best to read
 as many bytes as you have asked for, but will merely return as
 much as the system read function will return. This mainly useful
 with stream devices which can return exactly one row or packet at
 a time. If <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> is used in blocking mode, <ref resolved='predef::Stdio.File.read'>read()</ref> will
 only block if there's no data at all available.</p>
<p> If something goes wrong and <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> is set, zero will be
 returned. If something goes wrong and <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> is zero or left
 out, then either zero or a string shorter than <ref resolved='predef::Stdio.File.read.len'>len</ref> is returned.
 If the problem persists then a later call to <ref resolved='predef::Stdio.File.read'>read()</ref> will fail
 and return zero, however.</p>
<p> If everything went fine, a call to <ref resolved='predef::Stdio.File.errno'>errno()</ref> directly afterwards
 will return zero. That includes an end due to end-of-file or
 remote close.</p>
<p> If no arguments are given, <ref resolved='predef::Stdio.File.read'>read()</ref> will read to the
 end of the file or stream.</p>
</text><group><note/><text><p>It's not necessary to set <ref resolved='predef::Stdio.File.read.not_all'>not_all</ref> to avoid blocking reading
 when nonblocking mode is used.</p>
</text></group><group><note/><text><p>When at the end of a file or stream, repeated calls to <ref resolved='predef::Stdio.File.read'>read()</ref>
 will return the empty string since it's not considered an error.
 The empty string is never returned in other cases, unless
 nonblocking mode is used or <ref resolved='predef::Stdio.File.read.len'>len</ref> is zero.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.read_oob'>read_oob()</ref>, <ref resolved='predef::Stdio.File.write'>write()</ref></p>
</text></group></doc>
<method name='read'>
<arguments/>
<returntype><string/></returntype>
</method>
<method name='read'>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='read'>
<arguments><argument name='len'><type><int/></type></argument><argument name='not_all'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><text><p>Check if there is data available to read,
 or wait some time for available data to read.</p>
<p> Returns <expr>1</expr> if there is data available to read,
 <expr>0</expr> (zero) if there is no data available, and
 <expr>-1</expr> if something went wrong.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.errno'>errno()</ref>, <ref resolved='predef::Stdio.File.read'>read()</ref></p>
</text></group><group><note/><text><p>The function may be interrupted prematurely
    of the timeout (due to signals); 
    check the timing manually if this is imporant.</p>
</text></group></doc>
<method name='peek'>
<arguments/>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
<method name='peek'>
<arguments><argument name='timeout'><type><or><int/><float/></or></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_oob' homogen-type='method'><doc><text><p>Attempts to read <ref resolved='predef::Stdio.File.read_oob.len'>len</ref> bytes of out-of-band data from the stream,
 and returns it as a string. Less than <ref resolved='predef::Stdio.File.read_oob.len'>len</ref> bytes can be returned
 if:</p>
<ul><group><item/><text><p>the stream has been closed from the other end, or</p>
</text></group><group><item/><text><p>nonblocking mode is used, or</p>
</text></group><group><item/><text><p><ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> is set, or</p>
</text></group><group><item/><text><p><ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> isn't set and an error occurred (see below).</p>
</text></group></ul><p>If <ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> is nonzero, <ref resolved='predef::Stdio.File.read_oob'>read_oob()</ref> will only return as many
 bytes of out-of-band data as are currently available.</p>
<p> If something goes wrong and <ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> is set, zero will be
 returned. If something goes wrong and <ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> is zero or left
 out, then either zero or a string shorter than <ref resolved='predef::Stdio.File.read_oob.len'>len</ref> is returned.
 If the problem persists then a later call to <ref resolved='predef::Stdio.File.read_oob'>read_oob()</ref> will
 fail and return zero, however.</p>
<p> If everything went fine, a call to <ref resolved='predef::Stdio.File.errno'>errno()</ref> directly afterwards
 will return zero. That includes an end due to remote close.</p>
<p> If no arguments are given, <ref resolved='predef::Stdio.File.read_oob'>read_oob()</ref> will read to the end of
 the stream.</p>
</text><group><note/><text><p>Out-of-band data was not be supported on Pike 0.5 and earlier,
   and not on Pike 0.6 through 7.4 if they were compiled with the
   option <tt>'--without-oob'</tt>.</p>
</text></group><group><note/><text><p>It is not guaranteed that all out-of-band data sent from the other end
   will be received. Most streams only allow for a single byte of
   out-of-band data at a time.</p>
</text></group><group><note/><text><p>It's not necessary to set <ref resolved='predef::Stdio.File.read_oob.not_all'>not_all</ref> to avoid blocking reading
 when nonblocking mode is used.</p>
</text></group><group><note/><text><p>When at the end of a file or stream, repeated calls to <ref resolved='predef::Stdio.File.read'>read()</ref>
 will return the empty string since it's not considered an error.
 The empty string is never returned in other cases, unless
 nonblocking mode is used or <ref resolved='predef::Stdio.File.read_oob.len'>len</ref> is zero.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.read'>read()</ref>, <ref resolved='predef::Stdio.File.write_oob'>write_oob()</ref></p>
</text></group></doc>
<method name='read_oob'>
<arguments/>
<returntype><string/></returntype>
</method>
<method name='read_oob'>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='read_oob'>
<arguments><argument name='len'><type><int/></type></argument><argument name='not_all'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Write data to a file or a stream.</p>
<p> Writes <ref resolved='predef::Stdio.File.write.data'>data</ref> and returns the number of bytes that were
 actually written. It can be less than the size of the given data if</p>
<ul><group><item/><text><p>some data was written successfully and then something went
     wrong, or</p>
</text></group><group><item/><text><p>nonblocking mode is used and not all data could be written
     without blocking.</p>
</text></group></ul><p>-1 is returned if something went wrong and no bytes were written.
 If only some data was written due to an error and that error
 persists, then a later call to <ref resolved='predef::Stdio.File.write'>write()</ref> will fail and return -1.</p>
<p> If everything went fine, a call to <ref resolved='predef::Stdio.File.errno'>errno()</ref> directly afterwards
 will return zero.</p>
<p> If <ref resolved='predef::Stdio.File.write.data'>data</ref> is an array of strings, they will be written sequence.</p>
<p> If more than one argument is given, <ref resolved='predef::sprintf'>sprintf()</ref> will be used to
 format them using <ref resolved='predef::Stdio.File.write.format'>format</ref>. If <ref resolved='predef::Stdio.File.write.format'>format</ref> is an array, the strings
 in it are concatenated and the result is used as format string.</p>
</text><group><note/><text><p>Writing of wide strings is not supported. You have to encode the
   data somehow, e.g. with <ref resolved='predef::string_to_utf8'>string_to_utf8</ref> or with one of the
   charsets supported by <ref resolved='predef::Locale.Charset.encoder'>Locale.Charset.encoder</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.read'>read()</ref>, <ref resolved='predef::Stdio.File.write_oob'>write_oob()</ref></p>
</text></group></doc>
<method name='write'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='write'>
<arguments><argument name='format'><type><string/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='write'>
<arguments><argument name='data'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='write'>
<arguments><argument name='format'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_oob' homogen-type='method'><doc><text><p>Write out-of-band data to a stream.</p>
<p> Writes out-of-band data to a stream and returns how many bytes
 that were actually written. It can be less than the size of the
 given data if some data was written successfully and then
 something went wrong.</p>
<p> -1 is returned if something went wrong and no bytes were written.
 If only some data was written due to an error and that error
 persists, then a later call to <ref resolved='predef::Stdio.File.write_oob'>write_oob()</ref> will fail and return -1.</p>
<p> If everything went fine, a call to <ref resolved='predef::Stdio.File.errno'>errno()</ref> directly afterwards
 will return zero.</p>
<p> If more than one argument is given, <ref resolved='predef::sprintf'>sprintf()</ref> will be
 used to format them.</p>
</text><group><note/><text><p>Out-of-band data was not be supported on Pike 0.5 and earlier,
   and not on Pike 0.6 through 7.4 if they were compiled with the
   option <tt>'--without-oob'</tt>.</p>
</text></group><group><note/><text><p>It is not guaranteed that all out-of-band data sent from the other end
   will be received. Most streams only allow for a single byte of
   out-of-band data at a time. Some streams will send the rest of the data
   as ordinary data.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.read_oob'>read_oob()</ref>, <ref resolved='predef::Stdio.File.write'>write()</ref></p>
</text></group></doc>
<method name='write_oob'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='write_oob'>
<arguments><argument name='format'><type><string/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='grantpt' homogen-type='method'><doc><text><p>If this file has been created by calling <ref resolved='predef::Stdio.File.openpt'>openpt()</ref>, return the
  filename of the associated pts-file. This function should only be
  called once.</p>
</text><group><note/><text><p>This function is only available on some platforms.</p>
</text></group></doc>
<method name='grantpt'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Close a file or stream.</p>
<p> If direction is not specified, both the read and the write direction
 will be closed. Otherwise only the directions specified will be closed.</p>
</text><group><returns/><text><p>Nonzero is returned if the file or stream wasn't open in the
 specified direction, zero otherwise.</p>
</text></group><group><throws/><text><p>An exception is thrown if an I/O error occurs.</p>
</text></group><group><note/><text><p><ref resolved='predef::Stdio.File.close'>close()</ref> has no effect if this file object has been associated
 with an already opened file, i.e. if <ref resolved='predef::Stdio.File.open'>open()</ref> was given an
 integer as the first argument.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open()</ref>, <ref resolved='predef::Stdio.File.open_socket'>open_socket()</ref></p>
</text></group></doc>
<method name='close'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='close'>
<arguments><argument name='direction'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open' homogen-type='method'><doc><text><p>Open a file, or use an existing fd.</p>
<p> If <ref resolved='predef::Stdio.File.open.filename'>filename</ref> is given, attempt to open the named file. If <ref resolved='predef::Stdio.File.open.fd'>fd</ref>
 is given instead, it should be the file descriptor for an already
 opened file, which will then be used by this object.</p>
<p> <ref resolved='predef::Stdio.File.open.mode'>mode</ref> describes how the file will be opened. It's a
 case-insensitive string consisting of one or more of the following
 letters:</p>
<dl><group><item name='r'/><text><p>Open for reading.</p>
</text></group><group><item name='w'/><text><p>Open for writing.</p>
</text></group><group><item name='a'/><text><p>Append new data to the end.</p>
</text></group><group><item name='c'/><text><p>Create the file if it doesn't exist already.</p>
</text></group><group><item name='t'/><text><p>Truncate the file to zero length if it already contains data.
     Use only together with <expr>"w"</expr>.</p>
</text></group><group><item name='x'/><text><p>Open exclusively - the open will fail if the file already
     exists. Use only together with <expr>"c"</expr>. Note that it's not
     safe to assume that this is atomic on some systems.</p>
</text></group></dl><p><ref resolved='predef::Stdio.File.open.access'>access</ref> specifies the permissions to use if a new file is
 created. It is a UNIX style permission bitfield:</p>
<dl><group><item name='0400'/><text><p>User has read permission.</p>
</text></group><group><item name='0200'/><text><p>User has write permission.</p>
</text></group><group><item name='0100'/><text><p>User has execute permission.</p>
</text></group><group><item name='0040'/><text><p>Group has read permission.</p>
</text></group><group><item name='0020'/><text><p>Group has write permission.</p>
</text></group><group><item name='0010'/><text><p>Group has execute permission.</p>
</text></group><group><item name='0004'/><text><p>Others have read permission.</p>
</text></group><group><item name='0002'/><text><p>Others have write permission.</p>
</text></group><group><item name='0001'/><text><p>Others have execute permission.</p>
</text></group></dl><p>It's system dependent on which of these bits that are actually
 heeded. If <ref resolved='predef::Stdio.File.open.access'>access</ref> is not specified, it will default to
 <expr>00666</expr>, but note that on UNIX systems it's masked with the
 process umask before use.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.close'>close()</ref></p>
</text></group></doc>
<method name='open'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='open'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument><argument name='access'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='open'>
<arguments><argument name='fd'><type><int/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='openpt' homogen-type='method'><doc><text><p>Open the master end of a pseudo-terminal pair.</p>
</text><group><returns/><text><p>This function returns <expr>1</expr> for success, <expr>0</expr> otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.grantpt'>grantpt()</ref></p>
</text></group></doc>
<method name='openpt'>
<arguments><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sync' homogen-type='method'><doc><text><p>Flush buffers to disk.</p>
</text><group><returns/><text><p>Returns <expr>0</expr> (zero) and sets errno on failure.</p>
<p>   Returns <expr>1</expr> on success.</p>
</text></group></doc>
<method name='sync'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><text><p>Seek to a specified offset in a file.</p>
<p> If <ref resolved='predef::Stdio.File.seek.mult'>mult</ref> or <ref resolved='predef::Stdio.File.seek.add'>add</ref> are specified, <ref resolved='predef::Stdio.File.seek.pos'>pos</ref> will be calculated as
 <expr><ref resolved='predef::Stdio.File.seek.pos'>pos</ref> = <ref resolved='predef::Stdio.File.seek.unit'>unit</ref>*<ref resolved='predef::Stdio.File.seek.mult'>mult</ref> + <ref resolved='predef::Stdio.File.seek.add'>add</ref></expr>.</p>
<p> If <ref resolved='predef::Stdio.File.seek.pos'>pos</ref> is negative it will be relative to the start of the file,
 otherwise it will be an absolute offset from the start of the file.</p>
</text><group><returns/><text><p>Returns the new offset, or <expr>-1</expr> on failure.</p>
</text></group><group><note/><text><p>The arguments <ref resolved='predef::Stdio.File.seek.mult'>mult</ref> and <ref resolved='predef::Stdio.File.seek.add'>add</ref> are considered obsolete, and
   should not be used.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.tell'>tell()</ref></p>
</text></group></doc>
<method name='seek'>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='seek'>
<arguments><argument name='unit'><type><int/></type></argument><argument name='mult'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='seek'>
<arguments><argument name='unit'><type><int/></type></argument><argument name='mult'><type><int/></type></argument><argument name='add'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tell' homogen-type='method'><doc><text><p>Returns the current offset in the file.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.seek'>seek()</ref></p>
</text></group></doc>
<method name='tell'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='truncate' homogen-type='method'><doc><text><p>Truncate a file.</p>
<p> Truncates the file to the specified length <ref resolved='predef::Stdio.File.truncate.length'>length</ref>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, and <expr>0</expr> (zero) on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open()</ref></p>
</text></group></doc>
<method name='truncate'>
<arguments><argument name='length'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='stat' homogen-type='method'><doc><text><p>Get status for an open file.</p>
<p> This function returns the same information as the function <ref resolved='predef::file_stat'>file_stat()</ref>,
 but for the file it is called in. If file is not an open file, <expr>0</expr>
 (zero) will be returned. Zero is also returned if file is a pipe or
 socket.</p>
</text><group><returns/><text><p>See <ref resolved='predef::file_stat'>file_stat()</ref> for a description of the return value.</p>
</text></group><group><note/><text><p>Prior to Pike 7.1 this function returned an array(int).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='stat'>
<arguments/>
<returntype><object resolved='predef::Stdio.Stat'>Stat</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>Return the errno for the latest failed file operation.</p>
</text></doc>
<method name='errno'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mode' homogen-type='method'><doc><text><p>Returns the open mode for the file.</p>
<int><group><value>0x1000</value><text><p>FILE_READ</p>
</text></group><group><value>0x2000</value><text><p>FILE_WRITE</p>
</text></group><group><value>0x4000</value><text><p>FILE_APPEND</p>
</text></group><group><value>0x8000</value><text><p>FILE_CREATE</p>
</text></group><group><value>0x0100</value><text><p>FILE_TRUNC</p>
</text></group><group><value>0x0200</value><text><p>FILE_EXCLUSIVE</p>
</text></group><group><value>0x0400</value><text><p>FILE_NONBLOCKING</p>
</text></group><group><value>0x0800</value><text><p>FILE_SET_CLOSE_ON_EXEC</p>
</text></group><group><value>0x0001</value><text><p>FILE_HAS_INTERNAL_REF</p>
</text></group><group><value>0x0002</value><text><p>FILE_NO_CLOSE_ON_DESTRUCT</p>
</text></group><group><value>0x0004</value><text><p>FILE_LOCK_FD</p>
</text></group><group><value>0x0010</value><text><p>FILE_NOT_OPENED</p>
</text></group></int>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open()</ref></p>
</text></group></doc>
<method name='mode'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_backend' homogen-type='method'><doc><text><p>Set the backend used for the callbacks.</p>
</text><group><note/><text><p>The backend keeps a reference to this object only when it is in
 callback mode. So if this object hasn't got any active callbacks
 and it runs out of other references, it will still be destructed
 quickly (after closing, if necessary).</p>
<p> Also, this object does not keep a reference to the backend.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_backend'>query_backend</ref>, <ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_read_callback</ref>, <ref resolved='predef::Stdio.File.set_read_callback'>set_write_callback</ref></p>
</text></group></doc>
<method name='set_backend'>
<arguments><argument name='backend'><type><object resolved='predef::Pike.Backend'>Pike.Backend</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_backend' homogen-type='method'><doc><text><p>Return the backend used for the callbacks.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_backend'>set_backend</ref></p>
</text></group></doc>
<method name='query_backend'>
<arguments/>
<returntype><object resolved='predef::Pike.Backend'>Pike.Backend</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><text><p>Sets this file to nonblocking operation.</p>
</text><group><note/><text><p>Nonblocking operation is not supported on all Stdio.File objects.
   Notably it is not guaranteed to be supported on objects returned
   by <ref resolved='predef::Stdio.File.pipe'>pipe()</ref> unless <ref resolved='predef::Stdio.PROP_NONBLOCK'>PROP_NONBLOCK</ref> was specified in the call
   to <ref resolved='predef::Stdio.File.pipe'>pipe()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_blocking'>set_blocking()</ref></p>
</text></group></doc>
<method name='set_nonblocking'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><text><p>Sets this file to blocking operation.</p>
<p> This is the inverse operation of <ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>set_nonblocking()</ref></p>
</text></group></doc>
<method name='set_blocking'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_close_on_exec' homogen-type='method'><doc><text><p>Marks the file as to be closed in spawned processes.</p>
<p> This function determines whether this file will be closed when
 calling exec().</p>
<p> Default is that the file WILL be closed on exec except for
 stdin, stdout and stderr.</p>
</text><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref>, <ref>exec()</ref></p>
</text></group></doc>
<method name='set_close_on_exec'>
<arguments><argument name='yes_no'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_open' homogen-type='method'><doc><text><p>Returns true if the file is open.</p>
</text><group><note/><text><p>Most methods can't be called for a file descriptor that isn't
 open. Notable exceptions <ref resolved='predef::Stdio.File.errno'>errno</ref>, <ref resolved='predef::Stdio.File.mode'>mode</ref>, and the set and query
 functions for callbacks and backend.</p>
</text></group></doc>
<method name='is_open'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_fd' homogen-type='method'><doc><text><p>Returns the file descriptor number associated with this object.</p>
</text></doc>
<method name='query_fd'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='release_fd' homogen-type='method'><doc><text><p>Returns the file descriptor number associated with this object, in
 addition to releasing it so that this object behaves as if closed.
 Other settings like callbacks and backend remain intact.
 <ref resolved='predef::Stdio.File.take_fd'>take_fd</ref> can later be used to reinstate the file descriptor so
 that the state is restored.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.query_fd'>query_fd()</ref>, <ref resolved='predef::Stdio.File.take_fd'>take_fd()</ref></p>
</text></group></doc>
<method name='release_fd'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='take_fd' homogen-type='method'><doc><text><p>Rehooks the given file descriptor number to be associated with
 this object. As opposed to using <ref resolved='predef::Stdio.File.open'>open</ref> with a file descriptor
 number, it will be closed by this object upon destruct or when
 <ref resolved='predef::Stdio.File.close'>close</ref> is called.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.release_fd'>release_fd()</ref></p>
</text></group></doc>
<method name='take_fd'>
<arguments><argument name='fd'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_buffer' homogen-type='method'><doc><text><p>Set internal socket buffer.</p>
<p> This function sets the internal buffer size of a socket or stream.</p>
<p> The second argument allows you to set the read or write buffer by
 specifying <expr>"r"</expr> or <expr>"w"</expr>.</p>
</text><group><note/><text><p>It is not guaranteed that this function actually does anything,
   but it certainly helps to increase data transfer speed when it does.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open_socket'>open_socket()</ref>, <ref>accept()</ref></p>
</text></group></doc>
<method name='set_buffer'>
<arguments><argument name='bufsize'><type><int/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_buffer'>
<arguments><argument name='bufsize'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pipe' homogen-type='method'><doc/>
<method name='pipe'>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
<method name='pipe'>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='dup2' homogen-type='method'><doc><text><p>Duplicate a file over another.</p>
<p> This function works similarly to <ref resolved='predef::Stdio.File.assign'>assign()</ref>, but instead of making
 the argument a reference to the same file, it creates a new file
 with the same properties and places it in the argument.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.assign'>assign()</ref>, <ref resolved='predef::Stdio.File.dup'>dup()</ref></p>
</text></group></doc>
<method name='dup2'>
<arguments><argument name='to'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='dup' homogen-type='method'><doc/>
<method name='dup'>
<arguments/>
<returntype><object resolved='predef::Stdio.Fd'>Stdio.Fd</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='open_socket' homogen-type='method'><doc/>
<method name='open_socket'>
<arguments><argument name='port'><type><or><int/><void/></or></type></argument><argument name='addr'><type><or><string/><void/></or></type></argument><argument name='family'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_keepalive' homogen-type='method'><doc/>
<method name='set_keepalive'>
<arguments><argument name='on_off'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect_unix' homogen-type='method'><doc><text><p>Open a UNIX domain socket connection to the specified destination.</p>
<p>   In nonblocking mode, success is indicated with the write-callback,
   and failure with the close-callback or the read_oob-callback.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, and <expr>0</expr> on failure.</p>
</text></group><group><note/><text><p>In nonblocking mode <expr>0</expr> (zero) may be returned and <ref resolved='predef::Stdio.File.errno'>errno()</ref> set
   to <tt>EWOULDBLOCK</tt> or <tt>WSAEWOULDBLOCK</tt>. This should not be regarded
   as a connection failure.</p>
</text></group></doc>
<method name='connect_unix'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>Open a TCP/IP connection to the specified destination.</p>
<p>   In nonblocking mode, success is indicated with the write-callback,
   and failure with the close-callback or the read_oob-callback.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, and <expr>0</expr> on failure.</p>
</text></group><group><note/><text><p>In nonblocking mode <expr>0</expr> (zero) may be returned and <ref resolved='predef::Stdio.File.errno'>errno()</ref> set
   to <tt>EWOULDBLOCK</tt> or <tt>WSAEWOULDBLOCK</tt>. This should not be regarded
   as a connection failure.</p>
</text></group></doc>
<method name='connect'>
<arguments><argument name='dest_addr'><type><string/></type></argument><argument name='dest_port'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='connect'>
<arguments><argument name='dest_addr'><type><string/></type></argument><argument name='dest_port'><type><int/></type></argument><argument name='src_addr'><type><string/></type></argument><argument name='src_port'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_address' homogen-type='method'><doc><text><p>Get address and port of a socket end-point.</p>
</text><group><param name='local'/><text><p>If the argument <ref resolved='predef::Stdio.File.query_address.local'>local</ref> is not specified, or is <expr>0</expr> (zero),
   the remote end-point will be returned. Otherwise, if <ref resolved='predef::Stdio.File.query_address.local'>local</ref> is
   <expr>1</expr>, the local end-point will be returned.</p>
</text></group><group><returns/><text><p>This function returns the address and port of a socket end-point
   on the form <expr>"x.x.x.x port"</expr> (IPv4) or
   <expr>"x:x:x:x:x:x:x:x port"</expr> (IPv6).</p>
<p>   If this file is not a socket, is not connected, or some other
   error occurrs, <expr>0</expr> (zero) will be returned.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.connect'>connect()</ref></p>
</text></group></doc>
<method name='query_address'>
<arguments/>
<returntype><string/></returntype>
</method>
<method name='query_address'>
<arguments><argument name='local'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;&lt;' homogen-type='method'><doc><text><p>Write some data to a file.</p>
<p> If <ref resolved='predef::Stdio.File.`&lt;&lt;.data'>data</ref> is not a string, it will be casted to string, and then
 written to the file.</p>
</text><group><note/><text><p>Throws an error if not all data could be written.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.write'>write()</ref></p>
</text></group></doc>
<method name='`&lt;&lt;'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
<method name='`&lt;&lt;'>
<arguments><argument name='data'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>See <ref resolved='predef::Stdio.File.open'>open()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>open()</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument><argument name='access'><type><object>in</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='fd'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='fd'><type><int/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='proxy' homogen-type='method'><doc><text><p>Starts a thread that asynchronously copies data from <ref resolved='predef::Stdio.File.proxy.from'>from</ref>
 to this file.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.sendfile'>Stdio.sendfile()</ref></p>
</text></group></doc>
<method name='proxy'>
<arguments><argument name='from'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='lock' homogen-type='method'><doc><text><p>Makes an exclusive file lock on this file.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.trylock'>trylock()</ref></p>
</text></group></doc>
<method name='lock'>
<arguments/>
<returntype><object>Stdio.FileLockKey</object></returntype>
</method>
<method name='lock'>
<arguments><argument name='is_recursive'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><object>Stdio.FileLockKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='trylock' homogen-type='method'><doc><text><p>Attempts to place a file lock on this file.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.lock'>lock()</ref></p>
</text></group></doc>
<method name='trylock'>
<arguments/>
<returntype><object>Stdio.FileLockKey</object></returntype>
</method>
<method name='trylock'>
<arguments><argument name='is_recursive'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><object>Stdio.FileLockKey</object></returntype>
</method>
</docgroup>
</class>

<class name='Port'><source-position first-line='1295' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>Handles listening to socket ports. Whenever you need a bound
 socket that is open and listens for connections you should
 use this program.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='_port'><doc>
</doc>
<inherit name='_port'><source-position first-line='1297' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname>_port</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>If the first argument is other than <expr>"stdin"</expr> the arguments will
 be passed to <ref resolved='predef::Stdio.Port.bind'>bind()</ref>.</p>
<p> When create is called with <expr>"stdin"</expr> as the first argument, a
 socket is created out of the file descriptor <expr>0</expr>. This is only
 useful if it actually is a socket to begin with.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Port.bind'>bind</ref></p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument><argument name='accept_callback'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument><argument name='accept_callback'><type><function/></type></argument><argument name='ip'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument><value>"stdin"</value></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument><value>"stdin"</value></argument><argument name='accept_callback'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='accept' homogen-type='method'><doc><text><p>This function completes a connection made from a remote machine to
 this port. It returns a two-way stream in the form of a clone of
 <ref resolved='predef::Stdio.File'>Stdio.File</ref>. The new file is by initially set to blocking mode.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File'>Stdio.File</ref></p>
</text></group></doc>
<method name='accept'><source-position first-line='1354' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_id' homogen-type='method'><doc><text><p>This function sets the id used for accept_callback by this port.
 The default id is <ref resolved='predef::this_object'>this_object()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Port.query_id'>query_id</ref></p>
</text></group></doc>
<method name='set_id'>
<arguments><argument name='id'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_id' homogen-type='method'><doc><text><p>This function returns the id for this port. The id is normally the
 first argument to accept_callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Port.set_id'>set_id</ref></p>
</text></group></doc>
<method name='query_id'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>If the last call done on this port failed, errno will return an
 integer describing what went wrong. Refer to your unix manual for
 further information.</p>
</text></doc>
<method name='errno'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='listen_fd' homogen-type='method'><doc><text><p>This function does the same as port-&gt;bind, except that instead
 of creating a new socket and bind it to a port, it expects that
 the filedescriptor 'fd' is an already open port.</p>
</text><group><note/><text><p>This function is only for the advanced user, and is generally used
  when sockets are passed to Pike at exec time.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Port.bind'>bind</ref>, <ref resolved='predef::Stdio.Port.accept'>accept</ref></p>
</text></group></doc>
<method name='listen_fd'>
<arguments><argument name='fd'><type><int/></type></argument><argument name='accept_callback'><type><or><void/><function/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bind' homogen-type='method'><doc><text><p>Bind opens a socket and binds it to port number on the local machine.
 If the second argument is present, the socket is set to nonblocking
 and the callback funcition is called whenever something connects to
 it. The callback will receive the id for this port as argument.
 Bind returns 1 on success, and zero on failiure.</p>
<p> If the optional argument 'ip' is given, bind will try to bind to
 this ip name or number.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Port.accept'>accept</ref></p>
</text></group></doc>
<method name='bind'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument><argument name='accept_callback'><type><or><void/><function/></or></type></argument><argument name='ip'><type><or><void/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bind_unix' homogen-type='method'><doc><text><p>Bind opens a Unix domain socket at the filesystem location path.
 If the second argument is present, the socket is set to nonblocking
 and the callback funcition is called whenever something connects to
 it. The callback will receive the id for this port as argument.</p>
</text><group><returns/><text><p>1 on success, and zero on failiure.</p>
</text></group><group><note/><text><p>this function is only available on systems that support Unix domain 
   sockets.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Port.accept'>accept</ref></p>
</text></group></doc>
<method name='bind_unix'>
<arguments><argument name='path'><type><string/></type></argument><argument name='accept_callback'><type><or><void/><function/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the socket.</p>
</text></doc>
<method name='close'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='accept' homogen-type='method'><doc/>
<method name='accept'>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_address' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='query_address'>
<arguments><argument name='arg1'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_backend' homogen-type='method'><doc><text><p>Set the backend used for the accept callback.</p>
</text><group><note/><text><p>The backend keeps a reference to this object as long as the port
 is accepting connections, but this object does not keep a
 reference to the backend.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Port.query_backend'>query_backend</ref></p>
</text></group></doc>
<method name='set_backend'>
<arguments><argument name='backend'><type><object resolved='predef::Pike.Backend'>Pike.Backend</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_backend' homogen-type='method'><doc><text><p>Return the backend used for the accept callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.Port.set_backend'>set_backend</ref></p>
</text></group></doc>
<method name='query_backend'>
<arguments/>
<returntype><object resolved='predef::Pike.Backend'>Pike.Backend</object></returntype>
</method>
</docgroup>
</class>

<class name='FILE'><source-position first-line='1406' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p><ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref> is a buffered version of <ref resolved='predef::Stdio.File'>Stdio.File</ref>, it inherits
 <ref resolved='predef::Stdio.File'>Stdio.File</ref> and has most of the functionality of <ref resolved='predef::Stdio.File'>Stdio.File</ref>.
 However, it has an input buffer that allows line-by-line input.</p>
<p> It also has support for automatic charset conversion for both input
 and output (see <ref resolved='predef::Stdio.FILE.set_charset'>Stdio.FILE()-&gt;set_charset()</ref>).</p>
</text><group><note/><text><p>The output part of <ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref> is currently not buffered.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='file'><doc>
</doc>
<inherit name='file'><source-position first-line='1409' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname resolved='predef::Stdio.File'>File</classname></inherit>
</docgroup>
<docgroup homogen-name='set_charset' homogen-type='method'><doc><text><p>Sets the input and output charset of this file to the specified
 <ref resolved='predef::Stdio.FILE.set_charset.charset'>charset</ref>.</p>
<p> The default charset is <tt>"ISO-8859-1"</tt>.</p>
</text></doc>
<method name='set_charset'><source-position first-line='1487' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='charset'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gets' homogen-type='method'><doc><text><p>Read one line of input with support for input conversion.</p>
</text><group><returns/><text><p>This function returns the line read if successful, and <expr>0</expr> if
 no more lines are available.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.FILE.ngets'>ngets()</ref>, <ref resolved='predef::Stdio.FILE.read'>read()</ref>, <ref resolved='predef::Stdio.FILE.line_iterator'>line_iterator()</ref>, <ref resolved='predef::Stdio.FILE.set_charset'>set_charset()</ref></p>
</text></group></doc>
<method name='gets'><source-position first-line='1522' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ngets' homogen-type='method'><doc><text><p>Get <ref resolved='predef::Stdio.FILE.ngets.n'>n</ref> lines.</p>
</text><group><param name='n'/><text><p>Number of lines to get, or all remaining if zero.</p>
</text></group></doc>
<method name='ngets'><source-position first-line='1579' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='n'><type><or><void/><int><min>1</min><max/></int></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='pipe' homogen-type='method'><doc><text><p>Same as <ref resolved='predef::Stdio.File.pipe'>Stdio.File()-&gt;pipe()</ref>.</p>
</text><group><note/><text><p>Returns an <ref resolved='predef::Stdio.File'>Stdio.File</ref> object, NOT a <ref resolved='predef::Stdio.FILE'>Stdio.FILE</ref> object.</p>
</text></group></doc>
<method name='pipe'><source-position first-line='1622' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='flags'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Write <ref resolved='predef::Stdio.FILE.write.what'>what</ref> with support for output_conversion.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.write'>Stdio.File()-&gt;write()</ref></p>
</text></group></doc>
<method name='write'><source-position first-line='1653' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='what'><type><or><array><valuetype><string/></valuetype></array><string/></or></type></argument><argument name='fmt'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='printf' homogen-type='method'><doc><text><p>This function does approximately the same as:
 <expr><ref resolved='predef::Stdio.FILE.write'>write</ref>(<ref resolved='predef::sprintf'>sprintf</ref>(<ref resolved='predef::Stdio.FILE.printf.format'>format</ref>,@<ref resolved='predef::Stdio.FILE.printf.data'>data</ref>))</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.FILE.write'>write()</ref>, <ref resolved='predef::sprintf'>sprintf()</ref></p>
</text></group></doc>
<method name='printf'><source-position first-line='1678' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='format'><type><string/></type></argument><argument name='data'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_get_iterator' homogen-type='method'><doc><text><p>Returns an iterator that will loop over the lines in this file.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.FILE.line_iterator'>line_iterator()</ref></p>
</text></group></doc>
<method name='_get_iterator'><source-position first-line='1692' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Stdio.FILE._get_iterator'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='line_iterator' homogen-type='method'><doc><text><p>Returns an iterator that will loop over the lines in this file. 
 If <ref resolved='predef::Stdio.FILE.line_iterator.trim'>trim</ref> is true, all <tt>'\r'</tt> characters will be removed
 from the input.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.FILE._get_iterator'>_get_iterator()</ref></p>
</text></group></doc>
<method name='line_iterator'><source-position first-line='1700' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='trim'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.FILE.line_iterator'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read <ref resolved='predef::Stdio.FILE.read.bytes'>bytes</ref> (wide-) characters with buffering and support for
 input conversion.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.File.read'>Stdio.File()-&gt;read()</ref>, <ref resolved='predef::Stdio.FILE.set_charset'>set_charset()</ref></p>
</text></group></doc>
<method name='read'><source-position first-line='1718' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='bytes'><type><or><int/><void/></or></type></argument><argument name='now'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ungets' homogen-type='method'><doc><text><p>This function puts a string back in the input buffer. The string
 can then be read with eg <ref resolved='predef::Stdio.FILE.read'>read()</ref>, <ref resolved='predef::Stdio.FILE.gets'>gets()</ref> or <ref resolved='predef::Stdio.FILE.getchar'>getchar()</ref>.</p>
</text><group><note/><text><p>The string must not contain line-feeds.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.FILE.read'>read()</ref>, <ref resolved='predef::Stdio.FILE.gets'>gets()</ref>, <ref resolved='predef::Stdio.FILE.getchar'>getchar()</ref></p>
</text></group></doc>
<method name='ungets'><source-position first-line='1759' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getchar' homogen-type='method'><doc><text><p>This function returns one character from the input stream.</p>
</text><group><returns/><text><p>Returns the ISO-10646 (Unicode) value of the character.</p>
</text></group><group><note/><text><p>Returns an <expr>int</expr> and not a <expr>string</expr> of length 1.</p>
</text></group></doc>
<method name='getchar'><source-position first-line='1778' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='UDP'><source-position first-line='2755' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><doc><text><p>UDP (User Datagram Protocol) handling.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='UDP'><doc>
</doc>
<inherit name='UDP'><source-position first-line='2757' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname>files.UDP</classname></inherit>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><text><p>Set this object to nonblocking mode.</p>
<p> If <ref resolved='predef::Stdio.UDP.set_nonblocking.read_cb'>read_cb</ref> and <ref resolved='predef::Stdio.UDP.set_nonblocking.extra_args'>extra_args</ref> are specified, they will be passed on
 to <ref resolved='predef::Stdio.UDP.set_read_callback'>set_read_callback()</ref>.</p>
</text><group><returns/><text><p>The called object.</p>
</text></group></doc>
<method name='set_nonblocking'>
<arguments/>
<returntype><object resolved='predef::Stdio.UDP'>UDP</object></returntype>
</method>
<method name='set_nonblocking'>
<arguments><argument name='read_cb'><type><function><argtype><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='extra_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP'>UDP</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_read_callback' homogen-type='method'><doc><text><p>The <ref resolved='predef::Stdio.UDP.set_read_callback.read_cb'>read_cb</ref> function will receive a mapping similar to the mapping
 returned by <ref resolved='predef::Stdio.UDP.read'>read()</ref>:</p>
<mapping><group><member><type><string/></type><index>"data"</index></member><text><p>Received data.</p>
</text></group><group><member><type><string/></type><index>"ip"</index></member><text><p>Data was sent from this IP.</p>
</text></group><group><member><type><int/></type><index>"port"</index></member><text><p>Data was sent from this port.</p>
</text></group></mapping>
</text><group><returns/><text><p>The called object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.UDP.read'>read()</ref></p>
</text></group></doc>
<method name='set_read_callback'>
<arguments><argument name='read_cb'><type><function><argtype><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></argtype><argtype><varargs><mixed/></varargs></argtype></function></type></argument><argument name='extra_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP'>UDP</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes an open UDP port.</p>
</text><group><note/><text><p>This method was introduced in Pike 7.5.</p>
</text></group></doc>
<method name='close'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='bind' homogen-type='method'><doc><text><p>Binds a port for recieving or transmitting UDP.</p>
</text></doc>
<method name='bind'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP.bind'/></returntype>
</method>
<method name='bind'>
<arguments><argument name='port'><type><or><int/><string/></or></type></argument><argument name='address'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP.bind'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable_broadcast' homogen-type='method'><doc><text><p>Set the broadcast flag. 
 If enabled then sockets receive packets sent  to  a  broadcast
 address  and  they are allowed to send packets to a
 broadcast address.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> (zero) otherwise.</p>
</text></group><group><note/><text><p>This is normally only avalable to root users.</p>
</text></group></doc>
<method name='enable_broadcast'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='wait' homogen-type='method'><doc><text><p>Check for data and wait max. <ref resolved='predef::Stdio.UDP.wait.timeout'>timeout</ref> seconds.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if data are ready, <expr>0</expr> (zero) otherwise.</p>
</text></group></doc>
<method name='wait'>
<arguments><argument name='timeout'><type><or><int/><float/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read from the UDP socket.</p>
<p> Flag <ref resolved='predef::Stdio.UDP.read.flag'>flag</ref> is a bitfield, 1 for out of band data and 2 for peek</p>
</text><group><returns/><text><p>mapping(string:int|string) in the form 
	([
	   "data" : string received data
	   "ip" : string   received from this ip
	   "port" : int    ...and this port
	])</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.UDP.set_read_callback'>set_read_callback()</ref></p>
</text></group></doc>
<method name='read'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></returntype>
</method>
<method name='read'>
<arguments><argument name='flag'><type><int/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='send' homogen-type='method'><doc><text><p>Send data to a UDP socket. The recepient address will be <ref resolved='predef::Stdio.UDP.send.to'>to</ref>
 and port will be <ref resolved='predef::Stdio.UDP.send.port'>port</ref>.</p>
<p> Flag <ref>flag</ref> is a bitfield, 1 for out of band data and
 2 for don't route flag.</p>
</text><group><returns/><text><p>The number of bytes that were actually written.</p>
</text></group></doc>
<method name='send'>
<arguments><argument name='to'><type><string/></type></argument><argument name='port'><type><or><int/><string/></or></type></argument><argument name='message'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='send'>
<arguments><argument name='to'><type><string/></type></argument><argument name='port'><type><or><int/><string/></or></type></argument><argument name='message'><type><string/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><text><p>Sets this object to be blocking.</p>
</text></doc>
<method name='set_blocking'>
<arguments/>
<returntype><object resolved='predef::Stdio.UDP.set_blocking'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>Establish an UDP connection.</p>
<p>   This function connects an UDP socket previously created with
   <ref resolved='predef::Stdio.UDP'>Stdio.UDP()</ref> to a remote socket. The <ref resolved='predef::Stdio.UDP.connect.address'>address</ref> is the IP name or
   number for the remote machine.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> (zero) otherwise.</p>
</text></group><group><note/><text><p>If the socket is in nonblocking mode, you have to wait
   for a write or close callback before you know if the connection
   failed or not.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.UDP.bind'>bind()</ref>, <ref resolved='predef::Stdio.UDP.query_address'>query_address()</ref></p>
</text></group></doc>
<method name='connect'>
<arguments><argument name='address'><type><string/></type></argument><argument name='port'><type><or><int/><string/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_address' homogen-type='method'><doc><text><p>Returns the local address of a socket on the form "x.x.x.x port".
 If this file is not a socket, not connected or some other error occurs,
 zero is returned.</p>
</text></doc>
<method name='query_address'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_backend' homogen-type='method'><doc><text><p>Set the backend used for the read callback.</p>
</text><group><note/><text><p>The backend keeps a reference to this object as long as there can
 be calls to the read callback, but this object does not keep a
 reference to the backend.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.UDP.query_backend'>query_backend</ref></p>
</text></group></doc>
<method name='set_backend'>
<arguments><argument name='backend'><type><object resolved='predef::Pike.Backend'>Pike.Backend</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_backend' homogen-type='method'><doc><text><p>Return the backend used for the read callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.UDP.set_backend'>set_backend</ref></p>
</text></group></doc>
<method name='query_backend'>
<arguments/>
<returntype><object resolved='predef::Pike.Backend'>Pike.Backend</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>Returns the error code for the last command on this object.
 Error code is normally cleared when a command is successful.</p>
</text></doc>
<method name='errno'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_type' homogen-type='method'><doc><text><p>Sets socket type and protocol family.</p>
</text></doc>
<method name='set_type'>
<arguments><argument name='sock_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP.set_type'/></returntype>
</method>
<method name='set_type'>
<arguments><argument name='sock_type'><type><int/></type></argument><argument name='family'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.UDP.set_type'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_type' homogen-type='method'><doc><text><p>Returns socket type and protocol family.</p>
</text></doc>
<method name='get_type'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='MSG_OOB' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='MSG_OOB'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/udp.c' first-line='914'/></constant>
</docgroup>
<docgroup homogen-name='MSG_PEEK' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='MSG_PEEK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/udp.c' first-line='919'/></constant>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='files'><doc>
</doc>
<inherit name='files'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><classname>files</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='stderr'><doc><text><p>An instance of <tt>FILE("stderr")</tt>, the standard error stream. Use this
 when you want to output error messages.</p>
</text><group><seealso/><text><p><ref resolved='predef::werror'>predef::werror()</ref></p>
</text></group></doc>
<variable name='stderr'><source-position first-line='1372' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><type><object resolved='predef::Stdio.File'>File</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='stdout'><doc><text><p>An instance of <tt>FILE("stdout")</tt>, the standatd output stream. Use this
 when you want to write anything to the standard output.</p>
</text><group><seealso/><text><p><ref resolved='predef::write'>predef::write()</ref></p>
</text></group></doc>
<variable name='stdout'><source-position first-line='1379' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><type><object resolved='predef::Stdio.File'>File</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='stdin'><doc><text><p>An instance of <tt>FILE("stdin")</tt>, the standard input stream. Use this
 when you want to read anything from the standard input.
 This example will read lines from standard input for as long as there
 are more lines to read. Each line will then be written to stdout together
 with the line number. We could use <ref>Stdio.stdout.write()</ref> instead
 of just <ref resolved='predef::write'>write()</ref>, since they are the same function.</p>
</text><group><example/><text><p>int main()
  {
    int line;
    while(string s=Stdio.stdin.gets())
 	 write("%5d: %s\n", line++, s);
  }</p>
</text></group></doc>
<variable name='stdin'><source-position first-line='1395' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/><type><object resolved='predef::Stdio.FILE'>FILE</object></type></variable>
</docgroup>
<docgroup homogen-name='read_file' homogen-type='method'><doc><text><p>Read <ref resolved='predef::Stdio.read_file.len'>len</ref> lines from a file <ref resolved='predef::Stdio.read_file.filename'>filename</ref> after skipping <ref resolved='predef::Stdio.read_file.start'>start</ref> lines
 and return those lines as a string. If both <ref resolved='predef::Stdio.read_file.start'>start</ref> and <ref resolved='predef::Stdio.read_file.len'>len</ref> are omitted
 the whole file is read.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.read_bytes'>read_bytes()</ref>, <ref resolved='predef::Stdio.write_file'>write_file()</ref></p>
</text></group></doc>
<method name='read_file'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='read_file'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='start'><type><int/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_bytes' homogen-type='method'><doc><text><p>Read <ref resolved='predef::Stdio.read_bytes.len'>len</ref> number of bytes from the file <ref resolved='predef::Stdio.read_bytes.filename'>filename</ref> starting at byte
 <ref resolved='predef::Stdio.read_bytes.start'>start</ref>, and return it as a string.</p>
<p> If <ref resolved='predef::Stdio.read_bytes.len'>len</ref> is omitted, the rest of the file will be returned.</p>
<p> If <ref resolved='predef::Stdio.read_bytes.start'>start</ref> is also omitted, the entire file will be returned.</p>
</text><group><throws/><text><p>Throws an error if <ref resolved='predef::Stdio.read_bytes.filename'>filename</ref> isn't a regular file.</p>
</text></group><group><returns/><text><p>Returns <expr>0</expr> (zero) on failure to open <ref resolved='predef::Stdio.read_bytes.filename'>filename</ref>.</p>
<p>   Returns a string with the requested data otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.read_file'>read_file</ref>, <ref resolved='predef::Stdio.write_file'>write_file()</ref>, <ref resolved='predef::Stdio.append_file'>append_file()</ref></p>
</text></group></doc>
<method name='read_bytes'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='start'><type><int/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='read_bytes'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='start'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='read_bytes'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_file' homogen-type='method'><doc><text><p>Write the string <ref resolved='predef::Stdio.write_file.str'>str</ref> onto the file <ref resolved='predef::Stdio.write_file.filename'>filename</ref>. Any existing
 data in the file is overwritten.</p>
<p> For a description of <ref resolved='predef::Stdio.write_file.access'>access</ref>, see <ref resolved='predef::Stdio.File.open'>Stdio.File()-&gt;open()</ref>.</p>
</text><group><throws/><text><p>Throws an error if <ref resolved='predef::Stdio.write_file.filename'>filename</ref> couldn't be opened for writing.</p>
</text></group><group><returns/><text><p>Returns the number of bytes written.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.append_file'>append_file()</ref>, <ref resolved='predef::Stdio.read_bytes'>read_bytes()</ref>, <ref resolved='predef::Stdio.File.open'>Stdio.File()-&gt;open()</ref></p>
</text></group></doc>
<method name='write_file'><source-position first-line='1961' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='str'><type><string/></type></argument><argument name='access'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_file' homogen-type='method'><doc><text><p>Append the string <ref resolved='predef::Stdio.append_file.str'>str</ref> onto the file <ref resolved='predef::Stdio.append_file.filename'>filename</ref>.</p>
<p> For a description of <ref resolved='predef::Stdio.append_file.access'>access</ref>, see <ref resolved='predef::Stdio.File.open'>Stdio.File-&gt;open()</ref>.</p>
</text><group><throws/><text><p>Throws an error if <ref resolved='predef::Stdio.append_file.filename'>filename</ref> couldn't be opened for writing.</p>
</text></group><group><returns/><text><p>Returns the number of bytes written.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.write_file'>write_file()</ref>, <ref resolved='predef::Stdio.read_bytes'>read_bytes()</ref>, <ref resolved='predef::Stdio.File.open'>Stdio.File()-&gt;open()</ref></p>
</text></group></doc>
<method name='append_file'><source-position first-line='1991' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='str'><type><string/></type></argument><argument name='access'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='file_size' homogen-type='method'><doc><text><p>Give the size of a file. Size -1 indicates that the file either
 does not exist, or that it is not readable by you. Size -2
 indicates that it is a directory.</p>
</text><group><seealso/><text><p><ref resolved='predef::file_stat'>file_stat()</ref>, <ref resolved='predef::Stdio.write_file'>write_file()</ref>, <ref resolved='predef::Stdio.read_bytes'>read_bytes()</ref></p>
</text></group></doc>
<method name='file_size'><source-position first-line='2015' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_path' homogen-type='method'><doc><text><p>Append <ref resolved='predef::Stdio.append_path.relative'>relative</ref> paths to an <ref resolved='predef::Stdio.append_path.absolute'>absolute</ref> path and remove any
 <expr>"//"</expr>, <expr>"../"</expr> or <expr>"/."</expr> to produce a
 straightforward absolute path as a result.</p>
<p> <expr>"../"</expr> is ignorded in the relative paths if it makes the
 created path begin with something else than the absolute path
 (or so far created path).</p>
</text><group><note/><text><p>Warning: This does not work on NT.
 (Consider paths like: k:/fnord)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::combine_path'>combine_path()</ref></p>
</text></group></doc>
<method name='append_path'><source-position first-line='2038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='simplify_path' homogen-type='method'><doc><text><p>Returns a canonic representation of <ref resolved='predef::Stdio.simplify_path.path'>path</ref> (without /./, /../, //
 and similar path segments).</p>
</text></doc>
<method name='simplify_path'><source-position first-line='2048' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='perror' homogen-type='method'><doc><text><p>This function prints a message to stderr along with a description
 of what went wrong if available. It uses the system errno to find
 out what went wrong, so it is only applicable to IO errors.</p>
</text><group><seealso/><text><p><ref resolved='predef::Stdio.werror'>werror()</ref></p>
</text></group></doc>
<method name='perror'><source-position first-line='2062' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_file' homogen-type='method'><doc><text><p>Check if a <ref resolved='predef::Stdio.is_file.path'>path</ref> is a file.</p>
</text><group><returns/><text><p>Returns true if the given path is a file, otherwise false.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.exist'>exist()</ref>, <ref resolved='predef::Stdio.is_dir'>is_dir()</ref>, <ref resolved='predef::Stdio.is_link'>is_link()</ref>, <ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='is_file'><source-position first-line='2083' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_dir' homogen-type='method'><doc><text><p>Check if a <ref resolved='predef::Stdio.is_dir.path'>path</ref> is a directory.</p>
</text><group><returns/><text><p>Returns true if the given path is a directory, otherwise false.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.exist'>exist()</ref>, <ref resolved='predef::Stdio.is_file'>is_file()</ref>, <ref resolved='predef::Stdio.is_link'>is_link()</ref>, <ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='is_dir'><source-position first-line='2097' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_link' homogen-type='method'><doc><text><p>Check if a <ref resolved='predef::Stdio.is_link.path'>path</ref> is a symbolic link.</p>
</text><group><returns/><text><p>Returns true if the given path is a symbolic link, otherwise false.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.exist'>exist()</ref>, <ref resolved='predef::Stdio.is_dir'>is_dir()</ref>, <ref resolved='predef::Stdio.is_file'>is_file()</ref>, <ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='is_link'><source-position first-line='2111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exist' homogen-type='method'><doc><text><p>Check if a <ref resolved='predef::Stdio.exist.path'>path</ref> exists.</p>
</text><group><returns/><text><p>Returns true if the given path exists (is a directory or file),
 otherwise false.</p>
</text></group><group><note/><text><p>May fail with eg <ref resolved='predef::errno'>errno()</ref> <tt>EFBIG</tt> if the file exists,
   but the filesystem doesn't support the file size.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.is_dir'>is_dir()</ref>, <ref resolved='predef::Stdio.is_file'>is_file()</ref>, <ref resolved='predef::Stdio.is_link'>is_link()</ref>, <ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='exist'><source-position first-line='2129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cp' homogen-type='method'><doc><text><p>Copies the file <ref resolved='predef::Stdio.cp.from'>from</ref> to the new position <ref resolved='predef::Stdio.cp.to'>to</ref>. If there is
 no system function for cp, a new file will be created and the
 old one copied manually in chunks of 65536 bytes.</p>
</text></doc>
<method name='cp'><source-position first-line='2139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='file_equal' homogen-type='method'><doc><text><p>Returns nonzero if the given paths are files with identical
 content, returns zero otherwise. Zero is also returned for any
 sort of I/O error.</p>
</text></doc>
<method name='file_equal'><source-position first-line='2167' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='file_1'><type><string/></type></argument><argument name='file_2'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_cp' homogen-type='method'><doc><text><p>Copy a file asynchronously.</p>
<p> This function is similar to <ref resolved='predef::Stdio.cp'>cp()</ref>, but works asynchronously.</p>
</text><group><param name='from'/><text><p>Name of file to copy.</p>
</text></group><group><param name='to'/><text><p>Name of file to create or replace with a copy of <ref resolved='predef::Stdio.async_cp.from'>from</ref>.</p>
</text></group><group><param name='callback'/><text><p>Function to be called on completion.
   The first argument will be <expr>1</expr> on success, and <expr>0</expr> (zero)
   otherwise. The rest of the arguments to <ref resolved='predef::Stdio.async_cp.callback'>callback</ref> are passed
   verbatim from <ref resolved='predef::Stdio.async_cp.args'>args</ref>.</p>
</text></group><group><param name='args'/><text><p>Extra arguments to pass to <ref resolved='predef::Stdio.async_cp.callback'>callback</ref>.</p>
</text></group><group><note/><text><p>For <ref resolved='predef::Stdio.async_cp.callback'>callback</ref> to be called, the backend must be active (ie
   <ref>main()</ref> must have returned <expr>-1</expr>, or <ref resolved='predef::Pike.DefaultBackend'>Pike.DefaultBackend</ref>
   get called in some other way). The actual copying may start
   before the backend has activated.</p>
</text></group><group><bugs/><text><p>Currently the file sizes are not compared, so the destination file
   (<ref resolved='predef::Stdio.async_cp.to'>to</ref>) may be truncated.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.cp'>cp()</ref>, <ref resolved='predef::Stdio.sendfile'>sendfile()</ref></p>
</text></group></doc>
<method name='async_cp'><source-position first-line='2241' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument><argument name='callback'><type><function><argtype><int/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mkdirhier' homogen-type='method'><doc><text><p>Creates zero or more directories to ensure that the given <ref resolved='predef::Stdio.mkdirhier.pathname'>pathname</ref> is
 a directory.</p>
<p> If a <ref resolved='predef::Stdio.mkdirhier.mode'>mode</ref> is given, it's used for the new directories after being &amp;'ed
 with the current umask (on OS'es that support this).</p>
</text><group><returns/><text><p>Returns zero on failure and nonzero on success.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::mkdir'>mkdir()</ref></p>
</text></group></doc>
<method name='mkdirhier'><source-position first-line='2267' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='pathname'><type><string/></type></argument><argument name='mode'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='recursive_rm' homogen-type='method'><doc><text><p>Remove a file or directory a directory tree.</p>
</text><group><returns/><text><p>Returns 0 on failure, nonzero otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::rm'>rm</ref></p>
</text></group></doc>
<method name='recursive_rm'><source-position first-line='2298' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sendfile' homogen-type='method'><doc><text><p>Sends <ref resolved='predef::Stdio.sendfile.headers'>headers</ref> followed by <ref resolved='predef::Stdio.sendfile.len'>len</ref> bytes starting at <ref resolved='predef::Stdio.sendfile.offset'>offset</ref>
 from the file <ref resolved='predef::Stdio.sendfile.from'>from</ref> followed by <ref resolved='predef::Stdio.sendfile.trailers'>trailers</ref> to the file <ref resolved='predef::Stdio.sendfile.to'>to</ref>.
 When completed <ref resolved='predef::Stdio.sendfile.callback'>callback</ref> will be called with the total number of
 bytes sent as the first argument, followed by <ref resolved='predef::Stdio.sendfile.args'>args</ref>.</p>
<p> Any of <ref resolved='predef::Stdio.sendfile.headers'>headers</ref>, <ref resolved='predef::Stdio.sendfile.from'>from</ref> and <ref resolved='predef::Stdio.sendfile.trailers'>trailers</ref> may be left out
 by setting them to <expr>0</expr>.</p>
<p> Setting <ref resolved='predef::Stdio.sendfile.offset'>offset</ref> to <expr>-1</expr> means send from the current position in
 <ref resolved='predef::Stdio.sendfile.from'>from</ref>.</p>
<p> Setting <ref resolved='predef::Stdio.sendfile.len'>len</ref> to <expr>-1</expr> means send until <ref resolved='predef::Stdio.sendfile.from'>from</ref>'s end of file is
 reached.</p>
</text><group><note/><text><p>The sending is performed asynchronously, and may complete
 before or after the function returns.</p>
<p> For <ref resolved='predef::Stdio.sendfile.callback'>callback</ref> to be called, the backend must be active (ie
 <ref>main()</ref> must have returned <expr>-1</expr>, or <ref resolved='predef::Pike.DefaultBackend'>Pike.DefaultBackend</ref>
 get called in some other way).</p>
<p> In some cases, the backend must also be active for any sending to
 be performed at all.</p>
</text></group><group><bugs/><text><p>FIXME: Support for timeouts?</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.set_nonblocking'>Stdio.File-&gt;set_nonblocking()</ref></p>
</text></group></doc>
<method name='sendfile'>
<arguments><argument name='headers'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='from'><type><object resolved='predef::Stdio.File'>File</object></type></argument><argument name='offset'><type><int/></type></argument><argument name='len'><type><int/></type></argument><argument name='trailers'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='to'><type><object resolved='predef::Stdio.File'>File</object></type></argument></arguments>
<returntype><object resolved='predef::Stdio.sendfile'/></returntype>
</method>
<method name='sendfile'>
<arguments><argument name='headers'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='from'><type><object resolved='predef::Stdio.File'>File</object></type></argument><argument name='offset'><type><int/></type></argument><argument name='len'><type><int/></type></argument><argument name='trailers'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='to'><type><object resolved='predef::Stdio.File'>File</object></type></argument><argument name='callback'><type><function><argtype><int/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Stdio.sendfile'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='werror' homogen-type='method'><doc><text><p>Write a message to stderr. Stderr is normally the console, even if
 the process output has been redirected to a file or pipe.</p>
</text><group><note/><text><p>This function is identical to <ref resolved='predef::werror'>predef::werror()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::werror'>predef::werror()</ref></p>
</text></group></doc>
<method name='werror'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>


<class name='Readline'>

<class name='OutputController'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/><doc><group><fixme/><text><p>Ought to have support for charset conversion.</p>
</text></group></doc><docgroup homogen-name='turn_on' homogen-type='method'><doc><text><p>Set the provided attributes to on.</p>
</text></doc>
<method name='turn_on'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='atts'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='turn_off' homogen-type='method'><doc><text><p>Set the provided attributes to off.</p>
</text></doc>
<method name='turn_off'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='atts'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable' homogen-type='method'><doc/>
<method name='disable'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable' homogen-type='method'><doc/>
<method name='enable'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='check_columns' homogen-type='method'><doc><text><p>Check and return the terminal width.</p>
</text><group><note/><text><p>In Pike 7.4 and earlier this function returned <expr>void</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Readline.OutputController.get_number_of_columns'>get_number_of_columns</ref></p>
</text></group></doc>
<method name='check_columns'><source-position first-line='140' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_number_of_columns' homogen-type='method'><doc><text><p>Returns the width of the terminal.</p>
</text><group><note/><text><p>Does not check the width of the terminal.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Readline.OutputController.check_columns'>check_columns</ref></p>
</text></group></doc>
<method name='get_number_of_columns'><source-position first-line='157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_write' homogen-type='method'><doc/>
<method name='low_write'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='word_break'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc/>
<method name='write'><source-position first-line='267' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='word_break'><type><or><void/><int/></or></type></argument><argument name='hide'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_move_downward' homogen-type='method'><doc/>
<method name='low_move_downward'><source-position first-line='273' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_move_upward' homogen-type='method'><doc/>
<method name='low_move_upward'><source-position first-line='283' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_move_forward' homogen-type='method'><doc/>
<method name='low_move_forward'><source-position first-line='293' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_move_backward' homogen-type='method'><doc/>
<method name='low_move_backward'><source-position first-line='315' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_erase' homogen-type='method'><doc/>
<method name='low_erase'><source-position first-line='336' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='move_forward' homogen-type='method'><doc/>
<method name='move_forward'><source-position first-line='351' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='move_backward' homogen-type='method'><doc/>
<method name='move_backward'><source-position first-line='357' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='erase' homogen-type='method'><doc/>
<method name='erase'><source-position first-line='363' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='newline' homogen-type='method'><doc/>
<method name='newline'><source-position first-line='369' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bol' homogen-type='method'><doc/>
<method name='bol'><source-position first-line='386' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc/>
<method name='clear'><source-position first-line='395' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='partial'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='beep' homogen-type='method'><doc/>
<method name='beep'><source-position first-line='413' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='419' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='_outfd'><type><or><object resolved='predef::Stdio.File'>.File</object><void/></or></type></argument><argument name='_term'><type><or><object resolved='predef::Stdio.Terminfo.Termcap'>.Terminfo.Termcap</object><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='InputController'><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/><doc><group><fixme/><text><p>Ought to have support for charset conversion.</p>
</text></group></doc><docgroup homogen-name='isenabled' homogen-type='method'><doc/>
<method name='isenabled'><source-position first-line='536' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable' homogen-type='method'><doc/>
<method name='enable'><source-position first-line='542' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='e'><type><varargs><int/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable' homogen-type='method'><doc/>
<method name='disable'><source-position first-line='551' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='run_blocking' homogen-type='method'><doc/>
<method name='run_blocking'><source-position first-line='557' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_close_callback' homogen-type='method'><doc/>
<method name='set_close_callback'><source-position first-line='578' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='ccb'><type><function><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='nullbindings' homogen-type='method'><doc><text><p>Clears the bindings.</p>
</text></doc>
<method name='nullbindings'><source-position first-line='584' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='grabnextkey' homogen-type='method'><doc/>
<method name='grabnextkey'><source-position first-line='590' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='g'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bindstr' homogen-type='method'><doc/>
<method name='bindstr'><source-position first-line='597' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='str'><type><string/></type></argument><argument name='f'><type><function/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unbindstr' homogen-type='method'><doc/>
<method name='unbindstr'><source-position first-line='643' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getbindingstr' homogen-type='method'><doc/>
<method name='getbindingstr'><source-position first-line='649' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bindtc' homogen-type='method'><doc/>
<method name='bindtc'><source-position first-line='664' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='cap'><type><string/></type></argument><argument name='f'><type><function/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unbindtc' homogen-type='method'><doc/>
<method name='unbindtc'><source-position first-line='670' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='cap'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getbindingtc' homogen-type='method'><doc/>
<method name='getbindingtc'><source-position first-line='676' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='cap'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parsekey' homogen-type='method'><doc/>
<method name='parsekey'><source-position first-line='682' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='k'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bind' homogen-type='method'><doc/>
<method name='bind'><source-position first-line='741' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='k'><type><string/></type></argument><argument name='f'><type><function/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unbind' homogen-type='method'><doc/>
<method name='unbind'><source-position first-line='747' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='k'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getbinding' homogen-type='method'><doc/>
<method name='getbinding'><source-position first-line='753' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='k'><type><string/></type></argument><argument name='cap'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getbindings' homogen-type='method'><doc/>
<method name='getbindings'><source-position first-line='759' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><function/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='769' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='_infd'><type><or><object resolved='predef::Stdio.Readline.InputController.create'/><void/></or></type></argument><argument name='_term'><type><or><object resolved='predef::Stdio.Readline.InputController.create'/><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='DefaultEditKeys'><source-position first-line='793' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/><docgroup homogen-name='self_insert_command' homogen-type='method'><doc/>
<method name='self_insert_command'><source-position first-line='800' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='quoted_insert' homogen-type='method'><doc/>
<method name='quoted_insert'><source-position first-line='806' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='newline' homogen-type='method'><doc/>
<method name='newline'><source-position first-line='812' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='up_history' homogen-type='method'><doc/>
<method name='up_history'><source-position first-line='818' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='down_history' homogen-type='method'><doc/>
<method name='down_history'><source-position first-line='824' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='backward_delete_char' homogen-type='method'><doc/>
<method name='backward_delete_char'><source-position first-line='830' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_char_or_eof' homogen-type='method'><doc/>
<method name='delete_char_or_eof'><source-position first-line='837' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='forward_char' homogen-type='method'><doc/>
<method name='forward_char'><source-position first-line='847' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='backward_char' homogen-type='method'><doc/>
<method name='backward_char'><source-position first-line='853' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='beginning_of_line' homogen-type='method'><doc/>
<method name='beginning_of_line'><source-position first-line='859' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='end_of_line' homogen-type='method'><doc/>
<method name='end_of_line'><source-position first-line='865' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='transpose_chars' homogen-type='method'><doc/>
<method name='transpose_chars'><source-position first-line='871' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='capitalize_word' homogen-type='method'><doc/>
<method name='capitalize_word'><source-position first-line='898' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='upcase_word' homogen-type='method'><doc/>
<method name='upcase_word'><source-position first-line='906' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='downcase_word' homogen-type='method'><doc/>
<method name='downcase_word'><source-position first-line='914' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='forward_word' homogen-type='method'><doc/>
<method name='forward_word'><source-position first-line='950' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='backward_word' homogen-type='method'><doc/>
<method name='backward_word'><source-position first-line='956' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_word' homogen-type='method'><doc/>
<method name='kill_word'><source-position first-line='962' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='backward_kill_word' homogen-type='method'><doc/>
<method name='backward_kill_word'><source-position first-line='968' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_line' homogen-type='method'><doc/>
<method name='kill_line'><source-position first-line='978' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_whole_line' homogen-type='method'><doc/>
<method name='kill_whole_line'><source-position first-line='984' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='yank' homogen-type='method'><doc/>
<method name='yank'><source-position first-line='990' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_ring_save' homogen-type='method'><doc/>
<method name='kill_ring_save'><source-position first-line='997' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_region' homogen-type='method'><doc/>
<method name='kill_region'><source-position first-line='1003' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_mark' homogen-type='method'><doc/>
<method name='set_mark'><source-position first-line='1009' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='swap_mark_and_point' homogen-type='method'><doc/>
<method name='swap_mark_and_point'><source-position first-line='1015' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='redisplay' homogen-type='method'><doc/>
<method name='redisplay'><source-position first-line='1023' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear_screen' homogen-type='method'><doc/>
<method name='clear_screen'><source-position first-line='1029' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_bindings' homogen-type='method'><doc/>
<method name='set_default_bindings'><source-position first-line='1083' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='1102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='readline'><type><object resolved='predef::Stdio.Readline.DefaultEditKeys.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='History'><source-position first-line='1111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/><docgroup homogen-name='encode' homogen-type='method'><doc/>
<method name='encode'><source-position first-line='1118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_history_num' homogen-type='method'><doc/>
<method name='get_history_num'><source-position first-line='1124' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='history' homogen-type='method'><doc/>
<method name='history'><source-position first-line='1130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='initline' homogen-type='method'><doc/>
<method name='initline'><source-position first-line='1145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='finishline' homogen-type='method'><doc/>
<method name='finishline'><source-position first-line='1161' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_max_history' homogen-type='method'><doc/>
<method name='set_max_history'><source-position first-line='1172' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='maxhist'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='1178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='maxhist'><type><int/></type></argument><argument name='hist'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='get_output_controller' homogen-type='method'><doc><text><p>get current output control object</p>
</text><group><returns/><text><p>Terminal output controller object</p>
</text></group></doc>
<method name='get_output_controller'><source-position first-line='1204' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.Readline.OutputController'>OutputController</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_input_controller' homogen-type='method'><doc><text><p>get current input control object</p>
</text><group><returns/><text><p>Terminal input controller object</p>
</text></group></doc>
<method name='get_input_controller'><source-position first-line='1212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.Readline.InputController'>InputController</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_prompt' homogen-type='method'><doc><text><p>Return the current prompt string.</p>
</text></doc>
<method name='get_prompt'><source-position first-line='1218' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_prompt' homogen-type='method'><doc><text><p>Set the prompt string.</p>
</text><group><param name='newp'/><text><p>New prompt string</p>
</text></group><group><param name='newattrs'/><text><p>Terminal attributes</p>
</text></group></doc>
<method name='set_prompt'><source-position first-line='1228' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='newp'><type><string/></type></argument><argument name='newattrs'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_echo' homogen-type='method'><doc><text><p>Set text echo on or off.</p>
</text><group><param name='onoff'/><text><p>1 for echo, 0 for no echo.</p>
</text></group></doc>
<method name='set_echo'><source-position first-line='1245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='onoff'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gettext' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='gettext'><source-position first-line='1252' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getcursorpos' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='getcursorpos'><source-position first-line='1259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setcursorpos' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='setcursorpos'><source-position first-line='1266' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='p'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setmark' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='setmark'><source-position first-line='1289' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='p'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getmark' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='getmark'><source-position first-line='1300' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='insert'><source-position first-line='1307' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='p'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='delete'><source-position first-line='1330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='p1'><type><int/></type></argument><argument name='p2'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pointmark' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='pointmark'><source-position first-line='1354' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='region' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='region'><source-position first-line='1364' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='args'><type><varargs><int/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='kill'><source-position first-line='1374' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='p1'><type><int/></type></argument><argument name='p2'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_to_kill_ring' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='add_to_kill_ring'><source-position first-line='1388' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill_ring_yank' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='kill_ring_yank'><source-position first-line='1396' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='history' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='history'><source-position first-line='1404' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delta_history' homogen-type='method'><doc><text><p>Changes the line to a line from the history <ref resolved='predef::Stdio.Readline.delta_history.d'>d</ref> steps from the
 current entry (0 being the current line, negative values older,
 and positive values newer).</p>
</text><group><note/><text><p>Only effective if you have a history object.</p>
</text></group></doc>
<method name='delta_history'><source-position first-line='1418' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='d'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='redisplay' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='redisplay'><source-position first-line='1426' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='clear'><type><int/></type></argument><argument name='nobackup'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='newline' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='newline'><source-position first-line='1462' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eof' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='eof'><source-position first-line='1479' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='message' homogen-type='method'><doc><text><p>Print a message to the output device</p>
</text></doc>
<method name='message'><source-position first-line='1489' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='msg'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='write'><source-position first-line='1504' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='msg'><type><string/></type></argument><argument name='word_wrap'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_completions' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='list_completions'><source-position first-line='1527' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='c'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_nonblocking'><source-position first-line='1541' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_blocking'><source-position first-line='1565' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='edit' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='edit'><source-position first-line='1572' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='local_prompt'><type><or><string/><void/></or></type></argument><argument name='attrs'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='read'><source-position first-line='1616' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='prompt'><type><or><string/><void/></or></type></argument><argument name='attrs'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable_history' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='enable_history'><source-position first-line='1623' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='hist'><type><or><array><valuetype><string/></valuetype></array><object resolved='predef::Stdio.Readline.History'>History</object><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_history' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_history'><source-position first-line='1639' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.Readline.History'>History</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a Readline object, that takes input from <ref resolved='predef::Stdio.Readline.create.infd'>infd</ref> and has output
 on <ref resolved='predef::Stdio.Readline.create.outfd'>outfd</ref>.</p>
</text><group><param name='infd'/><text><p>Defaults to <ref resolved='predef::Stdio.stdin'>Stdio.stdin</ref>.</p>
</text></group><group><param name='interm'/><text><p>Defaults to <ref resolved='predef::Stdio.Terminfo.getTerm'>Stdio.Terminfo.getTerm()</ref>.</p>
</text></group><group><param name='outfd'/><text><p>Defaults to <ref resolved='predef::Stdio.Readline.create.infd'>infd</ref>, unless <ref resolved='predef::Stdio.Readline.create.infd'>infd</ref> is 0, in which case
   <ref resolved='predef::Stdio.Readline.create.outfd'>outfd</ref> defaults to <ref resolved='predef::Stdio.stdout'>Stdio.stdout</ref>.</p>
</text></group><group><param name='outterm'/><text><p>Defaults to <ref resolved='predef::Stdio.Readline.create.interm'>interm</ref>.</p>
</text></group></doc>
<method name='create'><source-position first-line='1667' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Readline.pike'/>
<arguments><argument name='infd'><type><or><object resolved='predef::Stdio.Readline.create'/><void/></or></type></argument><argument name='interm'><type><or><object resolved='predef::Stdio.Readline.create'/><string/><void/></or></type></argument><argument name='outfd'><type><or><object resolved='predef::Stdio.Readline.create'/><void/></or></type></argument><argument name='outterm'><type><or><object resolved='predef::Stdio.Readline.create'/><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='Terminfo'>

<class name='Termcap'><source-position first-line='147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><doc><text><p>Termcap terminal description object.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='TermMachine'><doc>
</doc>
<inherit name='TermMachine'><source-position first-line='149' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><classname>TermMachine</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='aliases'><doc/>
<variable name='aliases'><source-position first-line='152' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='tputs' homogen-type='method'><doc><text><p>Put termcap string</p>
</text></doc>
<method name='tputs'><source-position first-line='157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='cap'><type><string/></type></argument><argument name='tcdb'><type><or><object>TermcapDB</object><void/></or></type></argument><argument name='maxrecurse'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Terminfo'><source-position first-line='278' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><doc><text><p>Terminfo terminal description object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='TermMachine'><doc>
</doc>
<inherit name='TermMachine'><source-position first-line='280' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><classname>TermMachine</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='aliases'><doc/>
<variable name='aliases'><source-position first-line='283' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='tputs' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='tputs'><source-position first-line='326' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='399' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='getTermcap' homogen-type='method'><doc><text><p>Returns the terminal description object for <ref resolved='predef::Stdio.Terminfo.getTermcap.term'>term</ref> from the
 systems termcap database. Returns 0 if not found.</p>
</text><group><seealso/><text><p>Stdio.Terminfo.getTerm, Stdio.Terminfo.getTerminfo</p>
</text></group></doc>
<method name='getTermcap'><source-position first-line='767' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='term'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.Terminfo.Termcap'>Termcap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='getTerminfo' homogen-type='method'><doc><text><p>Returns the terminal description object for <ref resolved='predef::Stdio.Terminfo.getTerminfo.term'>term</ref> from the
 systems terminfo database. Returns 0 if not found.</p>
</text><group><seealso/><text><p>Stdio.Terminfo.getTerm, Stdio.Terminfo.getTermcap</p>
</text></group></doc>
<method name='getTerminfo'><source-position first-line='778' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='term'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.Terminfo.Terminfo'>Terminfo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='getTerm' homogen-type='method'><doc><text><p>Returns an object describing the terminal term. If term is not specified, it will
 default to <ref resolved='predef::getenv'>getenv("TERM")</ref> or if that fails to "dumb".</p>
<p> Lookup of terminal information will first be done in the systems terminfo
 database, and if that fails in the termcap database. If neither database exists, a
 hardcoded entry for "dumb" will be used.</p>
</text><group><seealso/><text><p>Stdio.Terminfo.getTerminfo, Stdio.Terminfo.getTermcap, Stdio.getFallbackTerm</p>
</text></group></doc>
<method name='getTerm'><source-position first-line='793' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments><argument name='term'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.Terminfo.Termcap'>Termcap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='getFallbackTerm' homogen-type='method'><doc><text><p>Returns an object describing the fallback terminal for the terminal
 <ref resolved='predef::Stdio.Terminfo.getFallbackTerm.term'>term</ref>. This is usually equvivalent to <ref resolved='predef::Stdio.Terminfo.getTerm'>Stdio.Terminfo.getTerm("dumb")</ref>.</p>
</text><group><seealso/><text><p>Stdio.Terminfo.getTerm</p>
</text></group></doc>
<method name='getFallbackTerm'><source-position first-line='821' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='term'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.Terminfo.Termcap'>Termcap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_tty' homogen-type='method'><doc><text><p>Returns 1 if <ref resolved='predef::Stdio.stdin'>Stdio.stdin</ref> is connected to an interactive
 terminal that can handle backspacing, carriage return without
 linefeed, and the like.</p>
</text></doc>
<method name='is_tty'><source-position first-line='829' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Stdio.pmod/Terminfo.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</module>







<class name='Fd_ref'><doc><text><p>Proxy class that contains stub functions
 that call the corresponding functions in
 <ref resolved='predef::Stdio.Fd'>Fd</ref>.</p>
<p> Used by <ref resolved='predef::Stdio.File'>File</ref>.</p>
</text></doc><docgroup homogen-name='_fd' homogen-type='variable'><doc><text><p>Object to which called functions are relayed.</p>
</text></doc>
<variable name='_fd'><type><object resolved='predef::Stdio.Fd'>Fd</object></type></variable>
</docgroup>
</class>

<class name='Fd'><doc><text><p>Low level I/O operations. Use <ref resolved='predef::Stdio.File'>File</ref> instead.</p>
</text></doc></class>

<docgroup homogen-name='get_all_active_fd' homogen-type='method'><doc><text><p>Returns the id of all the active file descriptors.</p>
</text></doc>
<method name='get_all_active_fd'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='notify' homogen-type='method'><doc><text><p>Receive notification when change occur within the fd.
 To use, create a Stdio.File object of a directory like
 Stdio.File(".") and then call notify() with the appropriate
 parameters.</p>
</text><group><note/><text><p>When a program registers for some notification, only the first notification
 will be received unless DN_MULTISHOT is specified as part of the
 notification argument.</p>
</text></group><group><note/><text><p>At present, this function is Linux-specific and requires a kernel which
 supports the F_NOTIFY fcntl() call.</p>
</text></group><group><param name='notification'/><text><p>What to notify the callback of. See the Stdio.DN_* constants for more
 information about possible notifications.</p>
</text></group><group><param name='callback'/><text><p>Function which should be called when notification is received. The
 function gets the signal used to indicate the notification as its
 argument and shouldn't return anyting.</p>
</text></group></doc>
<method name='notify'>
<arguments><argument name='notification'><type><or><void/><int/></or></type></argument><argument name='callback'><type><function><argtype><void/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='PROP_BIDIRECTIONAL' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_BIDIRECTIONAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3708'/></constant>
</docgroup>
<docgroup homogen-name='PROP_BUFFERED' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_BUFFERED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3713'/></constant>
</docgroup>
<docgroup homogen-name='PROP_SHUTDOWN' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_SHUTDOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3718'/></constant>
</docgroup>
<docgroup homogen-name='PROP_NONBLOCK' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_NONBLOCK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3723'/></constant>
</docgroup>
<docgroup homogen-name='PROP_REVERSE' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_REVERSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3728'/></constant>
</docgroup>
<docgroup homogen-name='PROP_IPC' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='PROP_IPC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3733'/></constant>
</docgroup>
<docgroup homogen-name='IPPROTO' homogen-type='constant'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group></doc>
<constant name='IPPROTO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3738'/></constant>
</docgroup>
<docgroup homogen-name='__OOB__' homogen-type='constant'><doc><text><p>Implementation level of nonblocking I/O OOB support.</p>
<int><group><value>0</value><text><p>Nonblocking OOB support is not supported.</p>
</text></group><group><value>1</value><text><p>Nonblocking OOB works a little.</p>
</text></group><group><value>2</value><text><p>Nonblocking OOB almost works.</p>
</text></group><group><value>3</value><text><p>Nonblocking OOB works as intended.</p>
</text></group><group><value>-1</value><text><p>Unknown level of nonblocking OOB support.</p>
</text></group></int><p>This constant only exists when OOB operations are
 available, i.e. when <ref resolved='predef::Stdio.__HAVE_OOB__'>__HAVE_OOB__</ref> is 1.</p>
</text></doc>
<constant name='__OOB__'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3743'/></constant>
</docgroup>
<docgroup homogen-name='__HAVE_OOB__' homogen-type='constant'><doc><text><p>Exists and has the value 1 if OOB operations are available.</p>
</text><group><note/><text><p>In Pike 7.5 and later OOB operations are always present.</p>
</text></group></doc>
<constant name='__HAVE_OOB__'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3761'/></constant>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'>
<arguments><argument name='type'><type><int/></type></argument><argument name='flags'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='DN_ACCESS' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when files
 within a directory are accessed.</p>
</text></doc>
<constant name='DN_ACCESS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3979'/></constant>
</docgroup>
<docgroup homogen-name='DN_MODIFY' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when files
 within a directory are modified.</p>
</text></doc>
<constant name='DN_MODIFY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3987'/></constant>
</docgroup>
<docgroup homogen-name='DN_CREATE' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when new
 files are created within a directory.</p>
</text></doc>
<constant name='DN_CREATE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='3995'/></constant>
</docgroup>
<docgroup homogen-name='DN_DELETE' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when files
 are deleted within a directory.</p>
</text></doc>
<constant name='DN_DELETE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='4003'/></constant>
</docgroup>
<docgroup homogen-name='DN_RENAME' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when files
 within a directory are renamed.</p>
</text></doc>
<constant name='DN_RENAME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='4011'/></constant>
</docgroup>
<docgroup homogen-name='DN_ATTRIB' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref> to get a callback when attributes
 of files within a directory are changed.</p>
</text></doc>
<constant name='DN_ATTRIB'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='4019'/></constant>
</docgroup>
<docgroup homogen-name='DN_MULTISHOT' homogen-type='constant'><doc><text><p>Used in <ref>File.notify()</ref>. If DN_MULTISHOT is used, signals will
 be sent for all notifications the program has registred for. Otherwise
 only the first event the program is listening for will be received and
 then the program must reregister for the events to receive futher events.</p>
</text></doc>
<constant name='DN_MULTISHOT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/files/file.c' first-line='4027'/></constant>
</docgroup>


<class name='Stat'><doc><text><p>This object is used to represent file status information
   from e.g. <ref resolved='predef::file_stat'>file_stat()</ref>.</p>
<p>   It contains the following items usually found in a C <tt>struct
   stat</tt>:</p>
<dl><group><item name='mode'/><text><p>File mode (see <tt>mknod(2)</tt>).</p>
</text></group><group><item name='size'/><text><p>File size in bytes.</p>
</text></group><group><item name='uid'/><text><p>User ID of the file's owner.</p>
</text></group><group><item name='gid'/><text><p>Group ID of the file's owner.</p>
</text></group><group><item name='atime'/><text><p>Time of last access in seconds since 00:00:00 UTC, 1970-01-01.</p>
</text></group><group><item name='mtime'/><text><p>Time of last data modification.</p>
</text></group><group><item name='ctime'/><text><p>Time of last file status change.</p>
</text></group><group><item name='ino'/><text><p>Inode number.</p>
</text></group><group><item name='nlink'/><text><p>Number of links.</p>
</text></group><group><item name='dev'/><text><p>ID of the device containing a directory entry for this file.</p>
</text></group><group><item name='rdev'/><text><p>ID of the device.</p>
</text></group></dl><p>It also contains some items that correspond to the C <tt>IS*</tt> macros:</p>
<dl><group><item name='isreg'/><text><p>Set if the file is a regular file.</p>
</text></group><group><item name='isdir'/><text><p>Set if the file is a directory.</p>
</text></group><group><item name='islnk'/><text><p>Set if the file is a symbolic link. Note that symbolic links
       are normally followed by the stat functions, so this might
       only be set if you turn that off, e.g. by giving a nonzero
       second argument to <ref resolved='predef::file_stat'>file_stat()</ref>.</p>
</text></group><group><item name='isfifo'/><text><p>Set if the file is a FIFO (aka named pipe).</p>
</text></group><group><item name='issock'/><text><p>Set if the file is a socket.</p>
</text></group><group><item name='ischr'/><text><p>Set if the file is a character device.</p>
</text></group><group><item name='isblk'/><text><p>Set if the file is a block device.</p>
</text></group></dl><p>There are also some items that provide alternative representations
   of the above:</p>
<dl><group><item name='type'/><text><p>The type as a string, can be any of <expr>"reg"</expr>,
       <expr>"dir"</expr>, <expr>"lnk"</expr>, <expr>"fifo"</expr>, <expr>"sock"</expr>,
       <expr>"chr"</expr>, <expr>"blk"</expr>, and <expr>"unknown"</expr>.</p>
</text></group><group><item name='mode_string'/><text><p>The file mode encoded as a string in <tt>ls -l</tt> style, e.g.
       <expr>"drwxr-xr-x"</expr>.</p>
</text></group></dl><p>Note that some items might not exist or have meaningful values
   on some platforms.</p>
<p>   Additionally, the object may be initialized from or casted to an
   <expr>array</expr> on the form of a 'traditional' LPC stat-array, and
   it's also possible to index the object directly with integers as
   if it were such an array. The stat-array has this format:</p>
<array><group><elem><type><int/></type><index>0</index></elem><text><p>File mode, same as <tt>mode</tt>.</p>
</text></group><group><elem><type><int/></type><index>1</index></elem><text><p>If zero or greater, the file is a regular file and this is
       its size in bytes. If less than zero it gives the type:
       -2=directory, -3=symlink and -4=device.</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>Time of last access, same as <tt>atime</tt>.</p>
</text></group><group><elem><type><int/></type><index>3</index></elem><text><p>Time of last data modification, same as <tt>mtime</tt>.</p>
</text></group><group><elem><type><int/></type><index>4</index></elem><text><p>Time of last file status change, same as <tt>ctime</tt>.</p>
</text></group><group><elem><type><int/></type><index>5</index></elem><text><p>User ID of the file's owner, same as <tt>uid</tt>.</p>
</text></group><group><elem><type><int/></type><index>6</index></elem><text><p>Group ID of the file's owner, same as <tt>gid</tt>.</p>
</text></group></array><p>It's possible to modify the stat struct by assigning values to
   the items. They essentially work as variables, although some of
   them affect others, e.g. setting <expr>isdir</expr> clears <expr>isreg</expr>
   and setting <expr>mode_string</expr> changes many of the other items.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>A new <ref resolved='predef::Stdio.Stat'>Stdio.Stat</ref> object can be initialized in two ways:</p>
<ul><group><item/><text><p><ref resolved='predef::Stdio.Stat.create.stat'>stat</ref> is an object, typically another <ref resolved='predef::Stdio.Stat'>Stdio.Stat</ref>. The
     stat info is copied from the object by getting the values of
     <expr>mode</expr>, <expr>size</expr>, <expr>atime</expr>, <expr>mtime</expr>,
     <expr>ctime</expr>, <expr>uid</expr>, <expr>gid</expr>, <expr>dev</expr>, <expr>ino</expr>,
     <expr>nlink</expr>, and <expr>rdev</expr>.</p>
</text></group><group><item/><text><p><ref resolved='predef::Stdio.Stat.create.stat'>stat</ref> is a seven element array on the 'traditional' LPC
     stat-array form (see the class doc).</p>
</text></group></ul></text></doc>
<method name='create'>
<arguments><argument name='stat'><type><or><void/><object resolved='predef::Stdio.Stat.create'/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>







<module name='Standards'>

<module name='PKCS'>

<module name='Signature'><docgroup homogen-name='build_digestinfo' homogen-type='method'><doc><text><p>Construct a PKCS-1 digestinfo</p>
</text><group><param name='msg'/><text><p>message to digest</p>
</text></group><group><param name='hash'/><text><p>crypto hash object such as <ref>Crypto.SHA</ref> or <ref resolved='predef::Crypto.MD5'>Crypto.MD5</ref></p>
</text></group></doc>
<method name='build_digestinfo'>
<arguments><argument name='msg'><type><string/></type></argument><argument name='hash'><type><object resolved='predef::Crypto.Hash'>Crypto.Hash</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='Identifiers'><doc><text><p>Various ASN.1 identifiers used by PKCS.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Identifiers.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
</module>

<module name='RSA'><doc><text><p>RSA operations and types as described in PKCS-1.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
<docgroup homogen-name='public_key' homogen-type='method'><doc><text><p>Create a DER-coded RSAPublicKey structure</p>
</text><group><param name='rsa'/><text><p><ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref> object</p>
</text></group><group><returns/><text><p>ASN1 coded RSAPublicKey structure</p>
</text></group></doc>
<method name='public_key'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='private_key' homogen-type='method'><doc><text><p>Create a DER-coded RSAPrivateKey structure</p>
</text><group><param name='rsa'/><text><p><ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref> object</p>
</text></group><group><returns/><text><p>ASN1 coded RSAPrivateKey structure</p>
</text></group></doc>
<method name='private_key'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_public_key' homogen-type='method'><doc><text><p>Decode a DER-coded RSAPublicKey structure</p>
</text><group><param name='key'/><text><p>RSAPublicKey provided in ASN1 encoded format</p>
</text></group><group><returns/><text><p><ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref> object</p>
</text></group></doc>
<method name='parse_public_key'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_private_key' homogen-type='method'><doc><text><p>Decode a DER-coded RSAPrivateKey structure</p>
</text><group><param name='key'/><text><p>RSAPrivateKey provided in ASN1 encoded format</p>
</text></group><group><returns/><text><p><ref resolved='predef::Crypto.RSA'>Crypto.RSA</ref> object</p>
</text></group></doc>
<method name='parse_private_key'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/RSA.pmod'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></returntype>
</method>
</docgroup>
</module>

<module name='DSA'><doc><text><p>DSA operations as defined in RFC-2459.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
<docgroup homogen-name='algorithm_identifier' homogen-type='method'><doc/>
<method name='algorithm_identifier'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod'/>
<arguments><argument name='dsa'><type><or><object resolved='predef::Crypto.DSA'>Crypto.DSA</object><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='public_key' homogen-type='method'><doc/>
<method name='public_key'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod'/>
<arguments><argument name='dsa'><type><object resolved='predef::Crypto.DSA'>Crypto.DSA</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='private_key' homogen-type='method'><doc/>
<method name='private_key'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod'/>
<arguments><argument name='dsa'><type><object resolved='predef::Crypto.DSA'>Crypto.DSA</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_private_key' homogen-type='method'><doc/>
<method name='parse_private_key'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/DSA.pmod'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Crypto.DSA'>Crypto.DSA</object></returntype>
</method>
</docgroup>
</module>

<module name='Certificate'><doc><text><p>Handle PKCS-6 and PKCS-10 certificates and certificate requests.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
<docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/><classname resolved='predef::Standards.PKCS.Identifiers'>.Identifiers</classname></import>
</docgroup>
<docgroup homogen-name='build_distinguished_name' homogen-type='method'><doc/>
<method name='build_distinguished_name'><source-position first-line='161' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/>
<arguments><argument name='args'><type><varargs><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Standards.PKCS.Certificate.build_distinguished_name'/></valuetype></mapping></varargs></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_certificate_issuer' homogen-type='method'><doc><text><p>Return the certificate issuer RDN from a certificate string.</p>
</text><group><param name='cert'/><text><p>A string containing an X509 certificate.</p>
<p> Note that the certificate normally must be decoded using
 <ref resolved='predef::MIME.decode_base64'>MIME.decode_base64</ref>.</p>
</text></group><group><returns/><text><p>An Standards.ASN1.Sequence object containing the certificate issuer
  Distinguished Name (DN).</p>
</text></group></doc>
<method name='get_certificate_issuer'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/>
<arguments><argument name='cert'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dn_string' homogen-type='method'><doc><text><p>Converts an RDN (relative distinguished name) Seqeunce object to a
 human readable string in X500 format.</p>
</text><group><param name='cert'/><text><p>A string containing an X509 certificate.</p>
<p> Note that the certificate normally must be decoded using
 <ref resolved='predef::MIME.decode_base64'>MIME.decode_base64</ref>.</p>
</text></group><group><returns/><text><p>A string containing the certificate issuer
  Distinguished Name (DN) in human readable X500 format.</p>
</text></group><group><note/><text><p>We don't currently handle attributes with multiple values, not
  all attribute types are understood.</p>
</text></group></doc>
<method name='get_dn_string'><source-position first-line='206' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/>
<arguments><argument name='dnsequence'><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_certificate_subject' homogen-type='method'><doc><text><p>Return the certificate subject RDN from a certificate string.</p>
</text><group><param name='cert'/><text><p>A string containing an X509 certificate.</p>
<p> Note that the certificate normally must be decoded using
 <ref resolved='predef::MIME.decode_base64'>MIME.decode_base64</ref>.</p>
</text></group><group><returns/><text><p>An Standards.ASN1.Sequence object containing the certificate subject
  Distinguished Name (DN).</p>
</text></group></doc>
<method name='get_certificate_subject'><source-position first-line='251' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/Certificate.pmod'/>
<arguments><argument name='cert'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
</module>

<module name='CSR'><doc><text><p>Handling of Certifikate Signing Requests (PKCS-10)</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
<docgroup homogen-name='build_csr' homogen-type='method'><doc/>
<method name='build_csr'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/PKCS.pmod/CSR.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument><argument name='name'><type><object resolved='predef::Standards.PKCS.CSR.build_csr'/></type></argument><argument name='attributes'><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><object resolved='predef::Standards.PKCS.CSR.build_csr'/></valuetype></array></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
</module></module>











<module name='XML'>

<module name='Wix'><doc><text><p>Helper module for generating Windows Installer XML structures.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.XML.Tree.SimpleNode'>Parser.XML.Tree.SimpleNode</ref></p>
</text></group></doc><docgroup homogen-name='get_module_xml' homogen-type='method'><doc><group><note/><text><p>Modifies <ref resolved='predef::Standards.XML.Wix.get_module_xml.dir'>dir</ref> if it contains files at the root level.</p>
</text></group></doc>
<method name='get_module_xml'><source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/XML.pmod/Wix.pmod'/>
<arguments><argument name='dir'><type><object>Directory</object></type></argument><argument name='id'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='manufacturer'><type><or><string/><void/></or></type></argument><argument name='description'><type><or><string/><void/></or></type></argument><argument name='guid'><type><or><string/><void/></or></type></argument><argument name='comments'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object>WixNode</object></returntype>
</method>
</docgroup>
</module></module>

<module name='ASN1'>

<module name='Decode'><doc><text><p>Decodes a DER object.</p>
</text></doc>

<class name='primitive'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><doc><text><p>Primitive unconstructed ASN1 data type.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc/>
<inherit name='Object'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Types.Object</classname></inherit>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>get raw encoded contents of object</p>
</text></doc>
<method name='get_der'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
<method name='get_combined_tag'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tag' homogen-type='method'><doc><text><p>get tag</p>
</text></doc>
<method name='get_tag'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cls' homogen-type='method'><doc><text><p>get class</p>
</text></doc>
<method name='get_cls'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='constructed'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><doc><text><p>constructed type</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc/>
<inherit name='Object'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Types.Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='raw'><doc><text><p>raw encoded  contents</p>
</text></doc>
<variable name='raw'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='elements'><doc><text><p>elements of object</p>
</text></doc>
<variable name='elements'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><type><array/></type></variable>
</docgroup>
<docgroup homogen-name='get_tag' homogen-type='method'><doc><text><p>get tag</p>
</text></doc>
<method name='get_tag'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cls' homogen-type='method'><doc><text><p>get class</p>
</text></doc>
<method name='get_cls'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/><classname resolved='predef::Standards.ASN1.Types'>.Types</classname></import>
</docgroup>
<docgroup homogen-name='der_decode' homogen-type='method'><doc><group><param name='data'/><text><p>an instance of ADT.struct</p>
</text></group><group><param name='types'/><text><p>a mapping from combined tag numbers to classes from or derived from
   <ref resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</ref>. Combined tag numbers may be generated using
   <ref resolved='predef::Standards.ASN1.Types.make_combined_tag'>Standards.ASN1.Types.make_combined_tag</ref>.</p>
</text></group><group><returns/><text><p>an object from <ref resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</ref> or
   either <ref resolved='predef::Standards.ASN1.Decode.primitive'>Standards.ASN1.Decode.primitive</ref> or
   <ref resolved='predef::Standards.ASN1.Decode.constructed'>Standards.ASN1.Decode.constructed</ref> if the type is unknown.
   Throws an exception if the data could not be decoded.</p>
</text></group><group><fixme/><text><p>Handling of implicit and explicit ASN.1 tagging, as well as
   other context dependence, is next to non_existant.</p>
</text></group></doc>
<method name='der_decode'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments><argument name='data'><type><object resolved='predef::ADT.struct'>ADT.struct</object></type></argument><argument name='types'><type><mapping><indextype><int/></indextype><valuetype><program/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_der_decode' homogen-type='method'><doc><text><p>decode a DER encoded object using universal data types</p>
</text><group><param name='data'/><text><p>a DER encoded object</p>
</text></group><group><returns/><text><p>an object from <ref resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</ref> or
   either <ref resolved='predef::Standards.ASN1.Decode.primitive'>Standards.ASN1.Decode.primitive</ref> or
   <ref resolved='predef::Standards.ASN1.Decode.constructed'>Standards.ASN1.Decode.constructed</ref> if the type is unknown.</p>
</text></group></doc>
<method name='simple_der_decode'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Decode.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></returntype>
</method>
</docgroup>
</module>

<module name='Types'><doc><text><p>Encodes various asn.1 objects according to the Distinguished
 Encoding Rules (DER)</p>
</text></doc>

<class name='Object'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Generic, abstract base class for ASN1 data types.</p>
</text></doc><docgroup homogen-name='get_cls' homogen-type='method'><doc><text><p>Get the class of this object.</p>
</text><group><returns/><text><p>The class of this object.</p>
</text></group></doc>
<method name='get_cls'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tag' homogen-type='method'><doc><text><p>Get the tag for this object.</p>
</text><group><returns/><text><p>The tag for this object.</p>
</text></group></doc>
<method name='get_tag'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_combined_tag' homogen-type='method'><doc><text><p>Get the combined tag (tag + class) for this object.</p>
</text><group><returns/><text><p>the combined tag header</p>
</text></group></doc>
<method name='get_combined_tag'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_der' homogen-type='method'><doc><text><p>Get the DER encoded version of this object.</p>
</text><group><returns/><text><p>DER encoded representation of this object.</p>
</text></group></doc>
<method name='get_der'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Compound'><source-position first-line='165' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Compound object primitive</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='167' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='elements'><doc><text><p>contents of compound object, elements are from <ref resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</ref></p>
</text></doc>
<variable name='elements'><source-position first-line='172' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><array><valuetype><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></valuetype></array></type></variable>
</docgroup>
</class>

<class name='String'><source-position first-line='219' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>string object primitive</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='value'><doc><text><p>value of object</p>
</text></doc>
<variable name='value'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><string/></type></variable>
</docgroup>
</class>

<class name='Boolean'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>boolean object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='261' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='value'><doc><text><p>value of object</p>
</text></doc>
<variable name='value'><source-position first-line='266' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><int/></type></variable>
</docgroup>
</class>

<class name='Integer'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Integer object
 All integers are represented as bignums, for simplicity</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='298' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='value'><doc><text><p>value of object</p>
</text></doc>
<variable name='value'><source-position first-line='303' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
</docgroup>
</class>

<class name='Enumerated'><source-position first-line='351' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Enumerated object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Integer'><doc>
</doc>
<inherit name='Integer'><source-position first-line='353' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Integer'>Integer</classname></inherit>
</docgroup>
</class>

<class name='BitString'><source-position first-line='359' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Bit string object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='361' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='value'><doc><text><p>value of object</p>
</text></doc>
<variable name='value'><source-position first-line='366' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='set_from_ascii' homogen-type='method'><doc><text><p>Set the bitstring value as a string with <expr>"1"</expr> and
 <expr>"0"</expr>.</p>
</text></doc>
<method name='set_from_ascii'><source-position first-line='378' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.BitString'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_length' homogen-type='method'><doc><text><p>Sets the length of the bit string to <ref resolved='predef::Standards.ASN1.Types.BitString.set_length.len'>len</ref> number of bits.</p>
</text></doc>
<method name='set_length'><source-position first-line='387' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='OctetString'><source-position first-line='431' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Octet string object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='433' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='Null'><source-position first-line='439' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Null object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='441' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
</class>

<class name='Identifier'><source-position first-line='458' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Object identifier object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Object'><doc>
</doc>
<inherit name='Object'><source-position first-line='460' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Object'>Object</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='id'><doc><text><p>value of object</p>
</text></doc>
<variable name='id'><source-position first-line='465' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Returns a new <ref resolved='predef::Standards.ASN1.Types.Identifier'>Identifier</ref> object with <ref resolved='predef::Standards.ASN1.Types.Identifier.append.args'>args</ref> appended to the
 ID path.</p>
</text></doc>
<method name='append'><source-position first-line='481' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='args'><type><varargs><int/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Identifier'>this_program</object></returntype>
</method>
</docgroup>
</class>

<class name='UTF8String'><source-position first-line='543' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>UTF8 string object</p>
<p> Character set: ISO/IEC 10646-1 (compatible with Unicode).</p>
<p> Variable width encoding, see rfc2279.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='545' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='Sequence'><source-position first-line='565' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Sequence object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Compound'><doc>
</doc>
<inherit name='Compound'><source-position first-line='567' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Compound'>Compound</classname></inherit>
</docgroup>
</class>

<class name='Set'><source-position first-line='580' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Set object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Compound'><doc>
</doc>
<inherit name='Compound'><source-position first-line='582' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.Compound'>Compound</classname></inherit>
</docgroup>
</class>

<class name='PrintableString'><source-position first-line='617' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>PrintableString object</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='619' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='TeletexString'><source-position first-line='661' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>TeletexString object</p>
<p> Avoid this one; it seems to be common that this type is used to
 label strings encoded with the ISO 8859-1 character set (use
 asn1_broken_teletex_string for that). From
 http://www.mindspring.com/~asn1/nlsasn.htm:</p>
<p> /.../ Types GeneralString, VideotexString, TeletexString
 (T61String), and GraphicString exist in earlier versions
 [pre-1994] of ASN.1. They are considered difficult to use
 correctly by applications providing national language support.
 Varying degrees of application support for T61String values seems
 to be most common in older applications. Correct support is made
 more difficult, as character values available in type T61String
 have changed with the addition of new register entries from the
 1984 through 1997 versions.</p>
<p> This implementation is based on the description of T.61 and T.51
 in "Some functions for representing T.61 characters from the
 X.500 Directory Service in ISO 8859 terminals (Version 0.2. July
 1994.)" by Enrique Silvestre Mora (mora@si.uji.es), Universitat
 Jaume I, Spain, found in the package
 ftp://pereiii.uji.es/pub/uji-ftp/unix/ldap/iso-t61.translation.tar.Z</p>
<p> The translation is only complete for 8-bit latin 1 strings. It
 encodes strictly to T.61, but decodes from the superset T.51.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='663' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='BrokenTeletexString'><source-position first-line='1036' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>(broken) TeletexString object</p>
<p> Encodes and decodes latin1, but labels it TeletexString, as is
 common in many broken programs (e.g. Netscape 4.0X).</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='1038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='IA5String'><source-position first-line='1056' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>IA5 String object</p>
<p> Character set: ASCII. Fixed width encoding with 1 octet per
 character.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='1058' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='VisibleString'><source-position first-line='1064' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='1065' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='UTC'><source-position first-line='1071' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><docgroup homogen-type='inherit' homogen-name='String'><doc>
</doc>
<inherit name='String'><source-position first-line='1073' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.String'>String</classname></inherit>
</docgroup>
</class>

<class name='UniversalString'><source-position first-line='1091' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Universal String object</p>
<p> Character set: ISO/IEC 10646-1 (compatible with Unicode).
 Fixed width encoding with 4 octets per character.</p>
</text><group><fixme/><text><p>The encoding is very likely UCS-4, but that's not yet verified.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='OctetString'><doc>
</doc>
<inherit name='OctetString'><source-position first-line='1093' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.OctetString'>OctetString</classname></inherit>
</docgroup>
</class>

<class name='BMPString'><source-position first-line='1118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>BMP String object</p>
<p> Character set: ISO/IEC 10646-1 (compatible with Unicode).
 Fixed width encoding with 2 octets per character.</p>
<p> FIXME: The encoding is very likely UCS-2, but that's not yet verified.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='OctetString'><doc>
</doc>
<inherit name='OctetString'><source-position first-line='1120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><classname resolved='predef::Standards.ASN1.Types.OctetString'>OctetString</classname></inherit>
</docgroup>
</class>

<class name='MetaExplicit'><source-position first-line='1139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/><doc><text><p>Meta-instances handle a particular explicit tag and set of types.</p>
</text><group><fixme/><text><p>document me!</p>
</text></group></doc></class><docgroup homogen-name='make_combined_tag' homogen-type='method'><doc><text><p>Combines tag and class as a single integer, in a somewhat arbitrary
 way. This works also for tags beyond 31 (although not for tags
 beyond 2^30.</p>
</text><group><param name='cls'/><text><p>ASN1 type class</p>
</text></group><group><param name='tag'/><text><p>ASN1 type tag</p>
</text></group><group><returns/><text><p>combined tag</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Standards.ASN1.Types.extract_tag'>Standards.ASN1.Types.extract_tag</ref>
  <ref resolved='predef::Standards.ASN1.Types.extract_cls'>Standards.ASN1.Types.extract_cls</ref></p>
</text></group></doc>
<method name='make_combined_tag'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='cls'><type><int/></type></argument><argument name='tag'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='extract_tag' homogen-type='method'><doc><text><p>extract ASN1 type tag from a combined tag</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ASN1.Types.make_combined_tag'>Standards.ASN1.Types.make_combined_tag</ref></p>
</text></group></doc>
<method name='extract_tag'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='extract_cls' homogen-type='method'><doc><text><p>extract ASN1 type class from a combined tag</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ASN1.Types.make_combined_tag'>Standards.ASN1.Types.make_combined_tag</ref></p>
</text></group></doc>
<method name='extract_cls'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_utf8_valid' homogen-type='method'><doc><text><p>Checks if a Pike string can be encoded with UTF8. That is
 always the case...</p>
</text></doc>
<method name='asn1_utf8_valid'><source-position first-line='533' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_printable_valid' homogen-type='method'><doc><text><p>Checks if a Pike string can be encoded as a <ref resolved='predef::Standards.ASN1.Types.PrintableString'>PrintableString</ref>.</p>
</text></doc>
<method name='asn1_printable_valid'><source-position first-line='611' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_teletex_valid' homogen-type='method'><doc/>
<method name='asn1_teletex_valid'><source-position first-line='627' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_broken_teletex_valid' homogen-type='method'><doc/>
<method name='asn1_broken_teletex_valid'><source-position first-line='1027' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_IA5_valid' homogen-type='method'><doc/>
<method name='asn1_IA5_valid'><source-position first-line='1046' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_universal_valid' homogen-type='method'><doc/>
<method name='asn1_universal_valid'><source-position first-line='1079' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='asn1_bmp_valid' homogen-type='method'><doc/>
<method name='asn1_bmp_valid'><source-position first-line='1107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ASN1.pmod/Types.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</module></module>



<module name='IDNA'><doc><text><p>This module implements various algorithms specified by
 the Internationalizing Domain Names in Applications (IDNA) memo by
 the Internet Engineering Task Force (IETF), see
 <url>ftp://ftp.rfc-editor.org/in-notes/rfc3490.txt</url>.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='Punycode'><doc><text><p>Punycode transcoder, see
 <url>ftp://ftp.rfc-editor.org/in-notes/rfc3492.txt</url>.
 Punycode is used by <ref resolved='predef::Standards.IDNA.to_ascii'>to_ascii</ref> as an "ASCII Compatible Encoding" when
 needed.</p>
</text></doc>
<variable name='Punycode'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/><type><object resolved='predef::Standards.IDNA'/></type></variable>
</docgroup>
<docgroup homogen-name='nameprep' homogen-type='method'><doc><text><p>Prepare a Unicode string for ACE transcoding.  Used by <ref resolved='predef::Standards.IDNA.to_ascii'>to_ascii</ref>.
 Nameprep is a profile of Stringprep, which is described in RFC 3454.</p>
</text><group><param name='s'/><text><p>The string to prep.</p>
</text></group><group><param name='allow_unassigned'/><text><p>Set this flag the the string to transform is a "query string",
   and not a "stored string".  See RFC 3454.</p>
</text></group></doc>
<method name='nameprep'><source-position first-line='311' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='allow_unassigned'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_ascii' homogen-type='method'><doc><text><p>The to_ascii operation takes a sequence of Unicode code points that
 make up one label and transforms it into a sequence of code points in
 the ASCII range (0..7F).  If to_ascci succeeds, the original sequence
 and the resulting sequence are equivalent labels.</p>
</text><group><param name='s'/><text><p>The sequence of Unicode code points to transform.</p>
</text></group><group><param name='allow_unassigned'/><text><p>Set this flag if the the string to transform is a "query string",
   and not a "stored string".  See RFC 3454.</p>
</text></group><group><param name='use_std3_ascii_rules'/><text><p>Set this flag to enforce the restrictions on ASCII characters in
   host names imposed by STD3.</p>
</text></group></doc>
<method name='to_ascii'><source-position first-line='379' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='allow_unassigned'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='use_std3_ascii_rules'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_unicode' homogen-type='method'><doc><text><p>The to_unicode operation takes a sequence of Unicode code points that
 make up one label and returns a sequence of Unicode code points.  If
 the input sequence is a label in ACE form, then the result is an
 equivalent internationalized label that is not in ACE form, otherwise
 the original sequence is returned unaltered.</p>
</text><group><param name='s'/><text><p>The sequence of Unicode code points to transform.</p>
</text></group></doc>
<method name='to_unicode'><source-position first-line='412' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='zone_to_ascii' homogen-type='method'><doc><text><p>Takes a sequence of labels separated by '.' and applies
 <ref resolved='predef::Standards.IDNA.to_ascii'>to_ascii</ref> on each.</p>
</text></doc>
<method name='zone_to_ascii'><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='allow_unassigned'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='use_std3_ascii_rules'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='zone_to_unicode' homogen-type='method'><doc><text><p>Takes a sequence of labels separated by '.' and applies
 <ref resolved='predef::Standards.IDNA.to_unicode'>to_unicode</ref> on each.</p>
</text></doc>
<method name='zone_to_unicode'><source-position first-line='447' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/IDNA.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='EXIF'><doc><text><p>This module implements EXIF (Exchangeable image file format for
 Digital Still Cameras) 2.2 parsing.</p>
</text></doc><docgroup homogen-name='get_properties' homogen-type='method'><doc><text><p>Retrieve the EXIF properties of the given file.</p>
</text><group><param name='file'/><text><p>The Stdio.File object containing wanted EXIF properties.</p>
</text></group><group><returns/><text><p>A mapping with all found EXIF properties.</p>
</text></group></doc>
<method name='get_properties'><source-position first-line='1107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/EXIF.pmod'/>
<arguments><argument name='file'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
</module>

<class name='URI'><doc><text><p>This class implements URI parsing and resolving of relative references to
 absolute form, as defined in RFC 2396</p>
</text></doc><docgroup homogen-type='variable' homogen-name='scheme'><doc><text><p>Scheme component of URI</p>
</text></doc>
<variable name='scheme'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='authority'><doc><text><p>Authority component of URI (formerly called net_loc, from RFC 2396
 known as authority)</p>
</text></doc>
<variable name='authority'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='path'><doc><text><p>Path component of URI. May be empty, but not undefined.</p>
</text></doc>
<variable name='path'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='query'><doc><text><p>Query component of URI. May be 0 if not present.</p>
</text></doc>
<variable name='query'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='fragment'><doc><text><p>The fragment part of URI. May be 0 if not present.</p>
</text></doc>
<variable name='fragment'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Certain classes of URI (e.g. URL) may have these defined</p>
</text></doc>
<variable name='host'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
<variable name='user'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
<variable name='password'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='port'><doc><text><p>If no port number is present in URI, but the scheme used has a
 default port number, this number is put here.</p>
</text></doc>
<variable name='port'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='base_uri'><doc><text><p>The base URI object, if present</p>
</text></doc>
<variable name='base_uri'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/><type><object resolved='predef::Standards'>this_program</object></type></variable>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Compare this URI to something, in a canonical way.</p>
</text><group><param name='something'/><text><p>Compare the URI to this</p>
</text></group></doc>
<method name='`=='><source-position first-line='78' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/>
<arguments><argument name='something'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reparse_uri' homogen-type='method'><doc><text><p>Reparse the URI with respect to a new base URI. If
 no base_uri was supplied, the old base_uri is thrown away.
 The resolving is performed according to the guidelines
 outlined by RFC 2396, Uniform Resource Identifiers (URI): Generic Syntax.</p>
</text><group><param name='base_uri'/><text><p>Set the new base URI to this.</p>
</text></group></doc>
<method name='reparse_uri'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='reparse_uri'>
<arguments><argument name='base_uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='reparse_uri'>
<arguments><argument name='base_uri'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='base_uri'/><text><p>When supplied, will root the URI a the given location. This is
   needed to correctly verify relative URIs, but may be left out otherwise.
   If left out, and uri is a relative URI, an error is thrown.</p>
</text></group><group><param name='uri'/><text><p>When uri is another URI object, the created
   URI will inherit all properties of the supplied uri
   except, of course, for its base_uri.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument><argument name='base_uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument><argument name='base_uri'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='uri'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='uri'><type><string/></type></argument><argument name='base_uri'><type><object resolved='predef::Standards.URI'>URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='uri'><type><string/></type></argument><argument name='base_uri'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Assign a new value to a property of URI</p>
</text><group><param name='property'/><text><p>When any of the following properties are used, properties that
   depend on them are recalculated: user, password, host, port, authority, base_uri.</p>
</text></group><group><param name='value'/><text><p>The value to assign to <ref resolved='predef::Standards.URI.`-&gt;=.property'>property</ref></p>
</text></group></doc>
<method name='`-&gt;='><source-position first-line='321' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/>
<arguments><argument name='property'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]='><source-position first-line='322' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/>
<arguments><argument name='property'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>When cast to string, return the URI (in a canonicalized form).
 When cast to mapping, return a mapping with scheme, authority, user, password, host,
 port, path, query, fragment, raw_uri, base_uri as documented above.</p>
</text></doc>
<method name='cast'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><or><string/><mapping/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_path_query' homogen-type='method'><doc><text><p>Returns path and query part of the URI if present.</p>
</text></doc>
<method name='get_path_query'><source-position first-line='371' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/URI.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<module name='ID3'><doc><text><p>ID3 decoder/encoder.
 Supports versions 1.0, 1.1, 2.2-2.4.
 For more info see http://www.id3.org</p>
</text><group><note/><text><p>Note that this implementation is far
 from complete and that interface changes
 might be neccessary during the implementation
 of the full standard.</p>
</text></group></doc>

<class name='Buffer'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>A wrapper around a <ref resolved='predef::Stdio.File'>Stdio.File</ref> object that provides a read
 limit capability.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='buffer'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='buffer'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read <ref resolved='predef::Standards.ID3.Buffer.read.bytes'>bytes</ref> bytes from the buffer. Throw an exception
 if <ref resolved='predef::Standards.ID3.Buffer.read.bytes'>bytes</ref> is bigger than the number of bytes left in the
 buffer before reaching the limit set by <ref resolved='predef::Standards.ID3.Buffer.set_limit'>set_limit</ref>.</p>
</text></doc>
<method name='read'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='bytes'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><text><p>Preview the next byte. Technically it is read from the
 encapsulated buffer and put locally to avoid seeking.</p>
</text></doc>
<method name='peek'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_limit' homogen-type='method'><doc><text><p>Set an artificial EOF <ref resolved='predef::Standards.ID3.Buffer.set_limit.bytes'>bytes</ref> bytes further into the
 buffer.</p>
</text></doc>
<method name='set_limit'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='bytes'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bytes_left' homogen-type='method'><doc><text><p>The number of bytes left before reaching the limit set by
 <ref resolved='predef::Standards.ID3.Buffer.set_limit'>set_limit</ref>.</p>
</text></doc>
<method name='bytes_left'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='TagHeader'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>Represents an ID3v2 header.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='buffer'><type><or><void/><object resolved='predef::Standards.ID3.Buffer'>Buffer</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decode a tag header from <ref resolved='predef::Standards.ID3.TagHeader.decode.buffer'>buffer</ref> and store its data in
 this object.</p>
</text></doc>
<method name='decode'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='buffer'><type><object resolved='predef::Standards.ID3.Buffer'>Buffer</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encode the data in this tag and return as a string.</p>
</text></doc>
<method name='encode'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_flag_unsynchronisation' homogen-type='method'><doc><text><p>Should the unsynchronisation flag be set or not?</p>
</text></doc>
<method name='set_flag_unsynchronisation'><source-position first-line='168' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='frames'><type><array><valuetype><object>Frame</object></valuetype></array></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>

<class name='ExtendedHeader'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='194' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='buffer'><type><or><void/><object resolved='predef::Standards.ID3.Buffer'>Buffer</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc/>
<method name='decode'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='buffer'><type><object resolved='predef::Standards.ID3.Buffer'>Buffer</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc/>
<method name='encode'><source-position first-line='240' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='FrameData'><source-position first-line='312' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>Abstract class for frame data.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='data'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='changed' homogen-type='method'><doc><text><p>Is the content altered?</p>
</text></doc>
<method name='changed'><source-position first-line='323' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>



<class name='Tagv2'><source-position first-line='512' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>ID3 version 2 (2.2, 2.3, 2.4) Tags</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='526' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='buffer'><type><or><void/><object resolved='predef::Standards.ID3.Buffer'>Buffer</object><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument><argument name='_best_effort'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Tagv1'><source-position first-line='1162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>ID3 version 1.0 or 1.1 tag. This is really a clumsy way of reading
 ID3v1 tags, but it has the same interface as the v2 reader.</p>
</text></doc></class>

<class name='Tag'><source-position first-line='1262' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><doc><text><p>This is a ID3 tag super object, which encapsulates all versions
 ID3 tags. This is useful if you are only interested in the metadata
 of a file, and care not about how it is stored or have no interest
 in changing the data.</p>
</text><group><note/><text><p>Version 1 tag is searched only if version 2 isn't found.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Standards.ID3.Tagv2'>Tagv2</ref>, <ref resolved='predef::Standards.ID3.Tagv1'>Tagv1</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>The file object <ref resolved='predef::Standards.ID3.Tag.create.fd'>fd</ref> is searched for version 2 tags, and if
 not found, version 1 tags.</p>
</text><group><throws/><text><p>If no tag was found in the file an error is thrown.</p>
</text></group></doc>
<method name='create'><source-position first-line='1270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='fd'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>The index operators are overloaded to index the encapsulated
 Tagv1 or Tagv2 object.</p>
</text></doc>
<method name='`[]'><source-position first-line='1284' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'><source-position first-line='1285' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='version'><doc><text><p>The version of the encapsulated tag in the form <expr>"%d.%d.%d"</expr>.</p>
</text></doc>
<constant name='version'><source-position first-line='1297' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/></constant>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Indices will return the indices of the tag object.</p>
</text></doc>
<method name='_indices'><source-position first-line='1301' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Values will return the values of the tag object.</p>
</text></doc>
<method name='_values'><source-position first-line='1306' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='friendly_values' homogen-type='method'><doc><text><p>Returns tag values in a mapping. Only tag values that exists
 in ID3v1.1 is used. Nonexisting or undefined values will not
 appear in the mapping.</p>
<mapping><group><member><type><string/></type><index>"artist"</index></member><text><p>Takes its value from TPE1 or TP1 frames.</p>
</text></group><group><member><type><string/></type><index>"album"</index></member><text><p>Takes its value from TALB or TAL frames.</p>
</text></group><group><member><type><string/></type><index>"title"</index></member><text><p>Takes its value from TIT2 or TT2 frames.</p>
</text></group><group><member><type><string/></type><index>"genre"</index></member><text><p>Takes its value from TCON or TCM frames.</p>
</text></group><group><member><type><string/></type><index>"year"</index></member><text><p>Takes its value from TYER or TYE frames.</p>
</text></group><group><member><type><string/></type><index>"track"</index></member><text><p>Takes its value from TRCK or TRK frames.
      The string may be either in the <expr>"%d"</expr> form or in
      the <expr>"%d/%d"</expr> form.</p>
</text></group></mapping>
</text></doc>
<method name='friendly_values'><source-position first-line='1330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='synchsafe_to_int' homogen-type='method'><doc><text><p>Decodes a synchsafe integer, generated according to
 ID3v2.4.0-structure section 6.2.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.int_to_synchsafe'>int_to_synchsafe</ref></p>
</text></group></doc>
<method name='synchsafe_to_int'><source-position first-line='81' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='bytes'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='int_to_synchsafe' homogen-type='method'><doc><text><p>Encodes a integer to a synchsafe integer according to
 ID3v2.4.0-structure section 6.2.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.synchsafe_to_int'>synchsafe_to_int</ref></p>
</text></group></doc>
<method name='int_to_synchsafe'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><int/></type></argument><argument name='no_bytes'><type><or><void/><int/></or></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='resynchronise' homogen-type='method'><doc><text><p>Reverses the effects of unsyncronisation
 done according to ID3v2.4.0-structure section 6.1.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.unsynchronise'>unsynchronise</ref></p>
</text></group></doc>
<method name='resynchronise'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unsynchronise' homogen-type='method'><doc><text><p>Unsynchronises the string according to
 ID3v2.4.0-structure section 6.1.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.resynchronise'>resynchronise</ref></p>
</text></group></doc>
<method name='unsynchronise'><source-position first-line='261' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_string' homogen-type='method'><doc><text><p>Decodes the string <ref resolved='predef::Standards.ID3.decode_string.in'>in</ref> from the <ref resolved='predef::Standards.ID3.decode_string.type'>type</ref>, according to
 ID3v2.4.0-structure section 4, into a wide string.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.encode_string'>encode_string</ref></p>
</text></group></doc>
<method name='decode_string'><source-position first-line='270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><string/></type></argument><argument name='type'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_string' homogen-type='method'><doc><text><p>Encodes the string <ref resolved='predef::Standards.ID3.encode_string.in'>in</ref> to an int-string pair, where the
 integer is the encoding mode, according to ID3v2.4.0-structure,
 and the string is the encoded string. This function tries to
 minimize the size of the encoded string by selecting the most
 apropriate encoding method.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.decode_string'>decode_string</ref>, <ref resolved='predef::Standards.ID3.encode_strings'>encode_strings</ref></p>
</text></group></doc>
<method name='encode_string'><source-position first-line='291' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_strings' homogen-type='method'><doc><text><p>Encodes several strings in the same way as <ref resolved='predef::Standards.ID3.encode_string'>encode_string</ref>, but
 encodes all the strings with the same method, selected as in
 <ref resolved='predef::Standards.ID3.encode_string'>encode_string</ref>. The first element in the resulting array is the
 selected method, while the following elements are the encoded strings.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.ID3.decode_string'>decode_string</ref>, <ref resolved='predef::Standards.ID3.encode_string'>encode_string</ref></p>
</text></group></doc>
<method name='encode_strings'><source-position first-line='302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ID3.pmod'/>
<arguments><argument name='in'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='UUID'><doc><text><p>Support for Universal Unique Identifiers (UUID) and
 Globally Unique Identifiers (GUID).</p>
</text></doc>

<class name='UUID'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><doc><text><p>Represents an UUID</p>
</text></doc><docgroup homogen-type='variable' homogen-name='timestamp'><doc><text><p>60 bit value representing the time stamp.</p>
</text></doc>
<variable name='timestamp'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='posix_time' homogen-type='method'><doc><text><p>Returns the posix time of the UUID.</p>
</text></doc>
<method name='posix_time'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='version'><doc><text><p>The version of the UUID.</p>
</text></doc>
<variable name='version'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='str_version' homogen-type='method'><doc><text><p>Returns a string representation of the version, e.g.
 <expr>"Name-based"</expr>.</p>
</text></doc>
<method name='str_version'><source-position first-line='84' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='var'><doc><text><p>The variant of the UUID.</p>
</text></doc>
<variable name='var'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='str_variant' homogen-type='method'><doc><text><p>Returns a string representation of the variant, e.g.
 <expr>"IETF draft variant"</expr>.</p>
</text></doc>
<method name='str_variant'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='clk_seq'><doc><text><p>The clock sequence. Should be 13 to 15 bits depending on UUID
 version.</p>
</text></doc>
<variable name='clk_seq'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='node'><doc><text><p>The UUID node. Should be 48 bit.</p>
</text></doc>
<variable name='node'><source-position first-line='110' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='validate' homogen-type='method'><doc><text><p>Validates the current UUID.</p>
</text></doc>
<method name='validate'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='time_low' homogen-type='method'><doc><text><p>Returns the time_low field.</p>
</text></doc>
<method name='time_low'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='time_mid' homogen-type='method'><doc><text><p>Returns the time_mid field.</p>
</text></doc>
<method name='time_mid'><source-position first-line='140' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='time_hi_and_version' homogen-type='method'><doc><text><p>Returns the time_hi_and_version field.</p>
</text></doc>
<method name='time_hi_and_version'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encodes a binary representation of the UUID.</p>
</text></doc>
<method name='encode'><source-position first-line='150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='str' homogen-type='method'><doc><text><p>Creates a string representation of the UUID.</p>
</text></doc>
<method name='str'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='urn' homogen-type='method'><doc><text><p>Creates a URN representation of the UUID.</p>
</text></doc>
<method name='urn'><source-position first-line='184' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Optionally created with a string or binary representation of a UUID.</p>
</text></doc>
<method name='create'><source-position first-line='189' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='in'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='get_clock_state' homogen-type='method'><doc><text><p>Returns the internal clock state. Can be used for persistent
 storage when an application is terminated.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.UUID.set_clock_state'>set_clock_state</ref></p>
</text></group></doc>
<method name='get_clock_state'><source-position first-line='274' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_clock_state' homogen-type='method'><doc><text><p>Sets the internal clock state.</p>
</text><group><seealso/><text><p><ref resolved='predef::Standards.UUID.get_clock_state'>get_clock_state</ref></p>
</text></group></doc>
<method name='set_clock_state'><source-position first-line='281' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='last_time'><type><int/></type></argument><argument name='seq'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_version1' homogen-type='method'><doc><text><p>Creates a new version 1 UUID.</p>
</text><group><param name='node'/><text><p>Either the 48 bit IEEE 802 (aka MAC) address of the system or -1.</p>
</text></group></doc>
<method name='make_version1'><source-position first-line='288' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='node'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_version3' homogen-type='method'><doc><text><p>Creates a version 3 UUID with a <ref resolved='predef::Standards.UUID.make_version3.name'>name</ref> string and a binary
 representation of a name space UUID.</p>
</text></doc>
<method name='make_version3'><source-position first-line='303' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='namespace'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_version4' homogen-type='method'><doc><text><p>Creates a version 4 (random) UUID.</p>
</text></doc>
<method name='make_version4'><source-position first-line='343' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='new' homogen-type='method'><doc><text><p>Return a new binary UUID.</p>
</text></doc>
<method name='new'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='format_uuid' homogen-type='method'><doc><text><p>Returns the string representation of the binary UUID <ref resolved='predef::Standards.UUID.format_uuid.uuid'>uuid</ref>.</p>
</text></doc>
<method name='format_uuid'><source-position first-line='362' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='uuid'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_uuid' homogen-type='method'><doc><text><p>Returns the binary representation of the UUID <ref resolved='predef::Standards.UUID.parse_uuid.uuid'>uuid</ref>.</p>
</text></doc>
<method name='parse_uuid'><source-position first-line='368' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='uuid'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_string' homogen-type='method'><doc><text><p>Return a new UUID string.</p>
</text></doc>
<method name='new_string'><source-position first-line='374' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='Nil_UUID'><doc><text><p>The Nil UUID.</p>
</text></doc>
<constant name='Nil_UUID'><source-position first-line='382' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NameSpace_DNS'><doc><text><p>Name space UUID for DNS.</p>
</text></doc>
<constant name='NameSpace_DNS'><source-position first-line='385' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NameSpace_URL'><doc><text><p>Name space UUID for URL.</p>
</text></doc>
<constant name='NameSpace_URL'><source-position first-line='388' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NameSpace_OID'><doc><text><p>Name space UUID for OID.</p>
</text></doc>
<constant name='NameSpace_OID'><source-position first-line='391' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NameSpace_X500'><doc><text><p>Name space UUID for X500.</p>
</text></doc>
<constant name='NameSpace_X500'><source-position first-line='394' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/></constant>
</docgroup>
<docgroup homogen-name='make_null' homogen-type='method'><doc><text><p>Creates a null UUID object.</p>
</text></doc>
<method name='make_null'><source-position first-line='397' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments/>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_dns' homogen-type='method'><doc><text><p>Creates a DNS UUID with the given DNS name.</p>
</text></doc>
<method name='make_dns'><source-position first-line='409' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_url' homogen-type='method'><doc><text><p>Creates a URL UUID with the given URL.</p>
</text></doc>
<method name='make_url'><source-position first-line='414' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_oid' homogen-type='method'><doc><text><p>Creates an OID UUID with the given OID.</p>
</text></doc>
<method name='make_oid'><source-position first-line='419' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_x500' homogen-type='method'><doc><text><p>Creates an X500 UUID with the gived X500 address.</p>
</text></doc>
<method name='make_x500'><source-position first-line='424' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/UUID.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Standards.UUID.UUID'>UUID</object></returntype>
</method>
</docgroup>
</module>

<module name='ISO639_2'><docgroup homogen-name='get_language' homogen-type='method'><doc><text><p>Look up the language name given an ISO 639-2 code
 in lower case. It will first be looked up in the
 ISO 639-2/T table and then in ISO 639-2/B if the
 first lookup failed. Returns zero typed zero on
 failure.</p>
</text></doc>
<method name='get_language'><source-position first-line='499' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_language_t' homogen-type='method'><doc><text><p>Look up the language name given an ISO 639-2/T code
 in lower case. Returns zero typed zero on failure.</p>
</text></doc>
<method name='get_language_t'><source-position first-line='505' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_language_b' homogen-type='method'><doc><text><p>Look up the language name given an ISO 639-2/B code
 in lower case. Returns zero typed zero on failure.</p>
</text></doc>
<method name='get_language_b'><source-position first-line='511' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_languages' homogen-type='method'><doc><text><p>Return a mapping from ISO 639-2/T + ISO 639-2/B codes
 to language names.</p>
</text></doc>
<method name='list_languages'><source-position first-line='517' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_languages_t' homogen-type='method'><doc><text><p>Return a mapping from ISO 639-2/T codes to language
 names.</p>
</text></doc>
<method name='list_languages_t'><source-position first-line='524' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_languages_b' homogen-type='method'><doc><text><p>Return a mapping from ISO 639-2/B codes to language
 names.</p>
</text></doc>
<method name='list_languages_b'><source-position first-line='530' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='convert_b_to_t' homogen-type='method'><doc><text><p>Converts an ISO 639-2/B code to an ISO 639-2/T code.</p>
</text></doc>
<method name='convert_b_to_t'><source-position first-line='536' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='convert_t_to_b' homogen-type='method'><doc><text><p>Converts an ISO 639-2/T code to an ISO 639-2/B code.</p>
</text></doc>
<method name='convert_t_to_b'><source-position first-line='544' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='map_639_1' homogen-type='method'><doc><text><p>Look up the ISO 639-2/T code given an ISO 639-1 code
 in lower case.</p>
</text></doc>
<method name='map_639_1'><source-position first-line='720' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='map_to_639_1' homogen-type='method'><doc><text><p>Look up the ISO 639-1 code given an ISO 639-2/T code
 in lower case.</p>
</text></doc>
<method name='map_to_639_1'><source-position first-line='726' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments><argument name='code'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_639_1' homogen-type='method'><doc><text><p>Return a mapping from ISO 639-1 code to ISO 639-2/T code.</p>
</text></doc>
<method name='list_639_1'><source-position first-line='731' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Standards.pmod/ISO639_2.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
</module></module>





























<module name='Calendar'>

<module name='Discordian'><doc><text><p>The Discordian calendar, as described on page 34
 in the fourth edition of Principia Discordia.</p>
<p> Chaotic enough, it's quite simpler then the <ref resolved='predef::Calendar.Gregorian'>Gregorian</ref> calendar;
 weeks are 5 days, and evens up on a year. Months are 73 days.</p>
<p> The leap day is inserted at the 60th day of the first month 
 (Chaos), giving the first month 74 days. The description of
 the calendar is a "perpetual date converter from the gregorian
 to the POEE calendar", so the leap years are the same as
 the gregorians.</p>
<p> The Principia calls months "seasons", but for simplicity I 
 call them months in this calendar.</p>
<p> If anyone know more about how to treat the leap day - now it is 
 inserted in the month and week where it lands, rather then being
 separated from month and weeks, I'm interested to know.</p>
<p>	- Mirar, Pope of POEE.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Gregorian'><doc>
</doc>
<inherit name='Gregorian'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Discordian.pmod'/><classname resolved='predef::Calendar.Gregorian'>.Gregorian</classname></inherit>
</docgroup>
</module>

<class name='Ruleset'><doc><text><p>This is the container class for rules.</p>
</text></doc><docgroup homogen-name='set_timezone' homogen-type='method'><doc/>
<method name='set_timezone'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments><argument name='t'><type><or><string/><object resolved='predef::Calendar.Rule.Timezone'>.Rule.Timezone</object></or></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Ruleset'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_language' homogen-type='method'><doc/>
<method name='set_language'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments><argument name='lang'><type><or><string/><object>.Rule.Language</object></or></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Ruleset'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_abbr2zone' homogen-type='method'><doc><text><p>Sets the guess-mapping for timezones. Default is the mapping:</p>
<p> <matrix>
 <r><c><b>Abbreviation</b></c><c><b>Interpretation</b></c>
   <c><b>UTC</b></c></r>
 <r><c>AMT</c><c>America/Manaus</c><c>UTC-4</c></r>
 <r><c>AST</c><c>America/Curacao</c><c>UTC-4</c></r>
 <r><c>CDT</c><c>America/Costa_Rica</c><c>UTC-5</c></r>
 <r><c>CST</c><c>America/El Salvador</c><c>UTC-6</c></r>
 <r><c>EST</c><c>America/Panama</c><c>UTC-5</c></r>
 <r><c>GST</c><c>Asia/Dubai</c><c>UTC+4</c></r>
 <r><c>IST</c><c>Asia/Jerusalem</c><c>UTC+2</c></r>
 <r><c>WST</c><c>Australia/Perth</c><c>UTC+8</c></r>
 </matrix></p>
</text><group><seealso/><text><p><ref>YMD.parse</ref></p>
</text></group></doc>
<method name='set_abbr2zone'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments><argument name='abbr2zone'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Ruleset'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_rule' homogen-type='method'><doc/>
<method name='set_rule'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments><argument name='rule'><type><or><object>.Rule.Language</object><object resolved='predef::Calendar.Rule.Timezone'>.Rule.Timezone</object></or></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Ruleset'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clone' homogen-type='method'><doc/>
<method name='clone'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments/>
<returntype><object resolved='predef::Calendar.Ruleset'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc/>
<method name='`=='><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Ruleset.pike'/>
<arguments><argument name='other'><type><object resolved='predef::Calendar.Ruleset'>this_program</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>

<module name='Event'>

<class name='Event'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>Event is an abstract class, defining what methods an Event
 need to have.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='is_event'><doc><text><p>This constant may be used to identify an event object.</p>
</text></doc>
<constant name='is_event'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>This calculates the next or previous occurance of the event,
 from the given timerange's start, including any event occuring
 at the start if that flag is set.</p>
<p> It returns zero if there is no next event.</p>
<p> These methods are virtual in the base class.</p>
</text></doc>
<method name='next'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='from'><type><or><void/><object>.TimeRanges.TimeRange</object></or></type></argument><argument name='including'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
<method name='previous'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='from'><type><or><void/><object>.TimeRanges.TimeRange</object></or></type></argument><argument name='including'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='scan' homogen-type='method'><doc><text><p>This calculates the eventual events that is contained or
 overlapped by the given timerange. <ref resolved='predef::Calendar.Event.Event.scan'>scan</ref> uses <ref resolved='predef::Calendar.Event.Event.next'>next</ref>, if not
 overloaded.</p>
</text><group><example/><text><p>Calendar.Event.Easter()-&gt;scan(Calendar.Year(2000))
     =&gt; ({ Day(Sun 23 Apr 2000) })</p>
</text></group><group><note/><text><p><ref resolved='predef::Calendar.Event.Event.scan'>scan</ref> can return an array of overlapping timeranges.</p>
<p>   This method must use <tt>in-&gt;calendar_object-&gt;</tt><i>type</i>
   to create the returned timeranges, and must keep the ruleset.</p>
</text></group></doc>
<method name='scan'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='in'><type><object>.TimeRanges.TimeRange</object></type></argument></arguments>
<returntype><array><valuetype><object>.TimeRanges.TimeRange</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='scan_events' homogen-type='method'><doc><text><p>Returns a mapping with time ranges mapped to events.</p>
</text></doc>
<method name='scan_events'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='in'><type><object>.TimeRanges.TimeRange</object></type></argument></arguments>
<returntype><mapping><indextype><object>.TimeRanges.TimeRange</object></indextype><valuetype><object resolved='predef::Calendar.Event.Event'>Event</object></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Joins several events into one <ref resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</ref>.</p>
</text></doc>
<method name='`|'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='with'><type><varargs><object resolved='predef::Calendar.Event.Event'>Event</object></varargs></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</object></returntype>
</method>
<method name='``|'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='with'><type><object resolved='predef::Calendar.Event.Event'>Event</object></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe' homogen-type='method'><doc><text><p>Returns a description of the event.</p>
</text></doc>
<method name='describe'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='NullEvent'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>A non-event.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_nullevent'><doc><text><p>This constant may be used to identify a NullEvent.</p>
</text></doc>
<constant name='is_nullevent'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
</class>

<class name='Day_Event'><source-position first-line='131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p><ref resolved='predef::Calendar.Event.Day_Event'>Day_Event</ref> is an abstract class, extending <ref resolved='predef::Calendar.Event.Event'>Event</ref> for events
 that are single days, using julian day numbers for the calculations.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_day_event'><doc><text><p>This constant may be used to identify <ref resolved='predef::Calendar.Event.Day_Event'>Day_Event</ref> objects.</p>
</text></doc>
<constant name='is_day_event'><source-position first-line='136' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NODAY'><doc><text><p>Returned from <ref resolved='predef::Calendar.Event.Day_Event.scan_jd'>scan_jd</ref> if the even searched for did not
 exist.</p>
</text></doc>
<constant name='NODAY'><source-position first-line='140' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
<docgroup homogen-name='scan_jd' homogen-type='method'><doc><text><p>These methods has to be defined, and is what
 really does some work. It should return the next or previos
 julian day (&gt;<i>jd</i>) when the event occurs,
 or the constant <ref resolved='predef::Calendar.Event.Day_Event.NODAY'>NODAY</ref> if it doesn't.</p>
</text><group><param name='direction'/><text><int><group><value>1</value><text><p>Forward (next),</p>
</text></group><group><value>-1</value><text><p>Backward (previous).</p>
</text></group></int>
</text></group></doc>
<method name='scan_jd'>
<arguments><argument name='realm'><type><object resolved='predef::Calendar.Calendar'>.Calendar</object></type></argument><argument name='jd'><type><int/></type></argument><argument name='direction'><type><or><int><min>-1</min><max>-1</max></int><int><min>1</min><max>1</max></int></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>Uses the virtual method <ref resolved='predef::Calendar.Event.Day_Event.scan_jd'>scan_jd</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Calendar.Event.Event.next'>Event.next</ref></p>
</text></group></doc>
<method name='next'><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='from'><type><or><void/><object>.TimeRanges.TimeRange</object></or></type></argument><argument name='including'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='previous' homogen-type='method'><doc><text><p>Uses the virtual method <ref resolved='predef::Calendar.Event.Day_Event.scan_jd'>scan_jd</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Calendar.Event.Event.next'>Event.previous</ref></p>
</text></group></doc>
<method name='previous'><source-position first-line='178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='from'><type><or><void/><object>.TimeRanges.TimeRange</object></or></type></argument><argument name='including'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
</class>

<class name='Nameday'><source-position first-line='196' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This is created by the <ref resolved='predef::Calendar.Event.Namedays'>Namedays</ref> classes
 to represent an event for a name.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='198' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_nameday'><doc><text><p>This constant may be used to identify <ref resolved='predef::Calendar.Event.Nameday'>Nameday</ref> objects.</p>
</text></doc>
<constant name='is_nameday'><source-position first-line='201' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
</class>

<class name='Namedays'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This contains a ruleset about namedays.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='226' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_namedays'><doc><text><p>This constant may be used to identify <ref resolved='predef::Calendar.Event.Namedays'>Namedays</ref>.</p>
</text></doc>
<constant name='is_namedays'><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
<docgroup homogen-name='names' homogen-type='method'><doc><text><p>Gives back an array of names that occur during
 the time period, in no particular order.</p>
</text></doc>
<method name='names'><source-position first-line='254' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='t'><type><object>.TimeRanges.TimeRange</object></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='namedays' homogen-type='method'><doc><text><p>Gives back an table of days with names that occur during
 the time period. Note that days without names will not
 appear in the returned mapping.</p>
</text></doc>
<method name='namedays'><source-position first-line='263' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='t'><type><object>.TimeRanges.TimeRange</object></type></argument></arguments>
<returntype><mapping><indextype><object>.TimeRanges.TimeRange</object></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
</class>

<class name='SuperNamedays'><source-position first-line='407' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>Container for merged <ref resolved='predef::Calendar.Event.Namedays'>Namedays</ref> objects.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='409' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
</class>

<class name='Gregorian_Fixed'><source-position first-line='555' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>A set date of year, counting leap day in February,
 used for the Gregorian fixed events in the events list.</p>
</text><group><seealso/><text><p><ref resolved='predef::Calendar.Event.Julian_Fixed'>Julian_Fixed</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='557' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_fixed'><doc><text><p>This constant may be used to identify <ref resolved='predef::Calendar.Event.Gregorian_Fixed'>Gregorian_Fixed</ref> objects.</p>
</text></doc>
<constant name='is_fixed'><source-position first-line='560' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='id'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='month_day'><type><int><min>1</min><max>31</max></int></type></argument><argument name='month'><type><int><min>1</min><max>12</max></int></type></argument><argument name='extra'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Julian_Fixed'><source-position first-line='614' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>A set date of year, counting leap day in February,
 used for the Gregorian fixed events in the events list.</p>
</text><group><seealso/><text><p><ref resolved='predef::Calendar.Event.Gregorian_Fixed'>Gregorian_Fixed</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Gregorian_Fixed'><doc>
</doc>
<inherit name='Gregorian_Fixed'><source-position first-line='616' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Gregorian_Fixed'>Gregorian_Fixed</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='is_julian_fixed'><doc><text><p>This constant may be used to identify <ref resolved='predef::Calendar.Event.Julian_Fixed'>Julian_Fixed</ref> objects.</p>
</text></doc>
<constant name='is_julian_fixed'><source-position first-line='619' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/></constant>
</docgroup>
</class>

<class name='Date'><source-position first-line='654' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents the event of a given gregorian date. For instance, 
 <tt>Event.Date(12,10)-&gt;next(Day())</tt> finds the next 12 of October.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='656' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The event is created by a given month day and a month number
 (1=January, 12=December).</p>
</text></doc>
<method name='create'>
<arguments><argument name='month_day'><type><int><min>1</min><max>31</max></int></type></argument><argument name='month'><type><int><min>1</min><max>12</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Date_Weekday'><source-position first-line='703' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents the event that a given gregorian date appears
 a given weekday. For instance, 
 <tt>Event.Date_Weekday(12,10,5)-&gt;next(Day())</tt> finds the next 12 of
 October that is a friday.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='705' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The event is created by a given month day,
 a month number (1=January, 12=December), and a 
 weekday number (1=Monday, 7=Sunday).</p>
</text><group><note/><text><p>The week day numbers used are the same as the day of week in
 the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar - the <ref resolved='predef::Calendar.Gregorian'>Gregorian</ref> calendar has 1=Sunday,
 7=Saturday.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='month_day'><type><int/></type></argument><argument name='month'><type><int/></type></argument><argument name='weekday'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Monthday_Weekday'><source-position first-line='762' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents the event that a given gregorian 
 day of month appears a given weekday. For instance,
 <tt>Event.Monthday_Weekday(13,5)-&gt;next(Day())</tt> finds the next
 friday the 13th.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='764' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The event is created by a given month day,
 and a weekday number (1=Monday, 7=Sunday).</p>
</text><group><note/><text><p>The week day numbers used are the same as the day of week in
 the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar - the <ref resolved='predef::Calendar.Gregorian'>Gregorian</ref> calendar has 1=Sunday,
 7=Saturday.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='month_day'><type><int/></type></argument><argument name='weekday'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Weekday'><source-position first-line='824' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents any given weekday. For instance, 
 <tt>Event.Weekday(5)-&gt;next(Day())</tt>	finds the next friday.</p>
<p> These are also available as the pre-defined events <ref>Events.monday</ref>,
 <ref>Events.tuesday</ref>, <ref>Events.wednesday</ref>, <ref>Events.thursday</ref>,
 <ref>Events.friday</ref>, <ref>Events.saturday</ref> and <ref>Events.sunday</ref>.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='826' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The event is created by a given weekday number (1=Monday, 7=Sunday).</p>
</text><group><note/><text><p>The week day numbers used are the same as the day of week in
 the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar - the <ref resolved='predef::Calendar.Gregorian'>Gregorian</ref> calendar has 1=Sunday,
 7=Saturday.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='weekday'><type><int/></type></argument><argument name='id'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Easter'><source-position first-line='854' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents an easter.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Day_Event'><doc>
</doc>
<inherit name='Day_Event'><source-position first-line='856' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Day_Event'>Day_Event</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p><ref resolved='predef::Calendar.Event.Easter.create.shift'>shift</ref> is the year to shift from old to new style easter
 calculation. Default is 1582.</p>
</text></doc>
<method name='create'>
<arguments><argument name='shift'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='easter_yd' homogen-type='method'><doc><text><p>Calculates the year day for the easter.</p>
</text></doc>
<method name='easter_yd'><source-position first-line='909' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='y'><type><int/></type></argument><argument name='yjd'><type><int/></type></argument><argument name='leap'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Easter_Relative'><source-position first-line='952' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents an easter relative event.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Easter'><doc>
</doc>
<inherit name='Easter'><source-position first-line='954' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Easter'>Easter</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='id'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Orthodox_Easter_Relative'><source-position first-line='982' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents an orthodox easter relative event.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Easter_Relative'><doc>
</doc>
<inherit name='Easter_Relative'><source-position first-line='984' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Easter_Relative'>Easter_Relative</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='id'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Monthday_Weekday_Relative'><source-position first-line='1001' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class represents a monthday weekday relative event or
 n:th special weekday event, e.g.
 "fourth sunday before 24 dec" =&gt; md=24,mn=12,wd=7,n=-4</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Gregorian_Fixed'><doc>
</doc>
<inherit name='Gregorian_Fixed'><source-position first-line='1003' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Gregorian_Fixed'>Gregorian_Fixed</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='1014' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/>
<arguments><argument name='id'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='md'><type><int><min>1</min><max>31</max></int></type></argument><argument name='mn'><type><int><min>1</min><max>12</max></int></type></argument><argument name='_wd'><type><int><min>1</min><max>7</max></int></type></argument><argument name='_n'><type><int/></type></argument><argument name='_inclusive'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='SuperEvent'><source-position first-line='1073' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>This class holds any number of events,
 and adds the functionality of event flags.</p>
</text><group><note/><text><p>Scanning (scan_events,next,etc) will drop flag information.
 Dig out what you need with <ref resolved='predef::Calendar.Event.SuperEvent.filter_flag'>holidays</ref> et al first.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='1075' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Filter out the events that has a certain flag set.
	Holidays (flag "h") are the days that are marked
	red in the calendar (non-working days),
	Flagdays (flag "f") are the days that the flag
	should be visible in (only some countries).</p>
</text></doc>
<method name='filter_flag'>
<arguments><argument name='flag'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</object></returntype>
</method>
<method name='holidays'>
<arguments/>
<returntype><object resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</object></returntype>
</method>
<method name='flagdays'>
<arguments/>
<returntype><object resolved='predef::Calendar.Event.SuperEvent'>SuperEvent</object></returntype>
</method>
</docgroup>
</class>

<class name='TZShift_Event'><source-position first-line='1241' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><doc><text><p>Event containing information about when a timezone is changed.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Event'><doc>
</doc>
<inherit name='Event'><source-position first-line='1243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><classname resolved='predef::Calendar.Event.Event'>Event</classname></inherit>
</docgroup>
<docgroup homogen-name='scan_shift' homogen-type='method'><doc/>
<method name='scan_shift'><source-position first-line='1270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='tz'><type><object resolved='predef::Calendar.Rule.Timezone'>.Rule.Timezone</object></type></argument><argument name='from'><type><object>.TimeRanges.TimeRange</object></type></argument><argument name='direction'><type><int/></type></argument><argument name='including'><type><int/></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='scan_history' homogen-type='method'><doc/>
<method name='scan_history'><source-position first-line='1280' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='tz'><type><object resolved='predef::Calendar.Rule.Timezone'>.Rule.Timezone</object></type></argument><argument name='from'><type><object>.TimeRanges.TimeRange</object></type></argument><argument name='direction'><type><int/></type></argument><argument name='including'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='scan_rule' homogen-type='method'><doc/>
<method name='scan_rule'><source-position first-line='1328' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Event.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='tz'><type><object resolved='predef::Calendar.Rule.Timezone'>.Rule.Timezone</object></type></argument><argument name='from'><type><object>.TimeRanges.TimeRange</object></type></argument><argument name='direction'><type><int/></type></argument><argument name='including'><type><int/></type></argument></arguments>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
</class></module>

<module name='Austrian'><doc><text><p>Same as the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar,
 but with austrian as the default language.</p>
<p> This calendar exist only for backwards compatible 
 purposes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='ISO'><doc>
</doc>
<inherit name='ISO'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Austrian.pmod'/><classname resolved='predef::Calendar.ISO'>.ISO</classname></inherit>
</docgroup>
</module>
<source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<module name='TZnames'>
<source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<doc>
<text>
<source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<p>This module contains listnings of available timezones,
in some different ways</p>
</text>

</doc>
<docgroup homogen-type='constant' homogen-name='zones'>
<constant name='zones'><typevalue>
   <mapping><indextype><string/></indextype>
      <valuetype>
       <array><valuetype><string/></valuetype></array></valuetype></mapping></typevalue>
</constant><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<doc>
<text>
<source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<p>This constant is a mapping that can be
used to loop over to get all the region-based
timezones.</p>

<p>It looks like this:
<pre>
([ "America": ({ "Los_Angeles", "Chicago", <i>[...]</i> }),
   "Europe":  ({ "Stockholm", <i>[...]</i> }),
   <i>[...]</i> }),
</pre></p>

<p>Please note that loading all the timezones can take some
time, since they are generated and compiled on the fly.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='constant' homogen-name='abbr2zones'>
<constant name='abbr2zones'><typevalue>
   <mapping><indextype><string/></indextype>
      <valuetype>
       <array><valuetype><string/></valuetype></array></valuetype></mapping></typevalue>
</constant><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<doc>
<text>
<source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<p>This mapping is used to look up abbreviation
to the possible regional zones.</p>

<p>It looks like this:
<pre>
([ "CET": ({ "Europe/Stockholm", <i>[...]</i> }),
   "CST": ({ "America/Chicago", "Australia/Adelaide", <i>[...]</i> }),
   <i>[...]</i> }),
</pre></p>

<p>Note this: Just because it's noted "CST" doesn't mean it's a
unique timezone. There is about 7 *different* timezones that
uses "CST" as abbreviation; not at the same time,
though, so the DWIM routines checks this before
it's satisfied. Same with some other timezones.</p>

<p>For most timezones, there is a number of region timezones that for the
given time are equal. This is because region timezones include rules
about local summer time shifts and possible historic shifts.</p>

<p>The <ref>YMD.parse</ref> functions can handle timezone abbreviations
by guessing.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='zonenames' homogen-type='method'>
<method name='zonenames'>
   <returntype>
        <array><valuetype><string/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<doc>
<text>
<source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<p>This reads the zone.tab file and returns name of all
standard timezones, like "Europe/Belgrade".</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='_zone_tab'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='zone_tab'>
   <returntype>
        <array><valuetype><array/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<doc>
<text>
<source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TZnames.pmod'/>
<p>This returns the raw respectively parsed zone tab file
from the timezone data files.</p>

<p>The parsed format is an array of zone tab line arrays,
<pre>
({ string country_code,
   string position,
   string zone_name,
   string comment })
</pre></p>

<p>To convert the position to a Geography.Position, simply
feed it to the constructor.</p>
</text>

</doc>
</docgroup>

</module>



<module name='Julian'><doc><text><p>This is the Julian calendar, conjured up by
 the old Romans when their calendar were just too
 weird. It was used by the christians as so far
 as the 18th century in some parts of the world.
 (Especially the protestantic and orthodox parts.)</p>
</text><group><note/><text><p>Don't confuse the <i>julian day</i> with the Julian
 calendar. The former is just a linear numbering of days,
 used in the Calendar module as a common unit for
 absolute time.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Gregorian'><doc>
</doc>
<inherit name='Gregorian'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Julian.pmod'/><classname resolved='predef::Calendar.Gregorian'>.Gregorian</classname></inherit>
</docgroup>
</module>

<class name='Calendar'><doc><text><p>This is the base class of the calendars.</p>
</text></doc><docgroup homogen-name='now' homogen-type='method'><doc><text><p>Give the zero-length time period of the current time.</p>
</text></doc>
<method name='now'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Calendar.pike'/>
<arguments/>
<returntype><object>.TimeRanges.TimeRange</object></returntype>
</method>
</docgroup>
</class>
<source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<module name='YMD'>
<source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>
base for all Roman-kind of Calendars,
ie, one with years, months, weeks and days
</p>
</text>

</doc>
<class name='YMD'>
<source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
inherits <ref to='Calendar.YMD.YMD.TimeRange'>TimeRange</ref><br/>
<br/>
<source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>Base (virtual) time period of the Roman-kind of calendar.</p>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='format_iso_ymd'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd_xshort'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_week'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_week_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_week'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_week_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_month'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_month_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_time'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time_xshort'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_mtime'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_xtime'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_tod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_todz'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_xtod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_mod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='338' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='338' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>Format the object into nice strings;
<pre>
iso_ymd        "2000-06-02 (Jun) -W22-5 (Fri)" [2]
ext_ymd        "Friday, 2 June 2000" [2]
ymd            "2000-06-02"
ymd_short      "20000602"
ymd_xshort     "000602" [1]
iso_week       "2000-W22"
iso_week_short "2000W22"
week           "2000-w22" [2]
week_short     "2000w22" [2]
month          "2000-06"
month_short    "200006" [1]
iso_time       "2000-06-02 (Jun) -W22-5 (Fri) 00:00:00 UTC+1" [2]
ext_time       "Friday, 2 June 2000, 00:00:00" [2]
ctime          "Fri Jun  2 00:00:00 2000\n" [2] [3]
http           "Fri, 02 Jun 2000 00:00:00 GMT" [4]
time           "2000-06-02 00:00:00"
time_short     "20000602 00:00:00"
time_xshort    "000602 00:00:00"
iso_short      "2000-06-02T00:00:00"
mtime          "2000-06-02 00:00"
xtime          "2000-06-02 00:00:00.000000"
tod            "00:00:00"
tod_short      "000000"
todz           "00:00:00 CET"
todz_iso       "00:00:00 UTC+1"
xtod           "00:00:00.000000"
mod            "00:00"
</pre>
<tt>[1]</tt> note conflict (think 1 February 2003)
<br/><tt>[2]</tt> language dependent
<br/><tt>[3]</tt> as from the libc function ctime()
<br/><tt>[4]</tt> as specified by the HTTP standard;
not language dependent.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='fraction_no'>
   <returntype><float/></returntype>
   <arguments>
   </arguments>
</method><method name='hour_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='julian_day'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='leap_year'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='minute_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='month_day'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='month_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='second_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='utc_offset'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='week_day'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='week_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='year_day'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='year_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='month_name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='month_shortname'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='month_day_name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='week_day_name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='week_day_shortname'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='week_name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='year_name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='tzname'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='tzname_iso'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>function method int unix_time()
    Returns the unix time integer corresponding to the start
    of the time range object. (An unix time integer is UTC.)
function method datetime()
    This gives back a mapping with the relevant
    time information (representing the start of the period);
    <pre>
     ([ "year":     int        // year number (2000 AD=2000, 1 BC==0)
        "month":    int(1..)   // month of year
        "day":      int(1..)   // day of month
        "yearday":  int(0..)   // day of year
        "week":     int(1..)   // week of year
        "week_day": int(0..)   // day of week
        "timezone": int        // offset to utc, including dst
 
        "unix":     int        // unix time
        "julian":   int        // julian day
     // for compatibility:
        "hour":     0          // hour of day, including dst
        "minute":   0          // minute of hour
        "second":   0          // second of minute
        "fraction": 0.0        // fraction of second
     ]);
    </pre>
</p>
</text>
<group><note/><text>
<source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>Day of week is compatible with old versions,
ie, 0 is sunday, 6 is saturday, so it shouldn't be
used to calculate the day of the week with the given
week number. Year day is also backwards compatible,
ie, one (1) less then from the year_day() function.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments>
   </arguments>
</method><method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments><argument name='hour'><type><int/></type></argument>
<argument name='minute'><type><int/></type></argument>
<argument name='second'><type><int/></type></argument>

   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_seconds'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments>
   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments><argument name='hour'><type><int/></type></argument>
<argument name='minute'><type><int/></type></argument>

   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_minutes'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='hour'>
   <returntype>
        <object resolved='predef::Calendar.YMD.Hour'>Hour</object></returntype>
   <arguments>
   </arguments>
</method><method name='hour'>
   <returntype>
        <object resolved='predef::Calendar.YMD.Hour'>Hour</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object resolved='predef::Calendar.YMD.Hour'>Hour</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object resolved='predef::Calendar.YMD.Hour'>Hour</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_hours'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='949' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc/></docgroup>

</class>

<class name='Year'>
<source-position first-line='1042' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
inherits <ref to='Calendar.YMD.Year.TimeRange'>TimeRange</ref><br/>
inherits <ref to='Calendar.YMD.Year.YMD'>YMD</ref><br/>
<br/>
<source-position first-line='1042' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>This is the time period of a year.
</p>
</text>

</doc>
<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unix_time'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"julian"</value></argument><argument name='julian_day'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='year'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='year'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='1058' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1058' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>It's possible to create the standard week
by using three different methods; either the normal
way - from standard unix time or the julian day,
and also, for more practical use, from the year number.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='month' homogen-type='method'>
<method name='month'>
   <returntype>
        <object>Month</object></returntype>
   <arguments>
   </arguments>
</method><method name='month'>
   <returntype>
        <object>Month</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='month'>
   <returntype>
        <object>Month</object></returntype>
   <arguments><argument name='name'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='1273' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1273' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>The Year type overloads the month() method,
so it is possible to get a specified month
by string:</p>

<p><tt>year-&gt;month("April")</tt></p>

<p>The integer and no argument behavior is inherited
from <ref to='YMD.month'>YMD</ref>().</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='week' homogen-type='method'>
<method name='week'>
   <returntype>
        <object resolved='predef::Calendar.YMD.Week'>Week</object></returntype>
   <arguments>
   </arguments>
</method><method name='week'>
   <returntype>
        <object resolved='predef::Calendar.YMD.Week'>Week</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='week'>
   <returntype>
        <object resolved='predef::Calendar.YMD.Week'>Week</object></returntype>
   <arguments><argument name='name'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='1301' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1301' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>The Year type overloads the week() method,
so it is possible to get a specified week
by name:</p>

<p><tt>year-&gt;week("17")</tt>
<tt>year-&gt;week("w17")</tt></p>

<p>The integer and no argument behavior is inherited
from <ref to='YMD.week'>YMD</ref>().</p>

<p>This is useful, since the first week of a year
not always (about half the years, in the ISO calendar)
is numbered '1'.
</p>
</text>

</doc>
</docgroup>

</class>

<class name='Week'>
<source-position first-line='1607' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1607' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>The Calendar week represents a standard time period of
a week. In the Gregorian calendar, the standard week
starts on a sunday and ends on a saturday; in the ISO
calendar, it starts on a monday and ends on a sunday.</p>

<p>The week are might not be aligned to the year, and thus
the week may cross year borders and the year of
the week might not be the same as the year of all the
days in the week. The basic rule is that the week year
is the year that has the most days in the week, but
since week number only is specified in the ISO calendar
- and derivates - the week number of most calendars
is the week number of most of the days in the ISO
calendar, which modifies this rule for the Gregorian calendar;
the week number and year is the same as for the ISO calendar,
except for the sundays.</p>

<p>When adding, moving and subtracting months
to a week, it falls back to using days.</p>

<p>When adding, moving or subtracting years,
if tries to place the moved week in the
resulting year.
</p>
</text>

</doc>
<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unix_time'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"julian"</value></argument><argument name='julian_day'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='year'><type><int/></type></argument>
<argument name='week'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='1641' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1641' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>It's possible to create the standard week
by using three different methods; either the normal
way - from standard unix time or the julian day,
and also, for more practical use, from year and week
number.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unix_time'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"julian"</value></argument><argument name='julian_day'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='year'><type><int/></type></argument>
<argument name='month'><type><int/></type></argument>
<argument name='day'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='year'><type><int/></type></argument>
<argument name='year_day'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='julian_day'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='1952' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1952' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>It's possible to create the day
by using five different methods; either the normal
way - from standard unix time or the julian day,
and also, for more practical use, from year, month and day,
from year and day of year, and from julian day
without extra fuzz.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='day' homogen-type='method'>
<method name='day'>
   <returntype>
        <object>Day</object></returntype>
   <arguments>
   </arguments>
</method><method name='day'>
   <returntype>
        <object>Day</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='day'>
   <returntype>
        <object>Day</object></returntype>
   <arguments><argument name='name'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='1899' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='1899' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>The Week type overloads the day() method,
so it is possible to get a specified weekday
by string:</p>

<p><tt>week-&gt;day("sunday")</tt></p>

<p>The integer and no argument behavior is inherited
from <ref to='YMD.day'>YMD</ref>().
</p>
</text>
<group><note/><text>
<source-position first-line='1899' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>the weekday-from-string routine is language dependent.
</p>
</text></group>

</doc>
</docgroup>

</class>

<class name='Hour'>
<source-position first-line='2358' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
inherits <ref to='Time.Hour'>Time.Hour</ref><br/>
inherits <ref to='Calendar.YMD.Hour.YMD'>YMD</ref><br/>
<br/>
<source-position first-line='2358' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>global convinience functions</p>
</text>

</doc>
<docgroup homogen-name='parse' homogen-type='method'>
<method name='parse'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='fmt'><type><string/></type></argument>
<argument name='arg'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='2446' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<doc>
<text>
<source-position first-line='2446' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>parse a date, create relevant object
fmt is in the format "abc%xdef..."
where abc and def is matched, and %x is
one of those time units:
<pre>
%Y absolute year
%y dwim year (70-99 is 1970-1999, 0-69 is 2000-2069)
%M month (number, name or short name) (needs %y)
%W week (needs %y)
%D date (needs %y, %m)
%d short date (20000304, 000304)
%a day (needs %y)
%e weekday (needs %y, %w)
%h hour (needs %d, %D or %W)
%m minute (needs %h)
%s second (needs %m)
%S seconds since the Epoch (only combines with %f)
%f fraction of a second (needs %s or %S)
%t short time (205314, 2053)
%z zone
%p "am" or "pm"
%n empty string (to be put at the end of formats)
</pre>
</p>
</text>
<group><returns/><text>
<source-position first-line='2446' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>0 if format doesn't match data, or the appropriate time object.</p>
</text></group>
<group><note/><text>
<source-position first-line='2446' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/YMD.pike'/>
<p>    The zone will be a guess if it doesn't state an exact
    regional timezone (like "Europe/Stockholm") -
    most zone abbriviations (like "CET") are used by more
    then one region with it's own daylight saving rules.
    Also beware that for instance CST can be up to four different zones,
    central Australia or America being the most common.</p>

<p>    <pre>
    Abbreviation Interpretation
    AMT          America/Manaus       [UTC-4]
    AST          America/Curacao      [UTC-4]
    CDT          America/Costa_Rica   [UTC-6]
    CST          America/El Salvador  [UTC-6]
    EST          America/Panama       [UTC-5]
    GST          Asia/Dubai           [UTC+4]
    IST          Asia/Jerusalem       [UTC+2]
    WST          Australia/Perth      [UTC+8]
    </pre></p>

<p>    This mapping is modifiable in the ruleset, see
    <ref resolved='predef::Calendar.Ruleset.set_abbr2zone'>Ruleset.set_abbr2zone</ref>.
function Day dwim_day(string date)
function Day dwim_day(string date,TimeRange context)
    Tries a number of different formats on the given date (in order):
    <pre>
    <ref resolved='predef::Calendar.YMD.Hour.parse'>parse</ref> format                  as in
    "%y-%M-%D (%M) -W%W-%e (%e)"  "2000-03-20 (Mar) -W12-1 (Mon)"
    "%y-%M-%D"                    "2000-03-20", "00-03-20"
    "%M%/%D/%y"                   "3/20/2000"
    "%D%*[ /]%M%*[ /-,]%y"        "20/3/2000" "20 mar 2000" "20/3 -00"
    "%e%*[ ]%D%*[ /]%M%*[ /-,]%y" "Mon 20 Mar 2000" "Mon 20/3 2000"
    "-%y%*[ /]%D%*[ /]%M"         "-00 20/3" "-00 20 mar"
    "-%y%*[ /]%M%*[ /]%D"         "-00 3/20" "-00 march 20"
    "%y%*[ /]%D%*[ /]%M"          "00 20 mar" "2000 20/3"
    "%y%*[ /]%M%*[ /]%D"          "2000 march 20"
    "%D%.%M.%y"                   "20.3.2000"
    "%D%*[ -/]%M"                 "20/3" "20 mar" "20-03"
    "%M%*[ -/]%D"                 "3/20" "march 20"
    "%M-%D-%y"                    "03-20-2000"
    "%D-%M-%y"                    "20-03-2000"
    "%e%*[- /]%D%*[- /]%M"        "mon 20 march"
    "%e%*[- /]%M%*[- /]%D"        "mon/march/20"
    "%e%*[ -/wv]%W%*[ -/]%y"      "mon w12 -00" "1 w12 2000"
    "%e%*[ -/wv]%W"               "mon w12"
    "%d"                          "20000320", "000320"
    "today"                       "today"
    "last %e"                     "last monday"
    "next %e"                     "next monday"
    </pre></p>

<p>    Casts exception if it fails to dwim out a day.
    "dwim" means do-what-i-mean.</p>

<p>function datetime(int|void unix_time)
    Replacement for localtime; gives back a mapping:
    <pre>
     ([ "year":     int        // year number (2000 AD=2000, 1 BC==0)
        "month":    int(1..)   // month of year
        "day":      int(1..)   // day of month
        "yearday":  int(1..)   // day of year
        "week":     int(1..)   // week of year
        "week_day": int(1..)   // day of week (depending on calendar)
        "unix":     int        // unix time
        "julian":   float      // julian day
        "hour":     int(0..)   // hour of day, including dst
        "minute":   int(0..59) // minute of hour
        "second":   int(0..59) // second of minute
        "fraction": float      // fraction of second
        "timezone": int        // offset to utc, including dst
     ]);
    </pre>
    This is the same as calling <ref>Second</ref>()-&gt;<ref to='Second.datetime'>datetime</ref>().</p>

<p>function datetime_name(int|void unix_time)
function datetime_short_name(int|void unix_time)
    Compat functions; same as <ref>format_iso</ref>
    and <ref>format_iso_short</ref>.</p>

<p>function string format_iso(void|int unix_time)
function string format_iso_short(void|int unix_time)
function string format_iso_tod(void|int unix_time)
function string format_day_iso(void|int unix_time)
function string format_day_iso_short(void|int unix_time)
    Format the object into nice strings;
    <pre>
    iso    "2000-06-02 (Jun) -W22-5 (Fri) 11:57:18 CEST"
    iso_short   "2000-06-02 11:57:18"
    iso_tod     "11:57:18"
    </pre></p>
</text></group>

</doc>
</docgroup>

</class>

</module>



<module name='Rule'>

<class name='Timezone'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Rule.pmod'/><doc><text><p>Contains a time zone.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='offset'/><text><p>Offset to UTC, not counting DST.</p>
</text></group><group><param name='name'/><text><p>The name of the time zone.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='offset'><type><int/></type></argument><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tz_ux' homogen-type='method'><doc><group><fixme/><text><p>This method takes one integer argument, ignores it and
 returns an array with the UTC offset and the timezone name.</p>
</text></group></doc>
<method name='tz_ux'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Rule.pmod'/>
<arguments><argument name='unixtime'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tz_jd' homogen-type='method'><doc><group><fixme/><text><p>This method takes one integer argument, ignores it and
 returns an array with the UTC offset and the timezone name.</p>
</text></group></doc>
<method name='tz_jd'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Rule.pmod'/>
<arguments><argument name='julian_day'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='raw_utc_offset' homogen-type='method'><doc><text><p>Returns the offset to UTC, not counting DST.</p>
</text></doc>
<method name='raw_utc_offset'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Rule.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class></module>

<module name='ISO'><doc><text><p>This is the standard western calendar, which is a derivate
 of the Gregorian calendar, but with weeks that starts on
 Monday instead of Sunday.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Gregorian'><doc>
</doc>
<inherit name='Gregorian'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/ISO.pmod'/><classname resolved='predef::Calendar.Gregorian'>.Gregorian</classname></inherit>
</docgroup>
</module>
<source-position first-line='1' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<docgroup homogen-type='constant' homogen-name='nulltimerange'>
<constant name='nulltimerange'><typevalue>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></typevalue>
</constant><source-position first-line='1157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='1157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This represents the null time range,
which, to differ from the zero time range
(the zero-length time range), isn't placed
in time. This is the result of for instance
<ref resolved='predef::`&amp;'>`&amp;</ref> between two strict non-overlapping
timeranges - no time at all.</p>

<p>It has a constant, <tt>is_nulltimerange</tt>, which
is non-zero. <tt>`!</tt> on this timerange is true.</p>
</text>

</doc>
</docgroup>

<class name='TimeRange'>
<source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This is the base class (usually implemented by e.g. Calendar
subclasses like Calendar.Second) for any time measurement and
calendrar information. It defines all the things you can do
with a time range or any time period.</p>

<p>A TimeRange doubles as both a fixed period in
time, and an amount of time. For instance,
a week plus a day moves the week-period one day
ahead (unaligning it with the week period,
and thereby reducing it to just 7 days),
no matter when in time the actual day were.
</p>
</text>

</doc>
<docgroup homogen-name='add' homogen-type='method'>
<method name='add'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>
<argument name='step'><type>
   <or><void/><object resolved='predef::Calendar.TimeRange'>TimeRange</object></or></type></argument>

   </arguments>
</method><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>calculates the (promoted) time period n steps away;
if no step is given, the step's length is of the
same length as the called time period.</p>

<p>It is not recommended to loop by adding the increment
time period to a shorter period; this can cause faults,
if the shorter time period doesn't exist in the incremented
period. (Like week 53, day 31 of a month or the leap day of a year.)</p>

<p>Recommended use are like this:
<pre>
   // loop over the 5th of the next 10 months
   TimeRange month=Month()+1;
   TimeRange orig_day=month()-&gt;day(5);
   for (int i=0; i&lt;10; i++)
   {
      month++;
      TimeRange day=month-&gt;place(orig_day);
      <i>...use day...</i>
   }
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='beginning'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments>
   </arguments>
</method><method name='end'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='421' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='421' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This gives back the zero-sized beginning
or end of the called time period.</p>

<p>rule:
<tt>range(t-&gt;beginning(),t-&gt;end())==t</tt></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='calendar' homogen-type='method'>
<method name='calendar'>
   <returntype>
        <object resolved='predef::Calendar.Calendar'>Calendar</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='931' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='931' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Simply gives back the calendar in use, for instance
Calendar.ISO or Calendar.Discordian.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='strictly_preceeds'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='preceeds'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='is_previous_to'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='overlaps'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='contains'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='equals'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='is_next_to'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='succeeds'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='strictly_succeeds'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>    These methods exists to compare two periods
    of time on the timeline.</p>

<p><pre>
          case            predicates
 
 &lt;-- past       future -&gt;
 
 |----A----|              A strictly preceeds B,
              |----B----| A preceeds B
 
 |----A----|              A strictly preceeds B, A preceeds B,
           |----B----|    A is previous to B, A touches B
 
     |----A----|          A preceeds B,
           |----B----|    A overlaps B, A touches B
 
     |-------A-------|    A preceeds B, A ends with B
           |----B----|    A overlaps B, A contains B, A touches B,
 
     |-------A-------|    A preceeds B,  A succeeds B,
         |---B---|        A overlaps B, A contains B, A touches B
 
        |----A----|       A overlaps B, A touches B, A contains B
        |----B----|       A equals B, A starts with B, A ends with B
 
     |-------A-------|    A succeeds B, A starts with B
     |----B----|          A overlaps B, A contains B, A touches B
 
           |----A----|    A succeeds B,
     |----B----|          A overlaps B, A touches B
 
           |----A----|    A strictly succeeds B, A succeeds B
 |----B----|              A is next to B, A touches B
 
             |----A----|  A strictly succeeds B,
 |----B----|              A succeeds B
 
 </pre>
</p>
</text>
<group><note/><text>
<source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>These methods only check the range of the first to the
last time in the period;
use of combined time periods (<ref resolved='predef::Calendar.SuperTimeRange'>SuperTimeRange</ref>s)
might not give you the result you want.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Calendar.TimeRange.`&amp;'>`&amp;amp;</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unixtime'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unixtime'><type><int/></type></argument>
<argument name='seconds_len'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Create the timerange from unix time (as given by
<tt>time(2)</tt>), with eventually the size of
the time range in the same unit, seconds.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"julian"</value></argument><argument name='julian_day'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Create the timerange from a julian day, the
standardized method of counting days. If
the timerange is more then a day, it will
at least enclose the day.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='from'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Create the timerange from another timerange.</p>

<p>This is useful when converting objects from
one calendar to another. Note that the ruleset will be
transferred to the new object, so this method
can't be used to convert between timezones
or languges - use <ref resolved='predef::Calendar.TimeRange.set_timezone'>set_timezone</ref>,
<ref resolved='predef::Calendar.TimeRange.set_language'>set_language</ref> or <ref resolved='predef::Calendar.TimeRange.set_ruleset'>set_ruleset</ref>
to achieve this.
</p>
</text>
<group><note/><text>
<source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>The size of the new object may be inexact;
a Month object can't comprehend seconds, for instance.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='range'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='other'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='space'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='other'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='distance'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='other'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p> Derives different time periods in between
 the called timerange and the parameter timerange.</p>

<p> <pre>
&gt;- the past          the future -&lt;
 |--called--|         |--other--|
 &gt;------------ range -----------&lt;
            &gt;--space--&lt;
 &gt;----- distance -----&lt;
 </pre></p>

<p> See also: add, TimeRanges.range, TimeRanges.space, TimeRanges.distance</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`/'>
   <returntype><int/></returntype>
   <arguments><argument name='with'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='how_many'>
   <returntype><int/></returntype>
   <arguments><argument name='with'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='320' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='320' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This calculates how many instances of the given
timerange has passed during the called timerange.</p>

<p>For instance, to figure out your age,
create the timerange of your lifespan, and divide
with the instance of a <ref to='YMD.Year' resolved='predef::Calendar.YMD.Year'>Year</ref>.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_language'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='lang'><type>
   <object>Rule.Language</object></type></argument>

   </arguments>
</method><method name='set_language'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='lang'><type><string/></type></argument>

   </arguments>
</method><method name='language'>
   <returntype>
        <object>Language</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='916' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='916' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Set or get the current language rule.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='next'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments>
   </arguments>
</method><method name='prev'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='283' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='283' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Next and prev are compatible and convinience functions;
<tt>a-&gt;next()</tt> is exactly the same as <tt>a+1</tt>;
<tt>a=a-&gt;next()</tt> is <tt>a++</tt>.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='offset_to' homogen-type='method'>
<method name='offset_to'>
   <returntype><int/></returntype>
   <arguments><argument name='x'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='401' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='401' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Calculates offset to x; this compares
two timeranges and gives the integer offset
between the two starting points.</p>

<p>This is true for suitable a and b:
<tt>a+a-&gt;offset_to(b)==b</tt></p>

<p>By suitable means that a and b are of the same
type and size. This is obviously true only
if a+n has b as a possible result for any n.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='place' homogen-type='method'>
<method name='place'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='this'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='place'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='this'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>
<argument name='force'><type>
   <int><min>0</min><max>1</max></int></type></argument>

   </arguments>
</method><source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This will place the given timerange in this timerange,
for instance, day 37 in the year -
<tt>Year(1934)-&gt;place(Day(1948 d37)) =&gt; Day(1934 d37)</tt>.
</p>
</text>
<group><note/><text>
<source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>The rules how to place things in different timeranges
can be somewhat 'dwim'.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_ruleset'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='r'><type>
   <object resolved='predef::Calendar.Ruleset'>Ruleset</object></type></argument>

   </arguments>
</method><method name='ruleset'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='r'><type>
   <object resolved='predef::Calendar.Ruleset'>Ruleset</object></type></argument>

   </arguments>
</method><source-position first-line='878' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='878' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Set or get the current ruleset.</p>
</text>
<group><note/><text>
<source-position first-line='878' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>this may include timezone shanges,
and change the time of day.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='set_size' homogen-type='method'>
<method name='set_size'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='size'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='set_size'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>
<argument name='size'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Gives back a new (or the same, if the size matches)
timerange with the new size.
If <i>n</i> are given, the resulting size
will be <i>n</i> amounts of the given size.</p>
</text>
<group><note/><text>
<source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>A negative size is not permitted; a zero one are.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_timezone'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='tz'><type>
   <object resolved='predef::Calendar.Timezone'>Timezone</object></type></argument>

   </arguments>
</method><method name='set_timezone'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='tz'><type><string/></type></argument>

   </arguments>
</method><method name='timezone'>
   <returntype>
        <object>TimeZone</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='891' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='891' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>Set or get the current timezone (including dst) rule.
</p>
</text>
<group><note/><text>
<source-position first-line='891' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>The time-of-day may very well
change when you change timezone.</p>

<p>To get the time of day for a specified timezone,
select the timezone before getting the time of day:</p>

<p><tt>Year(2003)-&gt;...-&gt;set_timezone(TimeZone.CET)-&gt;...-&gt;hour(14)-&gt;...</tt>
</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`/'>
   <returntype>
        <array><valuetype>
          <object resolved='predef::Calendar.TimeRange'>TimeRange</object></valuetype></array></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='split'>
   <returntype>
        <array><valuetype>
          <object resolved='predef::Calendar.TimeRange'>TimeRange</object></valuetype></array></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>    This divides the called timerange into
    n pieces. The returned timerange type
    is not neccesarily of the same type as the called one.</p>

<p>known bugs:
    These are currently not defined for
    <ref to='SuperTimeRange' resolved='predef::Calendar.SuperTimeRange'>supertimeranges</ref>.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='subtract' homogen-type='method'>
<method name='subtract'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='what'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='823' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='823' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This subtracts a period of time from another;
<pre>
&gt;- the past          the future -&lt;
|-------called-------|
     |-------other--------|
&lt;----&gt;  &lt;- called-&gt;subtract(other)
 
|-------called-------|
     |---third---|
&lt;----&gt;           &lt;---&gt; &lt;- called-&gt;subtract(third)
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='`&amp;' homogen-type='method'>
<method name='`&amp;'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='with'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='693' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='693' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p> Gives the cut on the called time period
 with another time period. The result is
 zero if the two periods doesn't overlap.
 <pre>
&gt;- the past          the future -&lt;
 |-------called-------|
      |-------other--------|
      &gt;----- cut -----&lt;
 </pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='`*' homogen-type='method'>
<method name='`*'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This changes the amount of time in
the time period. <tt>t*17</tt> is
the same as doing <tt>t-&gt;<ref resolved='predef::Calendar.TimeRange.set_size'>set_size</ref>(t,17)</tt>.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`+'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='`+'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='offset'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='`-'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='m'><type><int/></type></argument>

   </arguments>
</method><method name='`-'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='x'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This calculates the (promoted) time period
either n step away or with a given offset.
These functions does use <ref resolved='predef::Calendar.TimeRange.add'>add</ref> to really
do the job:
<pre>
t+n         t-&gt;add(n)             t is a time period
t-n         t-&gt;add(-n)            offset is a time period
t+offset    t-&gt;add(1,offset)      n is an integer
t-offset    t-&gt;add(-1,offset)
n+t         t-&gt;add(n)
n-t         illegal
offset+t    offset-&gt;add(1,t)      | note this!
offset-t    offset-&gt;add(-1,t)     |
</pre></p>

<p>Mathematic rules:
<pre>
x+(t-x) == t    x is an integer or a time period
(x+t)-x == t    t is a time period
(t+x)-x == t
o-(o-t) == t    o is a time period
t++ == t+1
t-- == t-1
</pre>
</p>
</text>
<group><note/><text>
<source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>a-b does not give the distance between the start of a and b.
Use the <ref resolved='predef::Calendar.TimeRange.range'>distance</ref>() function to calculate that.</p>

<p>The integer used to `+, `- and add are the <i>number</i>
of steps the motion will be. It does <i>never</i> represent
any <i>fixed</i> amount of time, like seconds or days.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`&lt;'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='compared_to'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='`&gt;'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='compared_to'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='634' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='634' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>These operators sorts roughty on the
periods place in time. The major use
might be to get multiset to work,
besides sorting events clearly defined in time.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`=='>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='compared_to'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><method name='_equal'>
   <returntype>
        <int><min>0</min><max>1</max></int></returntype>
   <arguments><argument name='compared_to'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='659' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='659' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>    These two overloads the operator <tt>`==</tt> and
    the result of the <tt>equal</tt> function.</p>

<p>    a<tt>==</tt>b is considered true if the two
    timeranges are of the same type, have the same rules
    (language, timezone, etc) and are the same timerange.</p>

<p>    <tt>equal(</tt>a<tt>,</tt>b<tt>)</tt> are considered
    true if a and b are the same timerange, exactly the same
    as the <ref resolved='predef::Calendar.TimeRange.strictly_preceeds'>equals</ref> method.</p>

<p>    The <tt>__hash</tt> method is also present,
    to make timeranges possible to use as keys in mappings.</p>

<p>known bugs:
    _equal is not currently possible to overload,
    due to weird bugs, so equal uses `== for now.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='`^' homogen-type='method'>
<method name='`^'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='with'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='767' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='767' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p> Gives the exclusive-or on the called time period
 and another time period, ie the union without
 the cut. The result is zero if the
 two periods were the same.
 <pre>
&gt;- the past          the future -&lt;
 |-------called-------|
      |-------other--------|
 &lt;----|               |----&gt;   - exclusive or
 </pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='`|' homogen-type='method'>
<method name='`|'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='with'><type>
   <object resolved='predef::Calendar.TimeRange'>TimeRange</object></type></argument>

   </arguments>
</method><source-position first-line='730' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='730' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p> Gives the union on the called time period
 and another time period.
 <pre>
&gt;- the past          the future -&lt;
 |-------called-------|
      |-------other--------|
 &lt;----------union----------&gt;
 </pre></p>
</text>

</doc>
</docgroup>

</class>

<class name='SuperTimeRange'>
<source-position first-line='959' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
inherits <ref to='Calendar.SuperTimeRange' resolved='predef::Calendar.SuperTimeRange'>TimeRange</ref><br/>
<br/>
<source-position first-line='959' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>This class handles the cases where you have a time
period with holes. These can be created by the
<tt>^</tt> or <tt>|</tt> operators on time ranges.</p>
</text>

</doc>
<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='parts'><type>
   <array><valuetype>
     <object resolved='predef::Calendar.TimeRange'>TimeRange</object></valuetype></array></type></argument>

   </arguments>
</method><source-position first-line='973' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<doc>
<text>
<source-position first-line='973' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/TimeRanges.pmod'/>
<p>A SuperTimeRange must have at least two parts,
two time ranges. Otherwise, it's either not
a time period at all or a normal time period.</p>
</text>

</doc>
</docgroup>

</class>



<module name='Stardate'><doc><text><p>This implements TNG stardates.</p>
</text></doc>

<class name='cTick'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/><docgroup homogen-type='inherit' homogen-name='TimeRange'><doc>
</doc>
<inherit name='TimeRange'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/><classname resolved='predef::Calendar.TimeRange'>Calendar.TimeRange</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Apart from the standard creation methods
	(julian day, etc), you can create a stardate
	from the stardate number. The length
	of the period will then be zero.</p>
<p>	You can also omit any arguments to create now.</p>
</text><group><bugs/><text><p>Since the precision is limited to the float type
	of Pike you can get non-precise results:</p>
<code><text><p>&gt; Calendar.Second(Calendar.Stardate.Day(Calendar.Year()));
 Result: Second(Fri 31 Dec 1999 23:59:18 CET - Sun 31 Dec 2000 23:59:18 CET)</p>
</text></code>
</text></group></doc>
<method name='create'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='date'><type><or><int/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tic' homogen-type='method'><doc><text><p>This gives back the start of the stardate period,
 as a float.</p>
</text></doc>
<method name='tic'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tics' homogen-type='method'><doc><text><p>This gives back the number of stardate tics
 in the period.</p>
</text></doc>
<method name='tics'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='number_of_seconds' homogen-type='method'><doc><text><p>This gives back the Gregorian/Earth/ISO number of seconds,
 for convinience and conversion to other calendars.</p>
</text></doc>
<method name='number_of_seconds'><source-position first-line='110' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='number_of_days' homogen-type='method'><doc><text><p>This gives back the Gregorian/Earth/ISO number of days,
 for convinience and conversion to other calendars.</p>
</text></doc>
<method name='number_of_days'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Format the stardate tick nicely. Precision is the number of
 decimals. Defaults to 3.
 <matrix>
   <r><c>long</c><c>"-322537.312"</c><c/></r>
   <r><c>short</c><c>"77463.312"</c><c>(w/o &gt;100000-component)</c></r>
   <r><c>vshort</c><c>"7463.312"</c><c>(w/o &gt;10000-component)</c></r>
 </matrix></p>
</text></doc>
<method name='format_long'>
<arguments><argument name='precision'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='format_short'>
<arguments><argument name='precision'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='format_vshort'>
<arguments><argument name='precision'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='now' homogen-type='method'><doc><text><p>Give the zero-length time period of the current time.</p>
</text></doc>
<method name='now'><source-position first-line='301' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Stardate.pmod'/>
<arguments/>
<returntype><object resolved='predef::Calendar.Stardate.cTick'>cTick</object></returntype>
</method>
</docgroup>
</module>
<source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<module name='Time'>
<source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>
Base for time of day in calendars, ie
calendars with hours, minutes, seconds</p>

<p>This module can't be used by itself, but
is inherited by other modules (<ref resolved='predef::Calendar.ISO'>ISO</ref> by <ref resolved='predef::Calendar.YMD'>YMD</ref>,
for instance).</p>
</text>

</doc>
<class name='TimeofDay'>
<source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
inherits <ref to='Calendar.Time.TimeofDay.TimeRange'>TimeRange</ref><br/>
<br/>
<source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Virtual class used by e.g. Hour.</p>
</text>

</doc>
<docgroup homogen-name='call_out' homogen-type='method'>
<method name='call_out'>
   <returntype><void/></returntype>
   <arguments><argument name='fun'><type><function/></type></argument>
<argument name='...args'><type><mixed/></type></argument>

   </arguments>
</method><source-position first-line='986' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='986' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Creates a call_out to this point in time.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='unixtime'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>In addition to the wide range of construction arguments
for a normal TimeRange (see <ref resolved='predef::Calendar.TimeRange.create'>TimeRange.create</ref>),
a time of day can also be constructed with unixtime
as single argument consisting of the unix time
- as returned from <tt>time(2)</tt> - of the time unit start.</p>

<p>It can also be constructed without argument, which
then means "now", as in "this minute".</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='format_iso_ymd'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_ymd_xshort'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_week'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_week_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_week'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_week_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_month'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_month_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_time'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_iso_short'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_time_xshort'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_mtime'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_xtime'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_tod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_xtod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_mod'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_nice'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='format_nicez'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='691' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='691' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Format the object into nice strings;
<pre>
iso_ymd        "2000-06-02 (Jun) -W22-5 (Fri)" [2]
ext_ymd        "Friday, 2 June 2000" [2]
ymd            "2000-06-02"
ymd_short      "20000602"
ymd_xshort     "000602" [1]
iso_week       "2000-W22"
iso_week_short "2000W22"
week           "2000-w22" [2]
week_short     "2000w22" [2]
month          "2000-06"
month_short    "200006" [1]
iso_time       "2000-06-02 (Jun) -W22-5 (Fri) 20:53:14 UTC+1" [2]
ext_time       "Friday, 2 June 2000, 20:53:14" [2]
ctime          "Fri Jun  4 20:53:14 2000\n" [2] [3]
http           "Fri, 02 Jun 2000 19:53:14 GMT" [4]
time           "2000-06-02 20:53:14"
time_short     "20000602 20:53:14"
time_xshort    "000602 20:53:14"
iso_short      "20000602T20:53:14"
mtime          "2000-06-02 20:53"
xtime          "2000-06-02 20:53:14.000000"
todz           "20:53:14 CET"
todz_iso       "20:53:14 UTC+1"
tod            "20:53:14"
tod_short      "205314"
xtod           "20:53:14.000000"
mod            "20:53"
nice           "2 Jun 20:53", "2 Jun 2000 20:53:14" [2][5]
nicez          "2 Jun 20:53 CET" [2][5]
smtp           "Fri, 2 Jun 2000 20:53:14 +0100" [6]
commonlog      "02/Jun/2000:20:53:14 +0100" [2]
</pre>
<tt>[1]</tt> note conflict (think 1 February 2003)
<br/><tt>[2]</tt> language dependent
<br/><tt>[3]</tt> as from the libc function ctime()
<br/><tt>[4]</tt> as specified by the HTTP standard;
        this is always in GMT, ie, UTC. The timezone calculations
        needed will be executed implicitly. It is not language
        dependent.
<br/><tt>[5]</tt> adaptive to type and with special cases
        for yesterday, tomorrow and other years
<br/><tt>[6]</tt> as seen in Date: headers in mails</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='hour_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='minute_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='second_no'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='fraction_no'>
   <returntype><float/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='622' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='622' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>    This gives back the number of the time unit,
    on this day. Fraction is a float number, 0&lt;=fraction&lt;1.
function mapping datetime()
    This gives back a mapping with the relevant
    time information (representing the start of the period);
    <pre>
     ([ "year":     int        // year number (2000 AD=2000, 1 BC==0)
        "month":    int(1..)   // month of year
        "day":      int(1..)   // day of month
        "yearday":  int(1..)   // day of year
        "week":     int(1..)   // week of year
        "week_day": int(1..)   // day of week (depending on calendar)
 
        "hour":     int(0..)   // hour of day, including dst
        "minute":   int(0..59) // minute of hour
        "second":   int(0..59) // second of minute
        "fraction": float      // fraction of second
        "timezone": int        // offset to utc, including dst
 
        "unix":     int        // unix time
        "julian":   float      // julian day
     ]);
    </pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='hour'>
   <returntype>
        <object>Hour</object></returntype>
   <arguments>
   </arguments>
</method><method name='hour'>
   <returntype>
        <object>Hour</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object>Hour</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object>Hour</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_hours'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>    <ref resolved='predef::Calendar.Time.TimeofDay.hour'>hour</ref>() gives back the timerange representing the
    first or <i>n</i>th Hour of the called object.
    Note that hours normally starts to count at zero,
    so <tt>-&gt;hour(2)</tt> gives the third hour within
    the range.</p>

<p>    An Hour is in the Calendar perspective as any other
    time range not only 60 minutes, but also one
    of the (normally) 24 hours of the day, precisely.</p>

<p>    <ref resolved='predef::Calendar.Time.TimeofDay.hour'>hours</ref>() give back an array of all the hours
    containing the time periods called. With arguments,
    it will give back a range of those hours, in the
    same enumeration as the <i>n</i> to <ref resolved='predef::Calendar.Time.TimeofDay.hour'>hour</ref>().</p>

<p>    <ref resolved='predef::Calendar.Time.TimeofDay.hour'>number_of_hours</ref>() simple counts the
    number of hours containing the called time period.</p>

<p>Note:
    The called object doesn't have to
    *fill* all the hours it will send back, it's
    enough if it exist in those hours:</p>

<p>    <pre>
    &gt; object h=Calendar.Time.Hour();
    Result: Hour(265567)
    &gt; h-&gt;hours();
    Result: ({ /* 1 element */
                Hour(265567)
            })
    &gt; h+=Calendar.Time.Minute();
    Result: Minute(265567:01+60m)
    &gt; h-&gt;hours();
    Result: ({ /* 2 elements */
                Hour(265567),
                Hour(265568)
            })
    </pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='julian_day' homogen-type='method'>
<method name='julian_day'>
   <returntype><float/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='606' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='606' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>This calculates the corresponding julian day,
from the time range. Note that the calculated day
is the beginning of the period, and is a float -
julian day standard says .00 is midday, 12:00 pm.
</p>
</text>
<group><note/><text>
<source-position first-line='606' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Normal pike (ie, 32 bit) floats (without --with-double-precision)
has a limit of about 7 digits, and since we are about
julian day 2500000, the precision on time of day is very limited.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments>
   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_minutes'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p><ref resolved='predef::Calendar.Time.TimeofDay.minute'>minute</ref>() gives back the timerange representing the
first or <i>n</i>th Minute of the called object.
Note that minutes normally starts to count at zero,
so <tt>-&gt;minute(2)</tt> gives the third minute within
the range.</p>

<p>An Minute is in the Calendar perspective as any other
time range not only 60 seconds, but also one
of the (normally) 60 minutes of the <ref>Hour</ref>, precisely.</p>

<p><ref resolved='predef::Calendar.Time.TimeofDay.minute'>minutes</ref>() give back an array of all the minutes
containing the time periods called. With arguments,
it will give back a range of those minutes, in the
same enumeration as the <i>n</i> to <ref resolved='predef::Calendar.Time.TimeofDay.minute'>minute</ref>().</p>

<p><ref resolved='predef::Calendar.Time.TimeofDay.minute'>number_of_minutes</ref>() simple counts the
number of minutes containing the called time period.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='move_seconds'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='seconds'><type><int/></type></argument>

   </arguments>
</method><method name='move_ns'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='nanoseconds'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='576' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='576' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>These two methods gives back the
time range called moved the specified
amount of time, with the length intact.</p>

<p>The motion is relative to the original position
in time; 10 seconds ahead of 10:42:32 is 10:42:42, etc.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments>
   </arguments>
</method><method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_seconds'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='428' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='428' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p><ref resolved='predef::Calendar.Time.TimeofDay.second'>second</ref>() gives back the timerange representing the
first or <i>n</i>th Second of the called object.
Note that seconds normally starts to count at zero,
so <tt>-&gt;second(2)</tt> gives the third second within
the range.</p>

<p><ref resolved='predef::Calendar.Time.TimeofDay.second'>seconds</ref>() give back an array of all the seconds
containing the time periods called. With arguments,
it will give back a range of those seconds, in the
same enumeration as the <i>n</i> to <ref resolved='predef::Calendar.Time.TimeofDay.second'>second</ref>().</p>

<p><ref resolved='predef::Calendar.Time.TimeofDay.second'>number_of_seconds</ref>() simple counts the
number of seconds containing the called time period.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_size_seconds'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='seconds'><type><int/></type></argument>

   </arguments>
</method><method name='set_size_ns'>
   <returntype>
        <object resolved='predef::Calendar.TimeRange'>TimeRange</object></returntype>
   <arguments><argument name='nanoseconds'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='556' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='556' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>These two methods allows the time range
to be edited by size of specific units.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='unix_time' homogen-type='method'>
<method name='unix_time'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='598' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='598' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>This calculates the corresponding unix time,
- as returned from <tt>time(2)</tt> - from the
time range. Note that the calculated unix time
is the beginning of the period.</p>
</text>

</doc>
</docgroup>

</class>

<class name='SuperTimeRange'>
<source-position first-line='1023' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<docgroup homogen-type='method'>
<method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments>
   </arguments>
</method><method name='second'>
   <returntype>
        <object>Second</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='seconds'>
   <returntype>
        <array><valuetype>
          <object>Second</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_seconds'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments>
   </arguments>
</method><method name='minute'>
   <returntype>
        <object>Minute</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='minutes'>
   <returntype>
        <array><valuetype>
          <object>Minute</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_minutes'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='hour'>
   <returntype>
        <object>Hour</object></returntype>
   <arguments>
   </arguments>
</method><method name='hour'>
   <returntype>
        <object>Hour</object></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object>Hour</object></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='hours'>
   <returntype>
        <array><valuetype>
          <object>Hour</object></valuetype></array></returntype>
   <arguments><argument name='first'><type><int/></type></argument>
<argument name='last'><type><int/></type></argument>

   </arguments>
</method><method name='number_of_hours'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='1038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='1038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Similar to <ref resolved='predef::Calendar.Time.TimeofDay'>TimeofDay</ref>, the Time::SuperTimeRange
has a number of methods for digging out time parts of the
range. Since a <ref resolved='predef::Calendar.Time.SuperTimeRange'>SuperTimeRange</ref> is a bit more
complex - the major reason for its existance it that it
contains holes, this calculation is a bit more advanced too.</p>

<p>If a range contains the seconds, say, 1..2 and 4..5,
the third second (number 2, since we start from 0)
in the range would be number 4, like this:</p>

<p><pre>
no   means this second
0    1
1    2
2    4      &lt;- second three is missing,
3    5         as we don't have it in the example range
</pre></p>

<p><ref resolved='predef::Calendar.Time.SuperTimeRange.second'>number_of_seconds</ref>() will in this example
therefore also report 4, not 5, even if the time from
start of the range to the end of the range is 5 seconds.
</p>
</text>

</doc>
</docgroup>

</class>







<class name='Fraction'>
<source-position first-line='1549' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
inherits <ref to='Calendar.Time.Fraction.TimeofDay'>TimeofDay</ref><br/>
<br/>
<source-position first-line='1549' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>A Fraction is a part of a second, and/or a time period
with higher resolution then a second.</p>

<p>It contains everything that is possible to do with a
<ref>Second</ref>, and also some methods of grabbing
the time period with higher resolution.
</p>
</text>
<group><note/><text>
<source-position first-line='1549' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Internally, the fraction time period is measured in
nanoseconds. A shorter or more precise time period then
in nanoseconds is not possible within the current Fraction class.
</p>
</text></group>

</doc>
<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unixtime'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument><value>"unix"</value></argument><argument name='unixtime'><type>
   <or><int/><float/></or></type></argument>
<argument name='len'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='y'><type><int/></type></argument>
<argument name='m'><type><int/></type></argument>
<argument name='d'><type><int/></type></argument>
<argument name='h'><type><int/></type></argument>
<argument name='m'><type><int/></type></argument>
<argument name='s'><type><int/></type></argument>
<argument name='ns'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='1577' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='1577' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>It is possible to create a Fraction in three ways,
either "now" with no arguments or
from a unix time (as from <tt>time(2)</tt>),
or the convenience way from ymd-hms integers.</p>

<p>If created from unix time, both the start of the period
and the size of the period can be given in floats,
both representing seconds. Note that the default
float precision in pike is rather low (same as 'float' in C,
the 32 bit floating point precision, normally about 7 digits),
so beware that the resolution might bite you. (Internally
in a Fraction, the representation is an integer.)</p>

<p>If created without explicit length, the fraction will always be
of zero length.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='now' homogen-type='method'>
<method name='now'>
   <returntype>
        <object resolved='predef::Calendar.Time.TimeofDay'>TimeofDay</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='2021' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='2021' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Give the zero-length time period of the
current time.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_ruleset'>
   <returntype>
        <object resolved='predef::Calendar.Calendar'>Calendar</object></returntype>
   <arguments><argument name='r'><type>
   <object resolved='predef::Calendar.Ruleset'>Ruleset</object></type></argument>

   </arguments>
</method><method name='ruleset'>
   <returntype>
        <object resolved='predef::Calendar.Ruleset'>Ruleset</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='2065' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='2065' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Set or read the ruleset for the calendar.
<ref resolved='predef::Calendar.Time.Fraction.set_ruleset'>set_ruleset</ref> returns a new calendar object,
but with the new ruleset.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_timezone'>
   <returntype>
        <object resolved='predef::Calendar.Calendar'>Calendar</object></returntype>
   <arguments><argument name='tz'><type>
   <object resolved='predef::Calendar.Timezone'>Timezone</object></type></argument>

   </arguments>
</method><method name='set_timezone'>
   <returntype>
        <object resolved='predef::Calendar.Calendar'>Calendar</object></returntype>
   <arguments><argument name='tz'><type>
   <or><string/><object resolved='predef::Calendar.Timezone'>Timezone</object></or></type></argument>

   </arguments>
</method><method name='timezone'>
   <returntype>
        <object>TimeZone</object></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='2030' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<doc>
<text>
<source-position first-line='2030' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Time.pmod'/>
<p>Set or get the current timezone (including dst) rule.
<ref resolved='predef::Calendar.Time.Fraction.set_timezone'>set_timezone</ref> returns a new calendar object,
as the called calendar but with another set of rules.</p>

<p>Example:
<pre>
&gt; Calendar.now();
Result: Fraction(Fri 2 Jun 2000 18:03:22.010300 CET)
&gt; Calendar.set_timezone(Calendar.Timezone.UTC)-&gt;now();
Result: Fraction(Fri 2 Jun 2000 16:03:02.323912 UTC)
</pre></p>
</text>

</doc>
</docgroup>

</class>

</module>



<module name='Gregorian'><doc><text><p>This is the standard conservative christian calendar,
 used regularly in some countries - USA, for instance - and 
 which derivate - the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar - is used in most of
 Europe.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='YMD'><doc>
</doc>
<inherit name='YMD'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Gregorian.pmod'/><classname resolved='predef::Calendar.YMD'>.YMD</classname></inherit>
</docgroup>
</module>
<source-position first-line='1' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<module name='Timezone'>
<source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<doc>
<text>
<source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<p>
This module contains all the predefined timezones.
Index it with whatever timezone you want to use.</p>

<p>Example:
<tt>Calendar.Calendar my_cal=
    Calendar.ISO-&gt;set_timezone(Calendar.Timezone["Europe/Stockholm"]);
</tt></p>

<p>A simpler way of selecting timezones might be
to just give the string to
<ref to='Ruleset.set_timezone' resolved='predef::Calendar.Ruleset.set_timezone'>set_timezone</ref>;
<ref to='Ruleset.set_timezone' resolved='predef::Calendar.Ruleset.set_timezone'>it</ref> indexes by itself:</p>

<p><tt>Calendar.Calendar my_cal=
    Calendar.ISO-&gt;set_timezone("Europe/Stockholm");
</tt>
</p>
</text>
<group><note/><text>
<source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<p>Do not confuse this module with <ref>Ruleset.Timezone</ref>,
which is the base class of a timezone object.</p>

<p><tt>"CET"</tt> and some other standard abbreviations work too,
but not all of them (due to more then one country using them).</p>

<p>Do not call <ref to='Calendar.Time.set_timezone'>set_timezone</ref>
too often, but remember the result if possible. It might take
some time to initialize a timezone object.</p>

<p>There are about 504 timezones with 127 different daylight
saving rules. Most of them historic.</p>

<p>The timezone information comes from
<url href='ftp://elsie.nci.nih.gov/pub'>ftp://elsie.nci.nih.gov/pub/</url>
and are not made up from scratch. Timezone bugs may be reported
to the timezone mailing list,
<url href='mailto:tz@elsie.nci.nih.gov'>tz@elsie.nci.nih.gov</url>,
preferable with a <tt>cc</tt> to
<url href='mailto:mirar+pike@mirar.org'>mirar+pike@mirar.org</url>. /Mirar
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Calendar.TZnames'>TZnames</ref></p></text></group>

</doc>
<docgroup homogen-type='constant' homogen-name='locale'>
<constant name='locale'><typevalue>
   <object resolved='predef::Calendar.Rule.Timezone'>Rule.Timezone</object></typevalue>
</constant><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<doc>
<text>
<source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<p>This contains the local timezone, found from
various parts of the system, if possible.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='constant' homogen-name='localtime'>
<constant name='localtime'><typevalue>
   <object resolved='predef::Calendar.Rule.Timezone'>Rule.Timezone</object></typevalue>
</constant><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<doc>
<text>
<source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Timezone.pmod'/>
<p>This is a special timezone, that uses <ref resolved='predef::Calendar.Timezone.localtime'>localtime</ref>()
and <ref>tzname</ref>
to find out what current offset and timezone string to use.</p>

<p><ref resolved='predef::Calendar.Timezone.locale'>locale</ref> uses this if there is no other
way of finding a better timezone to use.</p>

<p>This timezone is limited by <ref resolved='predef::Calendar.Timezone.localtime'>localtime</ref> and
libc to the range of <tt>time_t</tt>,
which is a MAXINT on most systems - 13 Dec 1901 20:45:52
to 19 Jan 2038 3:14:07, UTC.</p>
</text>

</doc>
</docgroup>

</module>



<module name='Islamic'><doc><text><p>This is the islamic calendar. Due to some sources,
 they decide the first day of the new months on a 
 month-to-month basis (sightings of the new moon),
 so it's probably not <i>that</i> accurate. If
 someone can confirm (or deny) accuracy better than that, 
 please contact me so I can change this statement.</p>
<p> It's vaugely based on rules presented in algorithms by
 Dershowitz, Reingold and Clamen, 'Calendrical Calculations'.
 It is the same that's used in Emacs calendar mode.</p>
</text><group><bugs/><text><p>I have currently no idea how the arabic countries
 count the week. Follow the same rules as <ref resolved='predef::Calendar.ISO'>ISO</ref>
 for now... The time is also suspicious; the <b>day</b>
 really starts at sunrise (sunset?) and not midnight,
 the hours of the day is not correct. Also don't know
 what to call years before 1 - go for "BH"; positive
 years are "AH", anno Hegirac.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='YMD'><doc>
</doc>
<inherit name='YMD'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Islamic.pmod'/><classname resolved='predef::Calendar.YMD'>.YMD</classname></inherit>
</docgroup>
</module>

<module name='Swedish'><doc><text><p>Same as the <ref resolved='predef::Calendar.ISO'>ISO</ref> calendar, but with Swedish as the default language.</p>
<p> This calendar exist only for backwards compatible purposes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='ISO'><doc>
</doc>
<inherit name='ISO'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Swedish.pmod'/><classname resolved='predef::Calendar.ISO'>.ISO</classname></inherit>
</docgroup>
</module>

<module name='Coptic'><doc><text><p>This is the Coptic Orthodox Church calendar,
 that starts the 11th or 12th September and has
 13 months.</p>
</text><group><note/><text><p>The (default) names of the months
 are different then other the emacs calendar;
 I do not know which ones are used - the difference
 seem to be only the transcription of the phonetic sounds
 (B &lt;-&gt; P, etc).</p>
<p> I do not know for how long back the calendar is valid,
 either. My sources claim that the calendar is synchronized
 with the <ref resolved='predef::Calendar.Gregorian'>Gregorian</ref> calendar, which is odd.</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Gregorian'><doc>
</doc>
<inherit name='Gregorian'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar.pmod/Coptic.pmod'/><classname resolved='predef::Calendar.Gregorian'>.Gregorian</classname></inherit>
</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='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'><source-position first-line='824' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Languages.pmod/PLIS.pmod'/>
<arguments><argument name='environment'><type><object>Environment</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='init_functions' homogen-type='method'><doc><text><p>Adds the functions +, *, -, =, &lt;, &gt;,
 concat, read-string, eval,
 apply, global-environment, var, cdr, null?,
 setcar!, setcdr!, cons and list to the
 <ref resolved='predef::Languages.PLIS.init_functions.environment'>environment</ref>.</p>
</text></doc>
<method name='init_functions'><source-position first-line='845' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Languages.pmod/PLIS.pmod'/>
<arguments><argument name='environment'><type><object>Environment</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<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'><source-position first-line='929' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Languages.pmod/PLIS.pmod'/>
<arguments/>
<returntype><object>Environment</object></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'><source-position first-line='952' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Languages.pmod/PLIS.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</module></module>

<module name='Tools'>

<module name='Standalone'>

<class name='process_files'><doc><text><p>Boilerplate to quickly whip up rsif-like hacks for creating file processing
 to churn away at stdin, or files and/or directories provided on the command
 line, recursively or not, creating backup files or not, listing the paths
 of all files action was taken for, and returning an exit status of how many
 files that would have been taken action on which could not be written back.</p>
<p> The all-round quickest way of making one of these tools is nicking the top
 portion of <tt>lib/modules/Tools.pmod/Standalone.pmod/process_files.pike</tt>
 or copying <tt>rsif.pike</tt> from the same directory. (The latter is 20 lines
 long, including docs, or about four lines of code.) Inherit process_files,
 and define your own <ref resolved='predef::Tools.Standalone.process_files.version'>version</ref>, <ref resolved='predef::Tools.Standalone.process_files.description'>description</ref>, <ref resolved='predef::Tools.Standalone.process_files.usage'>usage</ref>, <ref resolved='predef::Tools.Standalone.process_files.process'>process</ref>, and,
 if you want arguments, <ref resolved='predef::Tools.Standalone.process_files.want_args'>want_args</ref>.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='process_files'><doc>
</doc>
<inherit name='process_files'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><classname>Toole.Standalone.process_files</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='version'><doc><text><p>Your hack's version number. If you version control your file with cvs, we
 suggest you set the contents of this variable to something that that will
 automatically expand to a number for every new revision, for instance</p>
</text><group><example/><text><p>string version = ("$Revision: 1.3 $"/" ")[1];</p>
</text></group></doc>
<variable name='version'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='description'><doc><text><p>One-liner that gets shown for this tool when running <tt>pike -x</tt> without
 additional options. (Assuming your tool resides in <tt>Standalone.pmod</tt>.)
 Does not include the name of the tool itself; just provide a nice, terse
 description, ending with a period for conformity.</p>
</text></doc>
<variable name='description'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='usage'><doc><text><p>Long description of the purpose and usage of your tool, for --help and the
 case where not enough options are given on the command line. Its invocation
 mode (for instance "pike -x yourtool", when invoked that way) is prepended,
 and a list of available flags appended to this description.</p>
</text></doc>
<variable name='usage'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='want_args'><doc><text><p>The number of (mandatory) command-line options your hack needs and which
 your <ref resolved='predef::Tools.Standalone.process_files.process'>process</ref> callback wants (beside the input file). By default 0.</p>
</text></doc>
<variable name='want_args'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='process' homogen-type='method'><doc><text><p>Gets called with the contents of a file (or stdin). Return your output, or
 0 if you didn't do anything. <ref resolved='predef::Tools.Standalone.process_files.process.args'>args</ref> are the first <ref resolved='predef::Tools.Standalone.process_files.want_args'>want_args</ref>
 command-line options provided, before the list of files to process.</p>
</text></doc>
<method name='process'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/>
<arguments><argument name='input'><type><string/></type></argument><argument name='args'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='verbosity'><doc><text><p>0 in quiet mode, 1 by default, above = more output</p>
</text></doc>
<variable name='verbosity'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><int><min>0</min><max/></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='overwrite'><doc><text><p>0 to make backups, 1 to overwrite (default)</p>
</text></doc>
<variable name='overwrite'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='recursive'><doc><text><p>1 to recurse into directories, 0 not to (default)</p>
</text></doc>
<variable name='recursive'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='default_flag_docs'><doc><text><p>Flag docs to append to your <ref resolved='predef::Tools.Standalone.process_files.usage'>usage</ref> description. Explains default options.</p>
</text></doc>
<variable name='default_flag_docs'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='process_file' homogen-type='method'><doc><text><p>Takes the path to a file and the first <ref resolved='predef::Tools.Standalone.process_files.want_args'>want_args</ref> command-line options
 provided, before the list of files to process. You might want to override
 this method if your tool needs to see file paths.</p>
</text><group><seealso/><text><p><ref resolved='predef::Tools.Standalone.process_files.process_path'>process_path</ref></p>
</text></group></doc>
<method name='process_file'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='args'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='process_path' homogen-type='method'><doc><text><p>Takes the path to a file or directory and the first <ref resolved='predef::Tools.Standalone.process_files.want_args'>want_args</ref> first
 command-line options provided, before the list of files to process. You
 might want to override this method if your tool needs to see all paths.</p>
</text><group><seealso/><text><p><ref resolved='predef::Tools.Standalone.process_files.process_file'>process_file</ref></p>
</text></group></doc>
<method name='process_path'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='args'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='main' homogen-type='method'><doc><text><p>Base implementation of main program, handling basic flags and returning an
 exit status matching the number of failures during operation.</p>
</text><group><fixme/><text><p>No easy way of adding your own command-line flags implemented yet. This
   would be a rather natural next feature to add, once somebody needs some.</p>
</text></group></doc>
<method name='main'><source-position first-line='131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Standalone.pmod/process_files.pike'/>
<arguments><argument name='argc'><type><int/></type></argument><argument name='argv'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
</class></module>

<module name='Monger'>

<class name='MongerDeveloper'><docgroup homogen-name='set_auth' homogen-type='method'><doc><text><p>set the username and password for accessing the remote repository.</p>
</text></doc>
<method name='set_auth'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='_username'><type><string/></type></argument><argument name='_password'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_repository' homogen-type='method'><doc><text><p>specify an alternate repository location.</p>
<p> this should be a URL specifying the XMLRPC endpoint for the repository.</p>
</text></doc>
<method name='set_repository'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='_repository'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_repository' homogen-type='method'><doc><text><p>sets the default repository location (modules.gotpike.org)</p>
</text></doc>
<method name='set_default_repository'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_directory' homogen-type='method'><doc><text><p>sets the monger directory to use for working and storing 
 configurations.</p>
</text></doc>
<method name='set_directory'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='_directory'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_directory' homogen-type='method'><doc><text><p>sets the default directory for working and storing configurations 
 ($HOME/.monger)</p>
</text></doc>
<method name='set_default_directory'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_new_version' homogen-type='method'><doc/>
<method name='add_new_version'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='changes'><type><string/></type></argument><argument name='license'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='update_version' homogen-type='method'><doc/>
<method name='update_version'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='changes'><type><or><string/><void/></or></type></argument><argument name='license'><type><or><string/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='user_change_password' homogen-type='method'><doc/>
<method name='user_change_password'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='_username'><type><or><string/><void/></or></type></argument><argument name='_newpassword'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='user_change_email' homogen-type='method'><doc/>
<method name='user_change_email'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='_username'><type><or><string/><void/></or></type></argument><argument name='_newemail'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_version_active' homogen-type='method'><doc/>
<method name='set_version_active'><source-position first-line='134' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='active'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_module_source' homogen-type='method'><doc/>
<method name='set_module_source'><source-position first-line='151' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_dependency' homogen-type='method'><doc/>
<method name='set_dependency'><source-position first-line='175' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='dependency'><type><string/></type></argument><argument name='min_version'><type><string/></type></argument><argument name='max_version'><type><string/></type></argument><argument name='required'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_dependency' homogen-type='method'><doc/>
<method name='delete_dependency'><source-position first-line='194' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='dependency'><type><string/></type></argument><argument name='min_version'><type><string/></type></argument><argument name='max_version'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dependencies' homogen-type='method'><doc/>
<method name='get_dependencies'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Monger.pmod/MongerDeveloper.pike'/>
<arguments><argument name='module_name'><type><string/></type></argument><argument name='version'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class></module>

<module name='Legal'>

<module name='License'><docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Returns all the licenses as a string, suitable for
 saving as a file.</p>
</text></doc>
<method name='get_text'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Legal.pmod/License.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='Copyright'><doc><text><p>Contains functions and information to store and present
 copyright information about Pike and it's components.</p>
</text></doc><docgroup homogen-name='add' homogen-type='method'><doc><text><p>Adds a copyright message for the copyright <ref resolved='predef::Tools.Legal.Copyright.add.holders'>holders</ref> for the
 component <ref resolved='predef::Tools.Legal.Copyright.add.what'>what</ref>.</p>
</text><group><throws/><text><p>An error is thrown if the copyrighted component <ref resolved='predef::Tools.Legal.Copyright.add.what'>what</ref> is
   already in the list of copyrights.</p>
</text></group></doc>
<method name='add'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Legal.pmod/Copyright.pmod'/>
<arguments><argument name='what'><type><string/></type></argument><argument name='holders'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_latest_pike' homogen-type='method'><doc><text><p>Return the latest copyright holder of Pike.</p>
</text></doc>
<method name='get_latest_pike'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Legal.pmod/Copyright.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all' homogen-type='method'><doc><text><p>Returns a mapping containing all the stored copyrights. The
 mapping maps component name to an array of copyright holders.</p>
</text></doc>
<method name='get_all'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Legal.pmod/Copyright.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Returns the copyrights as a string, suitable for saving as a
 file.</p>
</text></doc>
<method name='get_text'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Legal.pmod/Copyright.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</module></module>



<module name='AutoDoc'>

<module name='ProcessXML'><docgroup homogen-type='inherit' homogen-name='Tree'><doc>
</doc>
<inherit name='Tree'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/><modifiers><static/></modifiers><classname resolved='predef::Parser.XML.Tree'>Parser.XML.Tree</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/><modifiers><static/></modifiers><classname>"module.pmod"</classname></inherit>
</docgroup>
<docgroup homogen-name='extractXML' homogen-type='method'><doc><text><p>This function extracts documentation from a file. The parameters
 <ref resolved='predef::Tools.AutoDoc.ProcessXML.extractXML.type'>type</ref>, <ref resolved='predef::Tools.AutoDoc.ProcessXML.extractXML.name'>name</ref>, and <ref resolved='predef::Tools.AutoDoc.ProcessXML.extractXML.parentModules'>parentModules</ref> are used only when
 <ref resolved='predef::Tools.AutoDoc.ProcessXML.extractXML.pikeMode'>pikeMode</ref> != 0 and no C-style doc comments are present.</p>
</text><group><param name='filename'/><text><p>The file to extract from.</p>
</text></group><group><param name='pikeMode'/><text><p>Non-zero if it is a Pike file. If the file contains
   style doc comments, C-mode is used despite pikeMode != 0.</p>
</text></group><group><param name='type'/><text><p><expr>"class"</expr>, <expr>"module"</expr> or <expr>"namespace"</expr>.</p>
</text></group><group><param name='name'/><text><p>The name of the class/module/namespace.</p>
</text></group><group><param name='parentModules'/><text><p>The ancestors of the class/module/namespace.</p>
</text></group><group><example/><text><p>// To extract doc for Foo.Bar.Ippa:
   string xml = extractXML("lib/modules/Foo.pmod/Bar.pmod/Ippa.pike", 1,
     "class", "Ippa", ({ "Foo", "Bar" }));</p>
</text></group></doc>
<method name='extractXML'><source-position first-line='166' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='pikeMode'><type><or><int/><void/></or></type></argument><argument name='type'><type><or><string/><void/></or></type></argument><argument name='name'><type><or><string/><void/></or></type></argument><argument name='parentModules'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='moveImages' homogen-type='method'><doc><text><p>Copy all images to canonical files in a flat directory.</p>
</text><group><param name='docXMLFile'/><text><p>The contents of the XML file. The XML file is the result of extraction
   from a single C or Pike file, for example the result of calling
   <ref resolved='predef::Tools.AutoDoc.ProcessXML.extractXML'>extractXML</ref>.</p>
</text></group><group><param name='imageSourceDir'/><text><p>The directory that is the base of the relative paths to images. This
   should be the directory of the source file that was the input to
   extract the XML file.</p>
</text></group><group><param name='imageDestDir'/><text><p>The directory where the images should be copied.</p>
</text></group><group><param name='quiet'/><text><p>Quiet operation.</p>
</text></group><group><returns/><text><p>The XML file contents (with decorated &lt;image&gt;-tags)</p>
</text></group></doc>
<method name='moveImages'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/>
<arguments><argument name='docXMLFile'><type><string/></type></argument><argument name='imageSourceDir'><type><string/></type></argument><argument name='imageDestDir'><type><string/></type></argument><argument name='quiet'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mergeTrees' homogen-type='method'><doc><text><p>Puts all children of <ref resolved='predef::Tools.AutoDoc.ProcessXML.mergeTrees.source'>source</ref> into the tree <ref resolved='predef::Tools.AutoDoc.ProcessXML.mergeTrees.dest'>dest</ref>, in their right
   place module-hierarchically.
   Used to merge the results of extractions of different Pike and C files.</p>
</text><group><param name='source'/><param name='dest'/><text><p>The nodes <ref resolved='predef::Tools.AutoDoc.ProcessXML.mergeTrees.source'>source</ref> and <ref resolved='predef::Tools.AutoDoc.ProcessXML.mergeTrees.dest'>dest</ref> are <tt>&lt;class&gt;</tt>, <tt>&lt;module&gt;</tt>,
   <tt>&lt;namespace&gt;</tt> or <tt>&lt;autodoc&gt;</tt> nodes that are identical in
   the sense that they represent the same module, class or namespace.
   Typically they both represent <tt>&lt;autodoc&gt;</tt> nodes.</p>
</text></group><group><note/><text><p>After calling this method, any <tt>&lt;class&gt;</tt> or <tt>&lt;module&gt;</tt> nodes
   that have been marked with @appears or @belongs, are still in the
   wrong place in the tree, so <ref resolved='predef::Tools.AutoDoc.ProcessXML.handleAppears'>handleAppears()</ref> (or <ref resolved='predef::Tools.AutoDoc.ProcessXML.postProcess'>postProcess()</ref>)
   must be called on the whole documentation tree to relocate them once
   the tree has been fully merged.</p>
</text></group></doc>
<method name='mergeTrees'><source-position first-line='383' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/>
<arguments><argument name='dest'><type><object resolved='predef::Parser.XML.Tree.Node'>Node</object></type></argument><argument name='source'><type><object resolved='predef::Parser.XML.Tree.Node'>Node</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='handleAppears' homogen-type='method'><doc><text><p>Take care of all the @appears and @belongs directives everywhere,
 and rearranges the nodes in the tree accordingly</p>
</text><group><param name='root'/><text><p>The root (<tt>&lt;autodoc&gt;</tt>) node of the documentation tree.</p>
</text></group></doc>
<method name='handleAppears'><source-position first-line='522' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/>
<arguments><argument name='root'><type><object resolved='predef::Parser.XML.Tree.Node'>Node</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='postProcess' homogen-type='method'><doc><text><p>Perform the last steps on a completed documentation tree.</p>
</text><group><param name='root'/><text><p>Root <tt>&lt;autodoc&gt;</tt> node of the completed documentation tree.</p>
<p> Calls <ref resolved='predef::Tools.AutoDoc.ProcessXML.handleAppears'>handleAppears()</ref>, <ref>cleanUndocumented()</ref> and <ref>resolveRefs()</ref>
 in turn.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Tools.AutoDoc.ProcessXML.handleAppears'>handleAppears()</ref>, <ref>cleanUndocumented()</ref>, <ref>resolveRefs()</ref></p>
</text></group></doc>
<method name='postProcess'><source-position first-line='1544' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/AutoDoc.pmod/ProcessXML.pmod'/>
<arguments><argument name='root'><type><object resolved='predef::Parser.XML.Tree.Node'>Node</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module></module>

<module name='Shoot'>

<class name='Test'><docgroup homogen-type='constant' homogen-name='name'><doc><text><p>The name of the test.</p>
</text></doc>
<constant name='name'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/Test.pike'/></constant>
</docgroup>
<docgroup homogen-name='perform' homogen-type='method'><doc><text><p>perform() is the function called in the tests,
 when it returns the test is complete.</p>
</text></doc>
<method name='perform'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/Test.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='ExecTest'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/module.pmod'/><doc><text><p>The test call/result class.
 Instantiated with a test id and the test object itself.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='id'><type><string/></type></variable>
<variable name='test'><type><object resolved='predef::Tools.Shoot.Test'>Test</object></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='id'><type><string/></type></argument><argument name='test'><type><object resolved='predef::Tools.Shoot.Test'>Test</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='run' homogen-type='method'><doc><text><p>This function runs the actual test, by spawning off
 a new pike and call it until at least one of these conditions:
 maximum_seconds has passed, or
 the number of runs is at least maximum_runs.</p>
</text></doc>
<method name='run'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/module.pmod'/>
<arguments><argument name='maximum_seconds'><type><int/></type></argument><argument name='maximum_runs'><type><int/></type></argument><argument name='silent'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/module.pmod'/><classname>"."</classname></import>
</docgroup>
<docgroup homogen-name='_shoot' homogen-type='method'><doc><text><p>This function is called in the spawned pike,
 to perform the test but also to write some important 
 data to stdout. <ref resolved='predef::Tools.Shoot._shoot.id'>id</ref> is the current test.</p>
</text></doc>
<method name='_shoot'><source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Shoot.pmod/module.pmod'/>
<arguments><argument name='id'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module>



<module name='Hilfe'>

<class name='Command'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><doc><text><p>Abstract class for Hilfe commands.</p>
</text></doc><docgroup homogen-name='help' homogen-type='method'><doc><text><p>Returns a one line description of the command. This help should
 be shorter than 54 characters.</p>
</text></doc>
<method name='help'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='doc' homogen-type='method'><doc><text><p>A more elaborate documentation of the command. This should be
 less than 68 characters per line.</p>
</text></doc>
<method name='doc'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='what'><type><string/></type></argument><argument name='with'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exec' homogen-type='method'><doc><text><p>The actual command callback. Messages to the user should be
 written out by using the safe_write method in the <ref resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</ref>
 object.</p>
</text></doc>
<method name='exec'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='e'><type><object resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</object></type></argument><argument name='line'><type><string/></type></argument><argument name='words'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='tokens'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='CommandReset'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><doc><text><p>Variable reset command. Put ___Hilfe-&gt;commands-&gt;reset =
 Tools.Hilfe.CommandReset(); in your .hilferc to have this command
 defined when you open Hilfe.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Command'><doc>
</doc>
<inherit name='Command'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><classname resolved='predef::Tools.Hilfe.Command'>Command</classname></inherit>
</docgroup>
</class>

<class name='ParserState'><source-position first-line='1030' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><modifiers><private/></modifiers><doc><text><p>In every Hilfe object (<ref resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</ref>) there is a ParserState object
 that manages the current state of the parser. Essentially tokens are
 entered in one end and complete expressions are outputted in the other.
 The parser object is accessible as ___Hilfe-&gt;state from Hilfe expressions.</p>
</text></doc><docgroup homogen-name='feed' homogen-type='method'><doc><text><p>Feed more tokens into the state.</p>
</text></doc>
<method name='feed'><source-position first-line='1042' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='tokens'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read out completed expressions. Returns an array where every element
 is an expression represented as an array of tokens.</p>
</text></doc>
<method name='read'><source-position first-line='1131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><array><valuetype><object>Expression</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_error' homogen-type='method'><doc><text><p>Prints out any error that might have occured while
 <ref resolved='predef::Tools.Hilfe.ParserState.push_string'>push_string</ref> was executed. The error will be
 printed with the print function <ref resolved='predef::Tools.Hilfe.ParserState.show_error.w'>w</ref>.</p>
</text></doc>
<method name='show_error'><source-position first-line='1147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='w'><type><function><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='push_string' homogen-type='method'><doc><text><p>Sends the input <ref resolved='predef::Tools.Hilfe.ParserState.push_string.line'>line</ref> to <ref resolved='predef::Parser.Pike'>Parser.Pike</ref> for tokenization,
 but keeps a state between each call to handle multiline
 /**/ comments and multiline #"" strings.</p>
</text></doc>
<method name='push_string'><source-position first-line='1156' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='line'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='datap' homogen-type='method'><doc><text><p>Returns true if there is any waiting expression that can be fetched
 with <ref resolved='predef::Tools.Hilfe.ParserState.read'>read</ref>.</p>
</text></doc>
<method name='datap'><source-position first-line='1197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='finishedp' homogen-type='method'><doc><text><p>Are we in the middle of an expression. Used e.g. for changing the
 Hilfe prompt when entering multiline expressions.</p>
</text></doc>
<method name='finishedp'><source-position first-line='1205' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Clear the current state.</p>
</text></doc>
<method name='flush'><source-position first-line='1217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='status' homogen-type='method'><doc><text><p>Returns the current parser state. Used by "dump state".</p>
</text></doc>
<method name='status'><source-position first-line='1227' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='HilfeHistory'><source-position first-line='1240' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><modifiers><private/></modifiers><doc><text><p>In every Hilfe object (<ref resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</ref>) there is a HilfeHistory
 object that manages the result history. That history object is
 accessible both from __ and ___Hilfe-&gt;history in Hilfe expressions.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='History'><doc>
</doc>
<inherit name='History'><source-position first-line='1242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><classname resolved='predef::ADT.History'>ADT.History</classname></inherit>
</docgroup>
</class>

<class name='Evaluator'><source-position first-line='1281' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><doc><text><p>This class implements the actual Hilfe interpreter. It is accessible
 as ___Hilfe from Hilfe expressions.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='commands'><doc><text><p>This mapping contains the available Hilfe commands, including the
 built in ones (dump, exit, help, new, quit), so it is possible to
 replace or remove them. The name of a command should be 10
 characters or less.</p>
</text></doc>
<variable name='commands'><source-position first-line='1287' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Tools.Hilfe.Command'>Command</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='state'><doc><text><p>Keeps the state, e.g. multiline input in process etc.</p>
</text></doc>
<variable name='state'><source-position first-line='1290' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><object resolved='predef::Tools.Hilfe.ParserState'>ParserState</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='variables'><doc><text><p>The locally defined variables (name:value).</p>
</text></doc>
<variable name='variables'><source-position first-line='1293' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='types'><doc><text><p>The types of the locally defined variables (name:type).</p>
</text></doc>
<variable name='types'><source-position first-line='1296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='constants'><doc><text><p>The locally defined constants (name:value).</p>
</text></doc>
<variable name='constants'><source-position first-line='1299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='functions'><doc><text><p>The locally defined functions (name:value).</p>
</text></doc>
<variable name='functions'><source-position first-line='1302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><function/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='programs'><doc><text><p>The locally defined programs (name:value).</p>
</text></doc>
<variable name='programs'><source-position first-line='1305' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><mapping><indextype><string/></indextype><valuetype><program/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='imports'><doc><text><p>The current imports.</p>
</text></doc>
<variable name='imports'><source-position first-line='1308' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='inherits'><doc><text><p>The current inherits.</p>
</text></doc>
<variable name='inherits'><source-position first-line='1311' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='history'><doc><text><p>The current result history.</p>
</text></doc>
<variable name='history'><source-position first-line='1314' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><object resolved='predef::Tools.Hilfe.HilfeHistory'>HilfeHistory</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='write'><doc><text><p>The function to use when writing to the user.</p>
</text></doc>
<variable name='write'><source-position first-line='1317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><or><array/><object resolved='predef::Tools.Hilfe.Evaluator'/><function><argtype><string/></argtype><returntype><int><min>0</min><max/></int></returntype></function></or></type></variable>
</docgroup>
<docgroup homogen-name='add_writer' homogen-type='method'><doc><text><p>Adds another output function.</p>
</text></doc>
<method name='add_writer'><source-position first-line='1320' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='new'><type><or><object resolved='predef::Tools.Hilfe.Evaluator.add_writer'/><function><argtype><string/></argtype><returntype><int><min>0</min><max/></int></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_writer' homogen-type='method'><doc><text><p>Removes an output function.</p>
</text></doc>
<method name='remove_writer'><source-position first-line='1330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='old'><type><or><object resolved='predef::Tools.Hilfe.Evaluator.remove_writer'/><function/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='safe_write' homogen-type='method'><doc><text><p>An output method that shouldn't crash.</p>
</text></doc>
<method name='safe_write'><source-position first-line='1338' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='in'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_input_hook' homogen-type='method'><doc><text><p>Adds a function to the input hook, making
 all user data be fed into the function.</p>
</text><group><seealso/><text><p><ref resolved='predef::Tools.Hilfe.Evaluator.remove_input_hook'>remove_input_hook</ref></p>
</text></group></doc>
<method name='add_input_hook'><source-position first-line='1362' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='new'><type><or><function/><object resolved='predef::Tools.Hilfe.Evaluator.add_input_hook'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_input_hook' homogen-type='method'><doc><text><p>Removes a function from the input hook.</p>
</text><group><seealso/><text><p><ref resolved='predef::Tools.Hilfe.Evaluator.add_input_hook'>add_input_hook</ref></p>
</text></group></doc>
<method name='remove_input_hook'><source-position first-line='1369' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='old'><type><or><function/><object resolved='predef::Tools.Hilfe.Evaluator.remove_input_hook'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='1375' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='print_version' homogen-type='method'><doc><text><p>Displays the current version of Hilfe.</p>
</text></doc>
<method name='print_version'><source-position first-line='1392' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reset_evaluator' homogen-type='method'><doc><text><p>Clears the current state, history and removes all locally
 defined variables, constants, functions and programs. Removes
 all imports and inherits. It does not reset the command mapping
 nor reevaluate the .hilferc file.</p>
</text></doc>
<method name='reset_evaluator'><source-position first-line='1406' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_input_line' homogen-type='method'><doc><text><p>Input a line of text into Hilfe. It checks if <ref resolved='predef::Tools.Hilfe.Evaluator.add_input_line.s'>s</ref> is
 ".", in which case it calls state-&gt;flush(). Otherwise
 just calls add_buffer.</p>
</text></doc>
<method name='add_input_line'><source-position first-line='1421' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_buffer' homogen-type='method'><doc><text><p>Add buffer tokenizes the input string and determines if the
 new line is a Hilfe command. If not, it updates the current
 state with the new tokens and sends any and all complete
 expressions to evaluation in <ref resolved='predef::Tools.Hilfe.Evaluator.parse_expression'>parse_expression</ref>.</p>
</text></doc>
<method name='add_buffer'><source-position first-line='1439' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_expression' homogen-type='method'><doc><text><p>Parses a Pike expression. Returns 0 if everything went well,
 or a string with an error message otherwise.</p>
</text></doc>
<method name='parse_expression'><source-position first-line='1804' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='expr'><type><object>Expression</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='last_compiled_expr'><doc><text><p>The last created wrapper in which an expression was evaluated.</p>
</text></doc>
<variable name='last_compiled_expr'><source-position first-line='1921' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='last_compile_time'><doc><text><p>The last compile time;</p>
</text></doc>
<variable name='last_compile_time'><source-position first-line='1924' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int><min>0</min><max/></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='last_eval_time'><doc><text><p>The last evaluation time;</p>
</text></doc>
<variable name='last_eval_time'><source-position first-line='1927' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int><min>0</min><max/></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='strict_types'><doc><text><p>Strict types?</p>
</text></doc>
<variable name='strict_types'><source-position first-line='1930' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='warnings'><doc><text><p>Show warnings?</p>
</text></doc>
<variable name='warnings'><source-position first-line='1933' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='trace_level'><doc><text><p>The current trace level.</p>
</text></doc>
<variable name='trace_level'><source-position first-line='1936' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='assembler_debug_level'><doc><text><p>The current assembler debug level.
 Only available if Pike is compiled with RTL debug.</p>
</text></doc>
<variable name='assembler_debug_level'><source-position first-line='1940' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='compiler_trace_level'><doc><text><p>The current compiler trace level.
 Only available if Pike is compiled with RTL debug.</p>
</text></doc>
<variable name='compiler_trace_level'><source-position first-line='1945' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='debug_level'><doc><text><p>The current debug level.
 Only available if Pike is compiled with RTL debug.</p>
</text></doc>
<variable name='debug_level'><source-position first-line='1950' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='std_reswrite' homogen-type='method'><doc><text><p>The standard <ref resolved='predef::Tools.Hilfe.Evaluator.reswrite'>reswrite</ref> function.</p>
</text></doc>
<method name='std_reswrite'><source-position first-line='1954' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='w'><type><function/></type></argument><argument name='sres'><type><string/></type></argument><argument name='num'><type><int/></type></argument><argument name='res'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='reswrite'><doc><text><p>The function used to write results.
 Gets as arguments in order: The safe_write function
 (function(string, mixed ...:int), the result as a string (string),
 the history entry number (int), the result (mixed), the compilation
 time (int) and the evaulation time (int). If the evaluated expression
 didn't return anything (e.g. a for loop) then 0 will be given as the
 result string.</p>
</text></doc>
<variable name='reswrite'><source-position first-line='1969' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><function/></type></variable>
</docgroup>
<docgroup homogen-name='hilfe_compile' homogen-type='method'><doc><text><p>Creates a wrapper and compiles the pike code <ref resolved='predef::Tools.Hilfe.Evaluator.hilfe_compile.f'>f</ref> in it.
 If a new variable is compiled to be tested, its name
 should be given in <ref resolved='predef::Tools.Hilfe.Evaluator.hilfe_compile.new_var'>new_var</ref> so that magically defined
 entities can be undefined and a warning printed.</p>
</text></doc>
<method name='hilfe_compile'><source-position first-line='2038' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='f'><type><string/></type></argument><argument name='new_var'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Tools.Hilfe.Evaluator.hilfe_compile'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='evaluate' homogen-type='method'><doc><text><p>Compiles the Pike code <ref resolved='predef::Tools.Hilfe.Evaluator.evaluate.a'>a</ref> and evaluates it by
 calling ___HilfeWrapper in the generated object.
 If <ref resolved='predef::Tools.Hilfe.Evaluator.evaluate.show_result'>show_result</ref> is set the result will be displayed
 and the result buffer updated with its value.</p>
</text></doc>
<method name='evaluate'><source-position first-line='2136' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='a'><type><string/></type></argument><argument name='show_result'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='StdinHilfe'><source-position first-line='2197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><doc><text><p>This is a wrapper containing a user interface to the Hilfe <ref resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</ref>
 so that it can actually be used. This wrapper uses the <ref resolved='predef::Stdio.Readline'>Stdio.Readline</ref>
 module to interface with the user. All input history is handled by
 that module, and as a consequence loading and saving .hilfe_history is
 handled in this class. Also .hilferc is handled by this class.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Evaluator'><doc>
</doc>
<inherit name='Evaluator'><source-position first-line='2199' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><classname resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='readline'><doc><text><p>The readline object,</p>
</text></doc>
<variable name='readline'><source-position first-line='2202' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><type><object resolved='predef::Stdio.Readline'>Stdio.Readline</object></type></variable>
</docgroup>
<docgroup homogen-name='save_history' homogen-type='method'><doc><text><p>Saves the user input history, if possible, when called.</p>
</text></doc>
<method name='save_history'><source-position first-line='2205' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Any hilfe statements given in the init array will be executed
 once .hilferc has been executed.</p>
</text></doc>
<method name='create'><source-position first-line='2242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='init'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='GenericHilfe'><source-position first-line='2272' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><docgroup homogen-type='inherit' homogen-name='Evaluator'><doc>
</doc>
<inherit name='Evaluator'><source-position first-line='2274' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><classname resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='2277' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='in'><type><object resolved='predef::Stdio.FILE'>Stdio.FILE</object></type></argument><argument name='out'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='GenericAsyncHilfe'><source-position first-line='2296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><docgroup homogen-type='inherit' homogen-name='Evaluator'><doc>
</doc>
<inherit name='Evaluator'><source-position first-line='2298' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/><classname resolved='predef::Tools.Hilfe.Evaluator'>Evaluator</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='2335' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='in'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument><argument name='out'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='format_hr_time' homogen-type='method'><doc><text><p>Helper function that formats a time span in nanoseconds to
 something more human readable (ns, ms or s).</p>
</text></doc>
<method name='format_hr_time'><source-position first-line='91' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Hilfe.pmod'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='PEM'><doc><text><p>Support for parsing PEM-style messages.</p>
</text></doc>

<class name='EncapsulatedMsg'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><docgroup homogen-type='variable' homogen-name='boundary'><doc><text><p>contains the boundary string</p>
</text></doc>
<variable name='boundary'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='body'><doc><text><p>contains the body of the message</p>
</text></doc>
<variable name='body'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='headers'><doc/>
<variable name='headers'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments><argument name='eb'><type><string/></type></argument><argument name='contents'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decoded_body' homogen-type='method'><doc><text><p>decodes a base 64 encoded message body</p>
</text></doc>
<method name='decoded_body'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_boundary' homogen-type='method'><doc/>
<method name='get_boundary'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='canonical_body' homogen-type='method'><doc/>
<method name='canonical_body'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_string' homogen-type='method'><doc><text><p>converts the message body and headers to the standard message format.</p>
</text></doc>
<method name='to_string'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='RFC934'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><docgroup homogen-type='variable' homogen-name='initial_text'><doc/>
<variable name='initial_text'><source-position first-line='116' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='final_text'><doc/>
<variable name='final_text'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='final_boundary'><doc/>
<variable name='final_boundary'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='encapsulated'><doc/>
<variable name='encapsulated'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><array><valuetype><object resolved='predef::Tools.PEM.EncapsulatedMsg'>EncapsulatedMsg</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>decodes an RFC 934 encoded message.</p>
</text></doc>
<method name='create'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_final_boundary' homogen-type='method'><doc/>
<method name='get_final_boundary'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_string' homogen-type='method'><doc/>
<method name='to_string'><source-position first-line='223' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Msg'><source-position first-line='238' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><doc><text><p>Disassembles PGP and PEM style messages with parts
 separated by "-----BEGIN FOO-----" and "-----END FOO-----".</p>
</text></doc><docgroup homogen-type='variable' homogen-name='initial_text'><doc><text><p>Contains any text preceeding the PEM message.</p>
</text></doc>
<variable name='initial_text'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='final_text'><doc><text><p>Contains any text following the PEM message.</p>
</text></doc>
<variable name='final_text'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='parts'><doc><text><p>The decoded PEM message, as an array of <ref resolved='predef::Tools.PEM.EncapsulatedMsg'>EncapsulatedMsg</ref> objects
 indexed by message name, such as "CERTIFICATE".</p>
</text></doc>
<variable name='parts'><source-position first-line='249' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/><type><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Tools.PEM.EncapsulatedMsg'>EncapsulatedMsg</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a decoded PEM message</p>
</text><group><param name='s'/><text><p>a string containing a PEM encoded message to be decoded.</p>
</text></group></doc>
<method name='create'><source-position first-line='255' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PEM.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='Install'><doc><text><p>Common routines which are useful for various install scripts based on Pike.</p>
</text></doc>

<class name='ProgressBar'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/><doc><text><p>A class keeping some methods and state to conveniently render
 ASCII progress bars to stdout.</p>
</text></doc><docgroup homogen-name='set_current' homogen-type='method'><doc><text><p>Change the amount of progress without updating on stdout.</p>
</text></doc>
<method name='set_current'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='_cur'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_name' homogen-type='method'><doc><text><p>Change the name of the progress bar without updating on stdout.</p>
</text></doc>
<method name='set_name'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='_name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_phase' homogen-type='method'><doc/>
<method name='set_phase'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='_phase_base'><type><float/></type></argument><argument name='_phase_size'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='update' homogen-type='method'><doc><text><p>Write the current look of the progressbar to stdout.</p>
</text><group><param name='increment'/><text><p>the number of increments closer to completion since last call</p>
</text></group><group><returns/><text><p>the length (in characters) of the line with the progressbar</p>
</text></group></doc>
<method name='update'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='increment'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='name'/><text><p>The name (printed in the first 13 columns of the row)</p>
</text></group><group><param name='cur'/><text><p>How much progress has been made so far</p>
</text></group><group><param name='max'/><text><p>The amount of progress signifying 100% done. Must be greater than zero.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='name'><type><string/></type></argument><argument name='cur'><type><int/></type></argument><argument name='max'><type><int/></type></argument><argument name='phase_base'><type><or><float/><void/></or></type></argument><argument name='phase_size'><type><or><float/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Readline'><source-position first-line='167' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/><docgroup homogen-type='inherit' homogen-name='Readline'><doc>
</doc>
<inherit name='Readline'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/><classname resolved='predef::Stdio.Readline'>Stdio.Readline</classname></inherit>
</docgroup>
<docgroup homogen-name='trap_signal' homogen-type='method'><doc/>
<method name='trap_signal'><source-position first-line='175' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='edit' homogen-type='method'><doc/>
<method name='edit'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='edit_filename' homogen-type='method'><doc/>
<method name='edit_filename'><source-position first-line='209' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='edit_directory' homogen-type='method'><doc/>
<method name='edit_directory'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='absolute_path' homogen-type='method'><doc/>
<method name='absolute_path'><source-position first-line='273' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cwd' homogen-type='method'><doc/>
<method name='set_cwd'><source-position first-line='279' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='_cwd'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='features' homogen-type='method'><doc/>
<method name='features'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_absolute_path' homogen-type='method'><doc/>
<method name='make_absolute_path'><source-position first-line='63' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/Install.pmod'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='cwd'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='sed'><doc><text><p>edit commands supported:
 <pre>
 &lt;firstline&gt;,&lt;lastline&gt;&lt;edit command&gt;
    ^^ numeral (17) ^^
       or relative (+17, -17)
       or a search regexp (/regexp/)
       or multiple (17/regexp//regexp/+2)
 </pre></p>
<p> 
 <matrix>
 <r><c><b>Command</b></c><c><b>Action</b></c></r>
 <r><c>D</c><c>Delete first line in space</c></r>
 <r><c>G</c><c>Insert hold space</c></r>
 <r><c>H</c><c>Append current space to hold space</c></r>
 <r><c>P</c><c>Print current data</c></r>
 <r><c>a&lt;string&gt;</c><c>Insert</c></r>
 <r><c>c&lt;string&gt;</c><c>Change current space</c></r>
 <r><c>d</c><c>Delete current space</c></r>
 <r><c>h</c><c>Copy current space to hold space</c></r>
 <r><c>i&lt;string&gt;</c><c>Print string</c></r>
 <r><c>l</c><c>Print current space</c></r>
 <r><c>p</c><c>Print first line in data</c></r>
 <r><c>q</c><c>Quit evaluating</c></r>
 <r><c>s/regexp/with/x</c><c>Replace</c></r>
 <r><c>y/chars/chars/</c><c>Replace chars</c></r>
 </matrix>
 </p>
<p> where line is numeral, first 'line'==0</p>
</text></doc><docgroup homogen-name='`()' homogen-type='method'><doc/>
<method name='`()'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/sed.pmod'/>
<arguments><argument name='commands'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='data'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='suppress'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><string/><array/></or></returntype>
</method>
</docgroup>
</module>

<class name='PV'><doc><text><p>Display a image on the screen. Requires GTK.</p>
</text></doc><enum name='AlphaMode'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/><doc><text><p>The alpha combination modes.</p>
<p> Use <ref resolved='predef::Tools.PV.set_alpha_mode'>set_alpha_mode()</ref> to change the mode.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='Squares'><doc><text><p>Checkerboard pattern (default).</p>
</text></doc>
<constant name='Squares'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='Solid'><doc><text><p>Solid color.</p>
</text></doc>
<constant name='Solid'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='None'><doc><text><p>Ignore alpha.</p>
</text></doc>
<constant name='None'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='AlphaOnly'><doc><text><p>Only show the alpha channel (if any).</p>
</text></doc>
<constant name='AlphaOnly'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/></constant>
</docgroup>
</enum><docgroup homogen-type='inherit' homogen-name='Window'><doc>
</doc>
<inherit name='Window'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-type='typedef' homogen-name='PVImage'><doc><text><p>The image types accepted. If the image is a string, it is assumed
 to be a filename of a image that can be loaded with Image.load. 
 This includes URLs.</p>
</text></doc>
<typedef name='PVImage'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/><type><or><object resolved='predef::Standards.URI'>Standards.URI</object><string/><object resolved='predef::Image.Image'>Image.Image</object><object resolved='predef::Image.Layer'>Image.Layer</object><array><valuetype><object resolved='predef::Image.Layer'>Image.Layer</object></valuetype></array></or></type></typedef>
</docgroup>
<docgroup homogen-name='set_alpha_mode' homogen-type='method'><doc><text><p>Set the alpha combining mode. <ref resolved='predef::Tools.PV.set_alpha_mode.m'>m</ref> is one of <ref resolved='predef::Tools.PV.AlphaMode.Squares'>Squares</ref>, <ref resolved='predef::Tools.PV.AlphaMode.Solid'>Solid</ref>,
 <ref resolved='predef::Tools.PV.AlphaMode.None'>None</ref> and <ref resolved='predef::Tools.PV.AlphaMode.AlphaOnly'>AlphaOnly</ref>.</p>
</text></doc>
<method name='set_alpha_mode'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='m'><type><object resolved='predef::Tools.PV.AlphaMode'>AlphaMode</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_alpha_colors' homogen-type='method'><doc><text><p>Set the colors used for the alpha combination. <ref resolved='predef::Tools.PV.set_alpha_colors.c2'>c2</ref> is only used
 for the <ref resolved='predef::Tools.PV.AlphaMode.Squares'>Squares</ref> alpha mode.</p>
</text><group><seealso/><text><p><ref resolved='predef::Tools.PV.set_alpha_mode'>set_alpha_mode()</ref></p>
</text></group></doc>
<method name='set_alpha_colors'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='c1'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument><argument name='c2'><type><or><object resolved='predef::Image.Color.Color'>Image.Color.Color</object><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_as_image' homogen-type='method'><doc><text><p>Return the current image as a Image object, with the alpha
 combining done.</p>
</text></doc>
<method name='get_as_image'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='i'><type><object resolved='predef::Tools.PV.PVImage'>PVImage</object></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_image' homogen-type='method'><doc><text><p>Change the image.</p>
</text></doc>
<method name='set_image'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='i'><type><object resolved='predef::Tools.PV.PVImage'>PVImage</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='scale' homogen-type='method'><doc><text><p>Scale the image before display with the specified factor.</p>
</text></doc>
<method name='scale'><source-position first-line='151' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='factor'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='save' homogen-type='method'><doc><text><p>Write the image to a file. If no format is specified, PNG is used. 
 The alpha combination is done on the image before it's saved.</p>
</text></doc>
<method name='save'><source-position first-line='158' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/PV.pike'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='format'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='X509'>

<class name='rsa_verifier'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><docgroup homogen-type='inherit' homogen-name='Verifier'><doc>
</doc>
<inherit name='Verifier'><source-position first-line='247' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><classname>Verifier</classname></inherit>
</docgroup>
<docgroup homogen-name='init' homogen-type='method'><doc/>
<method name='init'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Tools.X509.rsa_verifier'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify' homogen-type='method'><doc/>
<method name='verify'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='algorithm'><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></argument><argument name='msg'><type><string/></type></argument><argument name='signature'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>

<class name='TBSCertificate'><source-position first-line='330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><docgroup homogen-type='variable' homogen-name='der'><doc/>
<variable name='der'><source-position first-line='333' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='version'><doc/>
<variable name='version'><source-position first-line='336' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='serial'><doc/>
<variable name='serial'><source-position first-line='339' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='algorithm'><doc/>
<variable name='algorithm'><source-position first-line='342' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='issuer'><doc/>
<variable name='issuer'><source-position first-line='345' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='not_after'><doc/>
<variable name='not_after'><source-position first-line='348' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='not_before'><doc/>
<variable name='not_before'><source-position first-line='351' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='subject'><doc/>
<variable name='subject'><source-position first-line='354' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='public_key'><doc/>
<variable name='public_key'><source-position first-line='357' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object>Verifier</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='issuer_id'><doc><group><note/><text><p>optional</p>
</text></group></doc>
<variable name='issuer_id'><source-position first-line='363' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Standards.ASN1.Types.BitString'>BitString</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='subject_id'><doc><group><note/><text><p>optional</p>
</text></group></doc>
<variable name='subject_id'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Standards.ASN1.Types.BitString'>BitString</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='extensions'><doc><group><note/><text><p>optional</p>
</text></group></doc>
<variable name='extensions'><source-position first-line='371' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><type><object resolved='predef::Tools.X509.TBSCertificate'/></type></variable>
</docgroup>
<docgroup homogen-name='init' homogen-type='method'><doc/>
<method name='init'><source-position first-line='374' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='asn1'><type><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></type></argument></arguments>
<returntype><object resolved='predef::Tools.X509.TBSCertificate'>this_program</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><classname resolved='predef::Standards.ASN1.Types'>Standards.ASN1.Types</classname></import>
</docgroup>
<docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/><classname resolved='predef::Standards.PKCS'>Standards.PKCS</classname></import>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_TOO_OLD'><doc/>
<constant name='CERT_TOO_OLD'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_TOO_NEW'><doc/>
<constant name='CERT_TOO_NEW'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_INVALID'><doc/>
<constant name='CERT_INVALID'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_CHAIN_BROKEN'><doc/>
<constant name='CERT_CHAIN_BROKEN'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_ROOT_UNTRUSTED'><doc/>
<constant name='CERT_ROOT_UNTRUSTED'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_BAD_SIGNATURE'><doc/>
<constant name='CERT_BAD_SIGNATURE'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='CERT_UNAUTHORIZED_CA'><doc/>
<constant name='CERT_UNAUTHORIZED_CA'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/></constant>
</docgroup>
<docgroup homogen-name='make_time' homogen-type='method'><doc><text><p>Creates a <ref resolved='predef::Standards.ASN1.Types.UTC'>Standards.ASN1.Types.UTC</ref> object from the posix
 time <ref resolved='predef::Tools.X509.make_time.t'>t</ref>.</p>
</text></doc>
<method name='make_time'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='t'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.UTC'>UTC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_time' homogen-type='method'><doc><text><p>Returns a mapping similar to that returned by gmtime</p>
</text><group><returns/><text><mapping><group><member><type><int/></type><index>"year"</index></member><member><type><int/></type><index>"mon"</index></member><member><type><int/></type><index>"mday"</index></member><member><type><int/></type><index>"hour"</index></member><member><type><int/></type><index>"min"</index></member><member><type><int/></type><index>"sec"</index></member></group></mapping>
</text></group></doc>
<method name='parse_time'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='asn1'><type><object resolved='predef::Standards.ASN1.Types.UTC'>UTC</object></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='time_compare' homogen-type='method'><doc><text><p>Comparision function between two "date" mappings of the
 kind that <ref resolved='predef::Tools.X509.parse_time'>parse_time</ref> returns.</p>
</text></doc>
<method name='time_compare'><source-position first-line='115' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='t1'><type><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></type></argument><argument name='t2'><type><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_tbs' homogen-type='method'><doc/>
<method name='make_tbs'><source-position first-line='137' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='issuer'><type><object resolved='predef::Tools.X509.make_tbs'/></type></argument><argument name='algorithm'><type><object resolved='predef::Tools.X509.make_tbs'/></type></argument><argument name='subject'><type><object resolved='predef::Tools.X509.make_tbs'/></type></argument><argument name='keyinfo'><type><object resolved='predef::Tools.X509.make_tbs'/></type></argument><argument name='serial'><type><object resolved='predef::Tools.X509.make_tbs'/></type></argument><argument name='ttl'><type><int/></type></argument><argument name='extensions'><type><array/></type></argument></arguments>
<returntype><object resolved='predef::Standards.ASN1.Types.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_selfsigned_dsa_certificate' homogen-type='method'><doc/>
<method name='make_selfsigned_dsa_certificate'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='dsa'><type><object resolved='predef::Crypto.DSA'>Crypto.DSA</object></type></argument><argument name='ttl'><type><int/></type></argument><argument name='name'><type><array/></type></argument><argument name='extensions'><type><or><array/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_sign_digest' homogen-type='method'><doc/>
<method name='rsa_sign_digest'><source-position first-line='190' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument><argument name='digest_id'><type><object resolved='predef::Tools.X509.rsa_sign_digest'/></type></argument><argument name='digest'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_verify_digest' homogen-type='method'><doc/>
<method name='rsa_verify_digest'><source-position first-line='198' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument><argument name='digest_id'><type><object resolved='predef::Tools.X509.rsa_verify_digest'/></type></argument><argument name='digest'><type><string/></type></argument><argument name='s'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_selfsigned_rsa_certificate' homogen-type='method'><doc/>
<method name='make_selfsigned_rsa_certificate'><source-position first-line='207' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='rsa'><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></argument><argument name='ttl'><type><int/></type></argument><argument name='name'><type><array/></type></argument><argument name='extensions'><type><or><array/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_verifier' homogen-type='method'><doc/>
<method name='make_verifier'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='_keyinfo'><type><object resolved='predef::Standards.ASN1.Types.Object'>Object</object></type></argument></arguments>
<returntype><object>Verifier</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_certificate' homogen-type='method'><doc/>
<method name='decode_certificate'><source-position first-line='493' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='cert'><type><or><string/><object resolved='predef::Tools.X509.decode_certificate'/></or></type></argument></arguments>
<returntype><object resolved='predef::Tools.X509.TBSCertificate'>TBSCertificate</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_certificate' homogen-type='method'><doc><text><p>Decodes a certificate, checks the signature. Returns the
 TBSCertificate structure, or 0 if decoding or verification failes.</p>
<p> Authorities is a mapping from (DER-encoded) names to a verifiers.</p>
</text><group><note/><text><p>This function allows self-signed certificates, and it doesn't
   check that names or extensions make sense.</p>
</text></group></doc>
<method name='verify_certificate'><source-position first-line='524' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='authorities'><type><mapping/></type></argument></arguments>
<returntype><object resolved='predef::Tools.X509.TBSCertificate'>TBSCertificate</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_certificate_chain' homogen-type='method'><doc><text><p>Decodes a certificate chain, checks the signatures. Verifies that the
 chain is unbroken, and that all certificates are in effect  
 (time-wise.) </p>
<p> Returns a mapping with the following contents, depending 
 on the verification of the certificate chain:</p>
<mapping><group><member><type><int/></type><index>"error_code"</index></member><text><p>Error describing type of verification failure, if verification failed.
     May be one of the following: <ref resolved='predef::Tools.X509.CERT_TOO_NEW'>CERT_TOO_NEW</ref>, <ref resolved='predef::Tools.X509.CERT_TOO_OLD'>CERT_TOO_OLD</ref>,
       <ref resolved='predef::Tools.X509.CERT_ROOT_UNTRUSTED'>CERT_ROOT_UNTRUSTED</ref>, <ref resolved='predef::Tools.X509.CERT_BAD_SIGNATURE'>CERT_BAD_SIGNATURE</ref>, <ref resolved='predef::Tools.X509.CERT_INVALID'>CERT_INVALID</ref>,
       <ref resolved='predef::Tools.X509.CERT_UNAUTHORIZED_CA'>CERT_UNAUTHORIZED_CA</ref> or <ref resolved='predef::Tools.X509.CERT_CHAIN_BROKEN'>CERT_CHAIN_BROKEN</ref></p>
</text></group><group><member><type><int/></type><index>"error_cert"</index></member><text><p>Index number of the certificate that caused the verification failure.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"self_signed"</index></member><text><p>Non-zero if the certificate is self-signed.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"verified"</index></member><text><p>Non-zero if the certificate is verified.</p>
</text></group><group><member><type><string/></type><index>"authority"</index></member><text><p><ref>Standards.ASN1.Sequence</ref> of the authority RDN that verified
     the chain.</p>
</text></group><group><member><type><string/></type><index>"cn"</index></member><text><p><ref>Standards.ASN1.Sequence</ref> of the common name RDN of the leaf
     certificate.</p>
</text></group></mapping>
</text><group><param name='cert_chain'/><text><p>An array of certificates, with the relative-root last. Each certificate should
   be a DER-encoded certificate.</p>
</text></group><group><param name='authorities'/><text><p>A mapping from (DER-encoded) names to verifiers.</p>
</text></group><group><param name='require_trust'/><text><p>Require that the certificate be traced to an authority, even if
   it is self signed.</p>
<p> See <ref resolved='predef::Standards.PKCS.Certificate.get_dn_string'>Standards.PKCS.Certificate.get_dn_string</ref> for converting the
 RDN to an X500 style string.</p>
</text></group></doc>
<method name='verify_certificate_chain'><source-position first-line='586' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Tools.pmod/X509.pmod'/>
<arguments><argument name='cert_chain'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='authorities'><type><mapping/></type></argument><argument name='require_trust'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
</module></module>

























<module name='SSL'>

<class name='sslfile'><doc><text><p>Interface similar to <ref resolved='predef::Stdio.File'>Stdio.File</ref>.</p>
<ul><group><item/><text><p>Handles blocking and nonblocking mode.</p>
</text></group><group><item/><text><p>Handles callback mode in an arbitrary backend (also in blocking
   mode).</p>
</text></group><group><item/><text><p>Read and write operations might each do both reading and
   writing. In callback mode that means that installing either a
   read or a write callback might install both internally. It also
   means that reading in one thread while writing in another
   doesn't work.</p>
</text></group><group><item/><text><p>Callback changing operations like <ref resolved='predef::SSL.sslfile.set_blocking'>set_blocking</ref> and
   <ref resolved='predef::SSL.sslfile.set_nonblocking'>set_nonblocking</ref> aren't atomic.</p>
</text></group><group><item/><text><p>Apart from the above, thread safety/atomicity characteristics
   are retained.</p>
</text></group><group><item/><text><p>Blocking characterstics are retained for all functions.</p>
</text></group><group><item/><text><p><ref resolved='predef::SSL.sslfile.is_open'>is_open</ref>, connection init (<ref resolved='predef::SSL.sslfile.create'>create</ref>) and close (<ref resolved='predef::SSL.sslfile.close'>close</ref>) can
   do both reading and writing.</p>
</text></group><group><item/><text><p><ref resolved='predef::SSL.sslfile.destroy'>destroy</ref> attempts to close the stream properly by sending the
   close packet, but since it can't do blocking I/O it's not
   certain that it will succeed. The stream should therefore always
   be closed with an explicit <ref resolved='predef::SSL.sslfile.close'>close</ref> call.</p>
</text></group><group><item/><text><p>Abrupt remote close without the proper handshake gets the errno
   <ref>System.EPIPE</ref>.</p>
</text></group><group><item/><text><p>Objects do not contain cyclic references, so they are closed and
   destructed timely when dropped.</p>
</text></group></ul>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a connection over <ref resolved='predef::SSL.sslfile.create.stream'>stream</ref>, which should be an open socket or
 pipe. <ref resolved='predef::SSL.sslfile.create.ctx'>ctx</ref> is the SSL context. If <ref resolved='predef::SSL.sslfile.create.is_client'>is_client</ref> is set then a
 client-side connection is started, server-side otherwise. If
 <ref resolved='predef::SSL.sslfile.create.is_blocking'>is_blocking</ref> is set then the stream is initially set in blocking
 mode, nonblocking mode otherwise.</p>
<p> The backend used by <ref resolved='predef::SSL.sslfile.create.stream'>stream</ref> is taken over and restored after the
 connection is closed (see <ref resolved='predef::SSL.sslfile.close'>close</ref>). The callbacks and id in
 <ref resolved='predef::SSL.sslfile.create.stream'>stream</ref> are overwritten.</p>
</text></doc>
<method name='create'><source-position first-line='442' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/><modifiers><static/></modifiers>
<arguments><argument name='stream'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument><argument name='ctx'><type><object resolved='predef::SSL.context'>SSL.context</object></type></argument><argument name='is_client'><type><or><int/><void/></or></type></argument><argument name='is_blocking'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_peer_certificate_info' homogen-type='method'><doc><text><p>returns peer certificate information, if any.</p>
</text></doc>
<method name='get_peer_certificate_info'><source-position first-line='498' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_peer_certificates' homogen-type='method'><doc><text><p>returns the peer certificate chain, if any.</p>
</text></doc>
<method name='get_peer_certificates'><source-position first-line='504' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Close the connection. Both the read and write ends are always
 closed - the argument <ref resolved='predef::SSL.sslfile.close.how'>how</ref> is only for <ref resolved='predef::Stdio.File'>Stdio.File</ref>
 compatibility and must be either <expr>"rw"</expr> or <expr>0</expr>.</p>
<p> If <ref resolved='predef::SSL.sslfile.close.clean_close'>clean_close</ref> is set then close messages are exchanged to shut
 down the SSL connection but not the underlying stream. It may then
 continue to be used for other communication afterwards. The
 default is to send a close message and then close the stream
 without waiting for a response.</p>
<p> I/O errors are normally thrown, but that can be turned off with
 <ref resolved='predef::SSL.sslfile.close.dont_throw'>dont_throw</ref>. In that case errno is set instead and 0 is
 returned. 1 is always returned otherwise. It's not an error to
 close an already closed connection.</p>
</text><group><note/><text><p>In nonblocking mode the stream might not be closed right away and
 the backend might be used for a while afterwards. This means that
 if there's an I/O problem it might not be signalled immediately by
 <ref resolved='predef::SSL.sslfile.close'>close</ref>.</p>
</text></group><group><note/><text><p>I/O errors from both reading and writing might occur in blocking
 mode.</p>
</text></group><group><note/><text><p>If a clean close is requested and data following the close message
 is received at the same time, then this object will read it and
 has no way to undo that. That data can be retrieved with <ref resolved='predef::SSL.sslfile.read'>read</ref>
 afterwards.</p>
</text></group></doc>
<method name='close'><source-position first-line='509' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='how'><type><or><void/><string/></or></type></argument><argument name='clean_close'><type><or><void/><int/></or></type></argument><argument name='dont_throw'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='shutdown' homogen-type='method'><doc><text><p>Shut down the SSL connection without sending any more packets. The
 underlying stream is returned if the connection isn't shut down
 already and if a nonclean close hasn't been requested.</p>
</text></doc>
<method name='shutdown'><source-position first-line='616' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Try to close down the connection properly since it's customary to
 close files just by dropping them. No guarantee can be made that
 the close packet gets sent successfully though, because we can't
 risk blocking I/O here. You should call <ref resolved='predef::SSL.sslfile.close'>close</ref> explicitly.</p>
</text></doc>
<method name='destroy'><source-position first-line='690' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Read some (decrypted) data from the connection. Works like
 <ref resolved='predef::Stdio.File.read'>Stdio.File.read</ref>.</p>
</text><group><note/><text><p>I/O errors from both reading and writing might occur in blocking
 mode.</p>
</text></group></doc>
<method name='read'><source-position first-line='716' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='length'><type><or><void/><int/></or></type></argument><argument name='not_all'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Write some (unencrypted) data to the connection. Works like
 <ref resolved='predef::Stdio.File.write'>Stdio.File.write</ref> except that this function often buffers some data
 internally, so there's no guarantee that all the consumed data has
 been successfully written to the stream in nonblocking mode. It
 keeps the internal buffering to a minimum, however.</p>
</text><group><note/><text><p>This function returns zero if attempts are made to write data
 during the handshake phase and the mode is nonblocking.</p>
</text></group><group><note/><text><p>I/O errors from both reading and writing might occur in blocking
 mode.</p>
</text></group></doc>
<method name='write'><source-position first-line='776' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='data'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='renegotiate' homogen-type='method'><doc><text><p>Renegotiate the connection by starting a new handshake. Note that
 the accept callback will be called again when the handshake is
 finished.</p>
<p> Returns zero if there are any I/O errors. <ref resolved='predef::SSL.sslfile.errno'>errno()</ref> will give the
 details.</p>
</text><group><note/><text><p>The read buffer is not cleared - a <expr>read()</expr> afterwards will
 return data from both before and after the renegotiation.</p>
</text></group><group><bugs/><text><p>Data in the write queue in nonblocking mode is not properly
 written before resetting the connection. Do a blocking
 <expr>write("")</expr> first to avoid problems with that.</p>
</text></group></doc>
<method name='renegotiate'><source-position first-line='869' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking' homogen-type='method'><doc><text><p>Set the stream in nonblocking mode, installing the specified
 callbacks. The alert callback isn't touched.</p>
</text><group><note/><text><p>Prior to version 7.5.12, this function didn't set the accept
 callback.</p>
</text></group><group><bugs/><text><p><ref resolved='predef::SSL.sslfile.set_nonblocking.read_oob'>read_oob</ref> and <ref resolved='predef::SSL.sslfile.set_nonblocking.write_oob'>write_oob</ref> are currently ignored.</p>
</text></group></doc>
<method name='set_nonblocking'><source-position first-line='919' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='read'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><argtype><or><void/><string/></or></argtype><returntype><int/></returntype></function></or></type></argument><argument name='write'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></or></type></argument><argument name='close'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></or></type></argument><argument name='read_oob'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></or></type></argument><argument name='write_oob'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></or></type></argument><argument name='accept'><type><or><void/><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_nonblocking_keep_callbacks' homogen-type='method'><doc><text><p>Set nonblocking mode like <ref resolved='predef::SSL.sslfile.set_nonblocking'>set_nonblocking</ref>, but don't alter any
 callbacks.</p>
</text></doc>
<method name='set_nonblocking_keep_callbacks'><source-position first-line='960' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking' homogen-type='method'><doc><text><p>Set the stream in blocking mode. All but the alert callback are
 zapped.</p>
</text><group><note/><text><p>There might be some data still waiting to be written to the
 stream. That will be written in the next blocking call, regardless
 what it is.</p>
</text></group><group><note/><text><p>This function doesn't solve the case when the connection is used
 nonblocking in some backend thread and another thread switches it
 to blocking and starts using it. To solve that, put a call out in
 the backend from the other thread that switches it to blocking,
 and then wait until that call out has run.</p>
</text></group><group><note/><text><p>Prior to version 7.5.12, this function didn't clear the accept
 callback.</p>
</text></group></doc>
<method name='set_blocking'><source-position first-line='982' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_blocking_keep_callbacks' homogen-type='method'><doc><text><p>Set blocking mode like <ref resolved='predef::SSL.sslfile.set_blocking'>set_blocking</ref>, but don't alter any
 callbacks.</p>
</text></doc>
<method name='set_blocking_keep_callbacks'><source-position first-line='1024' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc/>
<method name='errno'><source-position first-line='1042' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_alert_callback' homogen-type='method'><doc><text><p>Install a function that will be called when an alert packet is
 received. It doesn't affect the callback mode - it's called both
 from backends and from within normal function calls like <ref resolved='predef::SSL.sslfile.read'>read</ref>
 and <ref resolved='predef::SSL.sslfile.write'>write</ref>.</p>
</text><group><note/><text><p>This object is part of a cyclic reference whenever this is set,
 just like setting any other callback.</p>
</text></group></doc>
<method name='set_alert_callback'><source-position first-line='1052' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='alert'><type><function><argtype><object resolved='predef::SSL.sslfile.set_alert_callback'/></argtype><argtype><or><int/><object resolved='predef::SSL.sslfile.set_alert_callback'/></or></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_alert_callback' homogen-type='method'><doc/>
<method name='query_alert_callback'><source-position first-line='1077' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><function><argtype><object resolved='predef::SSL.sslfile.query_alert_callback'/></argtype><argtype><or><int/><object resolved='predef::SSL.sslfile.query_alert_callback'/></or></argtype><argtype><string/></argtype><returntype><void/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_accept_callback' homogen-type='method'><doc><text><p>Install a function that will be called when the handshake is
 finished and the connection is ready for use.</p>
<p> The callback function will be called with the sslfile object
 and the additional id arguments (set with <ref resolved='predef::SSL.sslfile.set_id'>set_id</ref>).</p>
</text><group><note/><text><p>Like the read, write and close callbacks, installing this callback
 implies callback mode, even after the handshake is done.</p>
</text></group></doc>
<method name='set_accept_callback'><source-position first-line='1083' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='accept'><type><function><argtype><or><void/><object resolved='predef::SSL.sslfile.set_accept_callback'/></or></argtype><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_accept_callback' homogen-type='method'><doc/>
<method name='query_accept_callback'><source-position first-line='1105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><function><argtype><or><void/><object resolved='predef::SSL.sslfile.query_accept_callback'/></or></argtype><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_read_callback' homogen-type='method'><doc><text><p>Install a function to be called when data is available.</p>
</text></doc>
<method name='set_read_callback'><source-position first-line='1111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='read'><type><function><argtype><or><void/><mixed/></or></argtype><argtype><or><void/><string/></or></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_read_callback' homogen-type='method'><doc/>
<method name='query_read_callback'><source-position first-line='1125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><function><argtype><or><void/><mixed/></or></argtype><argtype><or><void/><string/></or></argtype><returntype><int/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_write_callback' homogen-type='method'><doc><text><p>Install a function to be called when data can be written.</p>
</text></doc>
<method name='set_write_callback'><source-position first-line='1131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='write'><type><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_write_callback' homogen-type='method'><doc/>
<method name='query_write_callback'><source-position first-line='1145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_close_callback' homogen-type='method'><doc><text><p>Install a function to be called when the connection is closed,
 either normally or due to an error (use <ref resolved='predef::SSL.sslfile.errno'>errno</ref> to retrieve it).</p>
</text></doc>
<method name='set_close_callback'><source-position first-line='1151' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='close'><type><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_close_callback' homogen-type='method'><doc/>
<method name='query_close_callback'><source-position first-line='1166' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><function><argtype><or><void/><mixed/></or></argtype><returntype><int/></returntype></function></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_id' homogen-type='method'><doc/>
<method name='set_id'><source-position first-line='1172' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='id'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_id' homogen-type='method'><doc/>
<method name='query_id'><source-position first-line='1180' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_backend' homogen-type='method'><doc><text><p>Set the backend used for the file callbacks.</p>
</text></doc>
<method name='set_backend'><source-position first-line='1186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='backend'><type><object resolved='predef::Pike.Backend'>Pike.Backend</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_backend' homogen-type='method'><doc><text><p>Return the backend used for the file callbacks.</p>
</text></doc>
<method name='query_backend'><source-position first-line='1206' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><object resolved='predef::Pike.Backend'>Pike.Backend</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_address' homogen-type='method'><doc/>
<method name='query_address'><source-position first-line='1213' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments><argument name='arg'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_open' homogen-type='method'><doc><text><p>Return nonzero if the stream currently is open, zero otherwise.
 This function does nonblocking I/O to check for a close packet in
 the input buffer.</p>
</text></doc>
<method name='is_open'><source-position first-line='1220' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_stream' homogen-type='method'><doc><text><p>Return the underlying stream.</p>
</text><group><note/><text><p>Avoid any temptation to do
 <expr>destruct(sslfile_obj-&gt;query_stream())</expr>. That almost
 certainly creates more problems than it solves.</p>
</text></group></doc>
<method name='query_stream'><source-position first-line='1248' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_connection' homogen-type='method'><doc><text><p>Return the SSL connection object.</p>
</text></doc>
<method name='query_connection'><source-position first-line='1261' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><object resolved='predef::SSL.connection'>SSL.connection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_context' homogen-type='method'><doc><text><p>Return the SSL context object.</p>
</text></doc>
<method name='query_context'><source-position first-line='1269' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslfile.pike'/>
<arguments/>
<returntype><object resolved='predef::SSL.context'>SSL.context</object></returntype>
</method>
</docgroup>
</class>

<class name='session'><doc><text><p>The most important information in a session object is a
 choice of encryption algorithms and a "master secret" created by
 keyexchange with a client. Each connection can either do a full key
 exchange to established a new session, or reuse a previously
 established session. That is why we have the session abstraction and
 the session cache. Each session is used by one or more connections, in
 sequence or simultaneously.</p>
<p> It is also possible to change to a new session in the middle of a
 connection.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='identity'><doc><text><p>Identifies the session to the server</p>
</text></doc>
<variable name='identity'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='compression_algorithm'><doc><text><p>Always COMPRESSION_null.</p>
</text></doc>
<variable name='compression_algorithm'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cipher_suite'><doc><text><p>Constant defining a choice of keyexchange, encryption and mac
 algorithm.</p>
</text></doc>
<variable name='cipher_suite'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cipher_spec'><doc><text><p>Information about the encryption method derived from the
 cipher_suite.</p>
</text></doc>
<variable name='cipher_spec'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><object resolved='predef::SSL.Cipher.CipherSpec'>.Cipher.CipherSpec</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='ke_method'><doc><text><p>Key exchange method, also derived from the cipher_suite.</p>
</text></doc>
<variable name='ke_method'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='master_secret'><doc><text><p>48 byte secret shared between the client and the server. Used for
 deriving the actual keys.</p>
</text></doc>
<variable name='master_secret'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cert_data'><doc><text><p>information about the certificate in use by the peer, such as issuing authority, and verification status.</p>
</text></doc>
<variable name='cert_data'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='peer_certificate_chain'><doc/>
<variable name='peer_certificate_chain'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='set_cipher_suite' homogen-type='method'><doc><text><p>Sets the proper authentication method and cipher specification
 for the given cipher <ref resolved='predef::SSL.session.set_cipher_suite.suite'>suite</ref> and <ref>verison</ref>.</p>
</text></doc>
<method name='set_cipher_suite'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/>
<arguments><argument name='suite'><type><int/></type></argument><argument name='version'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_compression_method' homogen-type='method'><doc><text><p>Sets the compression method. Currently only <ref resolved='predef::SSL.Constants.CompressionType.COMPRESSION_null'>COMPRESSION_null</ref> is
 supported.</p>
</text></doc>
<method name='set_compression_method'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/>
<arguments><argument name='compr'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='generate_keys' homogen-type='method'><doc><text><p>Generates keys appropriate for the SSL version given in <ref resolved='predef::SSL.session.generate_keys.version'>version</ref>,
 based on the <ref resolved='predef::SSL.session.generate_keys.client_random'>client_random</ref> and <ref resolved='predef::SSL.session.generate_keys.server_random'>server_random</ref>.</p>
</text><group><returns/><text><array><group><elem><type><string/></type><index>0</index></elem><text><p>Client write MAC secret</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>Server write MAC secret</p>
</text></group><group><elem><type><string/></type><index>2</index></elem><text><p>Client write key</p>
</text></group><group><elem><type><string/></type><index>3</index></elem><text><p>Server write key</p>
</text></group><group><elem><type><string/></type><index>4</index></elem><text><p>Client write IV</p>
</text></group><group><elem><type><string/></type><index>5</index></elem><text><p>Server write IV</p>
</text></group></array>
</text></group></doc>
<method name='generate_keys'><source-position first-line='151' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/>
<arguments><argument name='client_random'><type><string/></type></argument><argument name='server_random'><type><string/></type></argument><argument name='version'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_server_states' homogen-type='method'><doc><text><p>Computes a new set of encryption states, derived from the
 client_random, server_random and master_secret strings.</p>
</text><group><returns/><text><array><group><elem><type><object resolved='predef::SSL.state'>SSL.state</object></type><index>read_state</index></elem><text><p>Read state</p>
</text></group><group><elem><type><object resolved='predef::SSL.state'>SSL.state</object></type><index>write_state</index></elem><text><p>Write state</p>
</text></group></array>
</text></group></doc>
<method name='new_server_states'><source-position first-line='255' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/>
<arguments><argument name='client_random'><type><string/></type></argument><argument name='server_random'><type><string/></type></argument><argument name='version'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::SSL.state'>.state</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_client_states' homogen-type='method'><doc><text><p>Computes a new set of encryption states, derived from the
 client_random, server_random and master_secret strings.</p>
</text><group><returns/><text><array><group><elem><type><object resolved='predef::SSL.state'>SSL.state</object></type><index>read_state</index></elem><text><p>Read state</p>
</text></group><group><elem><type><object resolved='predef::SSL.state'>SSL.state</object></type><index>write_state</index></elem><text><p>Write state</p>
</text></group></array>
</text></group></doc>
<method name='new_client_states'><source-position first-line='297' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/session.pike'/>
<arguments><argument name='client_random'><type><string/></type></argument><argument name='server_random'><type><string/></type></argument><argument name='version'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::SSL.state'>.state</object></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='context'><doc><text><p>Keeps the state that is shared by all SSL-connections for
 one server (or one port). It includes policy configuration, a server
 certificate, the server's private key(s), etc. It also includes the
 session cache.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rsa'><doc><text><p>The server's private key</p>
</text></doc>
<variable name='rsa'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='auth_level'><doc><text><p>Policy for client authentication. One of <ref>SSL.Constants.AUTHLEVEL_none</ref>,
 <ref>SSL.Constants.AUTHLEVEL_ask</ref> and <ref>SSL.Constants.AUTHLEVEL_require</ref>.</p>
</text></doc>
<variable name='auth_level'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='set_authorities' homogen-type='method'><doc><text><p>Array of authorities that are accepted for client certificates.
 The server will only accept connections from clients whose certificate
 is signed by one of these authorities. The string is a DER-encoded certificate,
 which typically must be decoded using <ref resolved='predef::MIME.decode_base64'>MIME.decode_base64</ref> or 
 <ref resolved='predef::Tools.PEM.Msg'>Tools.PEM.Msg</ref> first.</p>
<p> Note that it is presumed that the issuer will also be trusted by the server. See 
 <ref>trusted_issuers</ref> for details on specifying trusted issuers.</p>
<p> If empty, the server will accept any client certificate whose issuer is trusted by the 
 server.</p>
</text></doc>
<method name='set_authorities'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments><argument name='a'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='require_trust'><doc><text><p>When set, require the chain to be known, even if the root is self signed.</p>
<p> Note that if set, and certificates are set to be verified, trusted issuers must be
 provided, or no connections will be accepted.</p>
</text></doc>
<variable name='require_trust'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='get_authorities' homogen-type='method'><doc><text><p>Get the list of allowed authorities. See <ref resolved='predef::SSL.context.set_authorities'>set_authorities</ref>.</p>
</text></doc>
<method name='get_authorities'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_trusted_issuers' homogen-type='method'><doc><text><p>Sets the list of trusted certificate issuers.</p>
</text><group><param name='a'/><text><p>An array of certificate chains whose root is self signed (ie a root issuer), and whose
 final certificate is an issuer that we trust. The root of the certificate should be 
 first certificate in the chain. The string is a DER-encoded 
 certificate, which typically must be decoded using 
 <ref resolved='predef::MIME.decode_base64'>MIME.decode_base64</ref> or <ref resolved='predef::Tools.PEM.Msg'>Tools.PEM.Msg</ref> first.</p>
<p> If this array is left empty, and the context is set to verify certificates,
 a certificate chain must have a root that is self signed.</p>
</text></group></doc>
<method name='set_trusted_issuers'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments><argument name='i'><type><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_trusted_issuers' homogen-type='method'><doc><text><p>Get the list of trusted issuers. See <ref resolved='predef::SSL.context.set_trusted_issuers'>set_trusted_issuers</ref>.</p>
</text></doc>
<method name='get_trusted_issuers'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments/>
<returntype><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='verify_certificates'><doc><text><p>Determines whether certificates presented by the peer are verified, or 
 just accepted as being valid.</p>
</text></doc>
<variable name='verify_certificates'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Temporary, non-certified, private keys, used with a
 server_key_exchange message. The rules are as follows:</p>
<p> If the negotiated cipher_suite has the "exportable" property, and
 short_rsa is not zero, send a server_key_exchange message with the
 (public part of) the short_rsa key.</p>
<p> If the negotiated cipher_suite does not have the exportable
 property, and long_rsa is not zero, send a server_key_exchange
 message with the (public part of) the long_rsa key.</p>
<p> Otherwise, dont send any server_key_exchange message.</p>
</text></doc>
<variable name='long_rsa'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></variable>
<variable name='short_rsa'><source-position first-line='101' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><object resolved='predef::Crypto.RSA'>Crypto.RSA</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='dsa'><doc><text><p>Servers dsa key.</p>
</text></doc>
<variable name='dsa'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><object resolved='predef::Crypto.DSA'>Crypto.DSA</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='dh_params'><doc><text><p>Parameters for dh keyexchange.</p>
</text></doc>
<variable name='dh_params'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><object resolved='predef::SSL.Cipher.DHParameters'>.Cipher.DHParameters</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='random'><doc><text><p>Used to generate random cookies for the hello-message. If we use
 the RSA keyexchange method, and this is a server, this random
 number generator is not used for generating the master_secret.</p>
</text></doc>
<variable name='random'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><function><argtype><int/></argtype><returntype><string/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='certificates'><doc><text><p>The server's certificate, or a chain of X509.v3 certificates, with the
 server's certificate first and root certificate last.</p>
</text></doc>
<variable name='certificates'><source-position first-line='116' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='preferred_auth_methods'><doc><text><p>For client authentication. Used only if auth_level is AUTH_ask or
 AUTH_require.</p>
</text></doc>
<variable name='preferred_auth_methods'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='preferred_suites'><doc><text><p>Cipher suites we want the server to support, best first.</p>
</text></doc>
<variable name='preferred_suites'><source-position first-line='124' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='rsa_mode' homogen-type='method'><doc><text><p>Set <ref resolved='predef::SSL.context.preferred_suites'>preferred_suites</ref> to RSA based methods.</p>
</text></doc>
<method name='rsa_mode'><source-position first-line='127' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='dhe_dss_mode' homogen-type='method'><doc><text><p>Set <ref resolved='predef::SSL.context.preferred_suites'>preferred_suites</ref> to DSS based methods.</p>
</text></doc>
<method name='dhe_dss_mode'><source-position first-line='147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='preferred_compressors'><doc><text><p>Always ({ COMPRESSION_null })</p>
</text></doc>
<variable name='preferred_compressors'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='use_cache'><doc><text><p>Non-zero to enable cahing of sessions</p>
</text></doc>
<variable name='use_cache'><source-position first-line='166' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='session_lifetime'><doc><text><p>Sessions are removed from the cache when they are older than this
 limit (in seconds). Sessions are also removed from the cache if a
 connection using the session dies unexpectedly.</p>
</text></doc>
<variable name='session_lifetime'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='max_sessions'><doc><text><p>Maximum number of sessions to keep in the cache.</p>
</text></doc>
<variable name='max_sessions'><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='lookup_session' homogen-type='method'><doc><text><p>Lookup a session identifier in the cache. Returns the
 corresponding session, or zero if it is not found or caching is
 disabled.</p>
</text></doc>
<method name='lookup_session'><source-position first-line='201' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments><argument name='id'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::SSL.session'>.session</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_session' homogen-type='method'><doc><text><p>Create a new session.</p>
</text></doc>
<method name='new_session'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments/>
<returntype><object resolved='predef::SSL.session'>.session</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='record_session' homogen-type='method'><doc><text><p>Add a session to the cache (if caching is enabled).</p>
</text></doc>
<method name='record_session'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments><argument name='s'><type><object resolved='predef::SSL.session'>.session</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='purge_session' homogen-type='method'><doc><text><p>Remove a session from the cache.</p>
</text></doc>
<method name='purge_session'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/context.pike'/>
<arguments><argument name='s'><type><object resolved='predef::SSL.context.purge_session'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='Cipher'><doc><text><p>Encryption and MAC algorithms used in SSL.</p>
</text></doc>

<class name='CipherAlgorithm'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>Cipher algorithm interface.</p>
</text></doc><docgroup homogen-type='method'><doc><text><p>Set the key used for encryption/decryption, and
 enter encryption mode.</p>
</text></doc>
<method name='set_encrypt_key'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument><type><string/></type></argument></arguments>
<returntype><object resolved='predef::SSL.Cipher.CipherAlgorithm'>this_program</object></returntype>
</method>
<method name='set_decrypt_key'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument><type><string/></type></argument></arguments>
<returntype><object resolved='predef::SSL.Cipher.CipherAlgorithm'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='block_size' homogen-type='method'><doc><text><p>Return the block size for this crypto.</p>
</text></doc>
<method name='block_size'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
</class>

<class name='MACAlgorithm'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>Message Authentication Code interface.</p>
</text></doc></class>

<class name='CipherSpec'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>Cipher specification.</p>
</text></doc></class>

<class name='MACsha'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>MAC using SHA.</p>
</text></doc><docgroup homogen-name='hash_raw' homogen-type='method'><doc/>
<method name='hash_raw'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='hash' homogen-type='method'><doc/>
<method name='hash'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='packet'><type><object resolved='predef::SSL.Cipher.MACsha.hash'/></type></argument><argument name='seq_num'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='hash_master' homogen-type='method'><doc/>
<method name='hash_master'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='s'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='s'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='MACmd5'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>MAC using MD5.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='MACsha'><doc>
</doc>
<inherit name='MACsha'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><classname resolved='predef::SSL.Cipher.MACsha'>MACsha</classname></inherit>
</docgroup>
</class>

<class name='MAChmac_sha'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><docgroup homogen-name='hash' homogen-type='method'><doc/>
<method name='hash'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='packet'><type><object resolved='predef::SSL.Cipher.MAChmac_sha.hash'/></type></argument><argument name='seq_num'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='141' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='s'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='MAChmac_md5'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><docgroup homogen-type='inherit' homogen-name='MAChmac_sha'><doc>
</doc>
<inherit name='MAChmac_sha'><source-position first-line='149' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><classname resolved='predef::SSL.Cipher.MAChmac_sha'>MAChmac_sha</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='152' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='s'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='DES'><source-position first-line='188' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='190' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><classname resolved='predef::Crypto.CBC'>Crypto.CBC</classname></inherit>
</docgroup>
</class>

<class name='DES3'><source-position first-line='208' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='210' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><classname resolved='predef::Crypto.CBC'>Crypto.CBC</classname></inherit>
</docgroup>
</class>

<class name='DHParameters'><source-position first-line='280' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><doc><text><p>Diffie-Hellman parameters.</p>
</text></doc><docgroup homogen-type='variable'><doc/>
<variable name='p'><source-position first-line='282' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
<variable name='g'><source-position first-line='282' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
<variable name='order'><source-position first-line='282' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-name='prf' homogen-type='method'><doc/>
<method name='prf'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='secret'><type><string/></type></argument><argument name='label'><type><string/></type></argument><argument name='seed'><type><string/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_sign' homogen-type='method'><doc/>
<method name='rsa_sign'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='context'><type><object resolved='predef::SSL.Cipher.rsa_sign'/></type></argument><argument name='cookie'><type><string/></type></argument><argument name='struct'><type><object resolved='predef::ADT.struct'>ADT.struct</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.struct'>ADT.struct</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsa_verify' homogen-type='method'><doc/>
<method name='rsa_verify'><source-position first-line='253' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='context'><type><object resolved='predef::SSL.Cipher.rsa_verify'/></type></argument><argument name='cookie'><type><string/></type></argument><argument name='struct'><type><object resolved='predef::ADT.struct'>ADT.struct</object></type></argument><argument name='signature'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='dsa_sign' homogen-type='method'><doc/>
<method name='dsa_sign'><source-position first-line='265' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='context'><type><object resolved='predef::SSL.Cipher.dsa_sign'/></type></argument><argument name='cookie'><type><string/></type></argument><argument name='struct'><type><object resolved='predef::ADT.struct'>ADT.struct</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.struct'>ADT.struct</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='anon_sign' homogen-type='method'><doc/>
<method name='anon_sign'><source-position first-line='274' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Cipher.pmod'/>
<arguments><argument name='context'><type><object resolved='predef::SSL.Cipher.anon_sign'/></type></argument><argument name='cookie'><type><string/></type></argument><argument name='struct'><type><object resolved='predef::ADT.struct'>ADT.struct</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.struct'>ADT.struct</object></returntype>
</method>
</docgroup>
</module>

<module name='Constants'><doc><text><p>Protocol constants</p>
</text></doc><enum name='KeyExchangeType'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Constants.pmod'/><doc><text><p>Key exchange methods.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='KE_rsa'><doc><text><p>Rivest-Shamir-Adelman</p>
</text></doc>
<constant name='KE_rsa'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Constants.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='KE_dh'><doc><text><p>Diffie-Hellman</p>
</text></doc>
<constant name='KE_dh'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Constants.pmod'/></constant>
</docgroup>
</enum><enum name='CompressionType'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Constants.pmod'/><doc><text><p>Compression methods.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='COMPRESSION_null'><doc><text><p>No compression.</p>
</text></doc>
<constant name='COMPRESSION_null'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/Constants.pmod'/></constant>
</docgroup>
</enum></module>

<class name='connection'><doc><text><p>SSL packet layer.
 SSL.connection inherits SSL.handshake, and in addition to the state in
 the handshake super class, it contains the current read and write
 states, packet queues. This object is responsible for receiving and
 sending packets, processing handshake packets, and providing a clear
 text packages for some application.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='handshake'><doc>
</doc>
<inherit name='handshake'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><classname resolved='predef::SSL.handshake'>.handshake</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='alert'><doc>
</doc>
<inherit name='alert'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><classname resolved='predef::ADT.Queue'>ADT.Queue</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='urgent'><doc>
</doc>
<inherit name='urgent'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><classname resolved='predef::ADT.Queue'>ADT.Queue</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='application'><doc>
</doc>
<inherit name='application'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><classname resolved='predef::ADT.Queue'>ADT.Queue</classname></inherit>
</docgroup>
<docgroup homogen-name='set_alert_callback' homogen-type='method'><doc><text><p>Called with alert object, sequence number of bad packet,
 and raw data as arguments, if a bad packet is received.</p>
<p> Can be used to support a fallback redirect https-&gt;http.</p>
</text></doc>
<method name='set_alert_callback'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::SSL.connection.set_alert_callback'/></argtype><argtype><or><int/><object resolved='predef::SSL.connection.set_alert_callback'/></or></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='recv_packet' homogen-type='method'><doc><text><p>Low-level receive handler. Returns a packet, an alert, or zero if
 more data is needed to get a complete packet.</p>
</text></doc>
<method name='recv_packet'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/><modifiers><static/></modifiers>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::SSL.connection.recv_packet'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_packet' homogen-type='method'><doc><text><p>Queues a packet for write. Handshake and and change cipher
 must use the same priority, so must application data and
 close_notifies.</p>
</text></doc>
<method name='send_packet'><source-position first-line='97' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments><argument name='packet'><type><object resolved='predef::SSL.connection.send_packet'/></type></argument><argument name='priority'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_write' homogen-type='method'><doc><text><p>Extracts data from the packet queues. Returns a string of data
 to be written, "" if there are no pending packets, 1 of the
 connection is being closed politely, and -1 if the connection
 died unexpectedly.</p>
<p> This function is intended to be called from an i/o write callback.</p>
</text></doc>
<method name='to_write'><source-position first-line='150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments/>
<returntype><or><string/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_close' homogen-type='method'><doc><text><p>Initiate close.</p>
</text></doc>
<method name='send_close'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_streaming_data' homogen-type='method'><doc><text><p>Send an application data packet. If the data block is too large
 then as much as possible of the beginning of it is sent. The size
 of the sent data is returned.</p>
</text></doc>
<method name='send_streaming_data'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='got_data' homogen-type='method'><doc><text><p>Main receive handler. Returns a string of received application
 data, or 1 if a close was received, or -1 if an error occured.</p>
<p> This function is intended to be called from an i/o read callback.</p>
</text></doc>
<method name='got_data'><source-position first-line='268' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/connection.pike'/>
<arguments><argument name='s'><type><or><string/><int/></or></type></argument></arguments>
<returntype><or><string/><int/></or></returntype>
</method>
</docgroup>
</class>

<class name='sslport'><doc><text><p>Interface similar to Stdio.Port.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='socket'><doc>
</doc>
<inherit name='socket'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslport.pike'/><classname resolved='predef::Stdio.Port'>Stdio.Port</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='context'><doc>
</doc>
<inherit name='context'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslport.pike'/><classname resolved='predef::SSL.context'>.context</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='accept_queue'><doc>
</doc>
<inherit name='accept_queue'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/sslport.pike'/><classname resolved='predef::ADT.Queue'>ADT.Queue</classname></inherit>
</docgroup>
</class>

<class name='state'><doc><text><p>A connection switches from one set of state objects to another, one or
 more times during its lifetime. Each state object handles a one-way
 stream of packets, and operates in either decryption or encryption
 mode.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='session'><doc><text><p>Information about the used algorithms.</p>
</text></doc>
<variable name='session'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/><type><object resolved='predef::SSL.state'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='mac'><doc><text><p>Message Authentication Code</p>
</text></doc>
<variable name='mac'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/><type><object resolved='predef::SSL.Cipher.MACAlgorithm'>.Cipher.MACAlgorithm</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='crypt'><doc><text><p>Encryption or decryption object.</p>
</text></doc>
<variable name='crypt'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/><type><object resolved='predef::SSL.Cipher.CipherAlgorithm'>.Cipher.CipherAlgorithm</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='seq_num'><doc><text><p>64-bit sequence number.</p>
</text></doc>
<variable name='seq_num'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></variable>
</docgroup>
<docgroup homogen-name='decrypt_packet' homogen-type='method'><doc><text><p>Destructively decrypts a packet (including inflating and MAC-verification,
 if needed). On success, returns the decrypted packet. On failure,
 returns an alert packet. These cases are distinguished by looking
 at the is_alert attribute of the returned packet.</p>
</text></doc>
<method name='decrypt_packet'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/>
<arguments><argument name='packet'><type><object resolved='predef::SSL.packet'>.packet</object></type></argument><argument name='version'><type><int/></type></argument></arguments>
<returntype><or><object>Alert</object><object resolved='predef::SSL.packet'>.packet</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='encrypt_packet' homogen-type='method'><doc><text><p>Encrypts a packet (including deflating and MAC-generation).</p>
</text></doc>
<method name='encrypt_packet'><source-position first-line='139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/state.pike'/>
<arguments><argument name='packet'><type><object resolved='predef::SSL.packet'>.packet</object></type></argument><argument name='version'><type><int/></type></argument></arguments>
<returntype><or><object>Alert</object><object resolved='predef::SSL.packet'>.packet</object></or></returntype>
</method>
</docgroup>
</class>

<class name='alert'><doc><text><p>Alert package.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/alert.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='packet'><doc>
</doc>
<inherit name='packet'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/alert.pike'/><classname resolved='predef::SSL.packet'>.packet</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='level'><type><int/></type></argument><argument name='description'><type><int/></type></argument><argument name='version'><type><int/></type></argument><argument name='message'><type><or><string/><void/></or></type></argument><argument name='trace'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='handshake'><doc><text><p>SSL.handshake keeps the state relevant for SSL handshaking. This
 includes a pointer to a context object (which doesn't change), various
 buffers, a pointer to a session object (reuse or created as
 appropriate), and pending read and write states being negotiated.</p>
<p> Each connection will have two sets or read and write state: The
 current read and write states used for encryption, and pending read
 and write states to be taken into use when the current keyexchange
 handshake is finished.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/handshake.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Random cookies, sent and received with the hello-messages.</p>
</text></doc>
<variable name='client_random'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/handshake.pike'/><type><string/></type></variable>
<variable name='server_random'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/handshake.pike'/><type><string/></type></variable>
</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
 for supporting SSLv2 hello messages).</p>
<p> This function returns 0 if hadshake is in progress, 1 if handshake
 is finished, and -1 if a fatal error occured. It uses the
 send_packet() function to trasnmit packets.</p>
</text></doc>
<method name='handle_handshake'><source-position first-line='622' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/handshake.pike'/>
<arguments><argument name='type'><type><int/></type></argument><argument name='data'><type><string/></type></argument><argument name='raw'><type><string/></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>

<class name='packet'><doc><text><p>SSL Record Layer. Handle formatting and parsing of packets.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/packet.pike'/><classname resolved='predef::SSL.Constants'>.Constants</classname></import>
</docgroup>
</class>

<class name='https'><doc><text><p>Dummy HTTPS server</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/https.pike'/><classname resolved='predef::Stdio'>Stdio</classname></import>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='sslport'><doc>
</doc>
<inherit name='sslport'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/SSL.pmod/https.pike'/><classname resolved='predef::SSL.sslport'>SSL.sslport</classname></inherit>
</docgroup>
</class></module>























<module name='Filesystem'>

<class name='System'><doc><text><p>Implements an abstraction of the normal filesystem.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Base'><doc>
</doc>
<inherit name='Base'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/System.pike'/><classname resolved='predef::Filesystem.Base'>Filesystem.Base</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Instanciate a new object representing the filesystem.</p>
</text><group><param name='directory'/><text><p>The directory (in the real filesystem) that should become
 the root of the filesystemobject.</p>
</text></group><group><param name='root'/><text><p>Internal</p>
</text></group><group><param name='fast'/><text><p>Internal</p>
</text></group><group><param name='parent'/><text><p>Internal</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='directory'><type><or><void/><string/></or></type></argument><argument name='root'><type><or><void/><string/></or></type></argument><argument name='fast'><type><or><void/><int/></or></type></argument><argument name='parent'><type><or><void/><object resolved='predef::Filesystem.Base'>Filesystem.Base</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='Tar'><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Filesystem which can be used to mount a Tar file.</p>
</text><group><param name='filename'/><text><p>The tar file to mount.</p>
</text></group><group><param name='parent'/><text><p>The parent filesystem. If non is given, the normal system
 filesystem is assumed. This allows mounting a TAR-file within
 a tarfile.</p>
</text></group><group><param name='file'/><text><p>If specified, this should be an open file descriptor. This object
 could e.g. be a <ref resolved='predef::Stdio.File'>Stdio.File</ref>, <ref resolved='predef::Gz.File'>Gz.File</ref> or <ref resolved='predef::Bz2.File'>Bz2.File</ref> object.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='parent'><type><or><void/><object resolved='predef::Filesystem.Base'>Filesystem.Base</object></or></type></argument><argument name='file'><type><or><void/><object resolved='predef::Filesystem.Tar.create'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module>

<class name='Stat'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/><doc><text><p>Describes the stat of a file</p>
</text></doc><docgroup homogen-type='method'><doc><text><dl><group><item name='fifo'/><text><p>Is the file a FIFO?</p>
</text></group><group><item name='chr'/><text><p>Is the file a character device?</p>
</text></group><group><item name='dir'/><text><p>Is the file (?) a directory?</p>
</text></group><group><item name='blk'/><text><p>Is the file a block device?</p>
</text></group><group><item name='reg'/><text><p>Is the file a regular file?</p>
</text></group><group><item name='lnk'/><text><p>Is the file a link to some other file or directory?</p>
</text></group><group><item name='sock'/><text><p>Is the file a socket?</p>
</text></group><group><item name='door'/><text><p><fixme>Document this function.</fixme></p>
</text></group></dl></text><group><returns/><text><p>1 if the file is of a specific type
 0 if the file is not.</p>
</text></group><group><seealso/><text><p>[set_type]</p>
</text></group></doc>
<method name='isfifo'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='ischr'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='isdir'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='isblk'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='isreg'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='islnk'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='issock'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='isdoor'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_type' homogen-type='method'><doc><text><p>Set a type for the stat-object.</p>
</text><group><note/><text><p>This call doesnot change the filetype in the underlaying filesystem.</p>
</text></group><group><param name='x'/><text><p>Type to set. Type is one of the following:</p>
<ul><group><item name='fifo'/><item name='chr'/><item name='dir'/><item name='blk'/><item name='reg'/><item name='lnk'/><item name='sock'/><item name='door'/></group></ul></text></group><group><seealso/><text><p>[isfifo], [ischr], [isdir], [isblk], [isreg], [islnk], [issock], [isdoor]</p>
</text></group></doc>
<method name='set_type'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='x'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='attach_statarray' homogen-type='method'><doc><text><p>Fills the stat-object with data from a Stdio.File.stat() call.</p>
</text></doc>
<method name='attach_statarray'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='a'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open' homogen-type='method'><doc><text><p>Open the stated file within the filesystem</p>
</text><group><returns/><text><p>a [Stdio.File] object</p>
</text></group><group><seealso/><text><p>[Stdio.File]</p>
</text></group></doc>
<method name='open'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='mode'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cd' homogen-type='method'><doc><text><p>Change to the stated directory.</p>
</text><group><returns/><text><p>the directory if the stated object was a directory, 0 otherwise.</p>
</text></group></doc>
<method name='cd'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Filesystem.Stat.cd'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='nice_date' homogen-type='method'><doc><text><p>Returns the date of the stated object as cleartext.</p>
</text></doc>
<method name='nice_date'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Base'><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/><doc><text><p>Baseclass that can be extended to create new filesystems.
 Is used by the Tar and System filesystem classes.</p>
</text></doc><docgroup homogen-name='cd' homogen-type='method'><doc><text><p>Change directory within the filesystem.
 Returns a new filesystem object with the given directory as cwd.</p>
</text></doc>
<method name='cd'><source-position first-line='168' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='directory'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Filesystem.Base'>Base</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cwd' homogen-type='method'><doc><text><p>Returns the current working directory within the filesystem.</p>
</text></doc>
<method name='cwd'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chroot' homogen-type='method'><doc><text><p>Change the root of the filesystem.</p>
</text></doc>
<method name='chroot'><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='directory'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Filesystem.Base'>Base</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='stat' homogen-type='method'><doc><text><p>Return a stat-object for a file or a directory within the
 filesystem.</p>
</text></doc>
<method name='stat'><source-position first-line='178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='file'><type><string/></type></argument><argument name='lstat'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Filesystem.Stat'>Stat</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dir' homogen-type='method'><doc><text><p>Returns an array of all files and directories within a given
 directory.</p>
</text><group><param name='directory'/><text><p>Directory where the search should be made within the filesystem.
 CWD is assumed if none (or 0) is given.</p>
</text></group><group><param name='glob'/><text><p>Return only files and dirs matching the glob (if given).</p>
</text></group><group><seealso/><text><p>[get_stats]</p>
</text></group></doc>
<method name='get_dir'><source-position first-line='189' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='directory'><type><or><void/><string/></or></type></argument><argument name='glob'><type><or><void/><string/><array/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_stats' homogen-type='method'><doc><text><p>Returns stat-objects for the files and directories matching the
 given glob within the given directory.</p>
</text><group><seealso/><text><p>[get_dir]</p>
</text></group></doc>
<method name='get_stats'><source-position first-line='195' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='directory'><type><or><void/><string/></or></type></argument><argument name='glob'><type><or><void/><string/><array/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Filesystem.Stat'>Stat</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='open' homogen-type='method'><doc><text><p>Open a file within the filesystem</p>
</text><group><returns/><text><p>A Stdio.File object.</p>
</text></group></doc>
<method name='open'><source-position first-line='200' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Stdio.File'>Stdio.File</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='apply' homogen-type='method'><doc><text><p><fixme>Document this function</fixme></p>
</text></doc>
<method name='apply'><source-position first-line='205' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chmod' homogen-type='method'><doc><text><p>Change mode of a file or directory.</p>
</text></doc>
<method name='chmod'><source-position first-line='208' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='mode'><type><or><int/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chown' homogen-type='method'><doc><text><p>Change ownership of the file or directory</p>
</text></doc>
<method name='chown'><source-position first-line='211' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='owner'><type><or><int/><object resolved='predef::Filesystem.Base.chown'/></or></type></argument><argument name='group'><type><or><int/><object resolved='predef::Filesystem.Base.chown'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mkdir' homogen-type='method'><doc><text><p>Create a new directory</p>
</text></doc>
<method name='mkdir'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='directory'><type><string/></type></argument><argument name='mode'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rm' homogen-type='method'><doc><text><p>Remove a file from the filesystem.</p>
</text></doc>
<method name='rm'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='find' homogen-type='method'><doc><text><p><fixme>Document this function</fixme></p>
</text></doc>
<method name='find'><source-position first-line='220' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='mask'><type><or><void/><function><argtype><object resolved='predef::Filesystem.Stat'>Stat</object></argtype><returntype><int/></returntype></function></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<class name='Traversion'><source-position first-line='258' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/><doc><text><p>Iterator object that traverses a directory tree and returns
 files as values and paths as indices. Example that uses the
 iterator to create a really simple sort of make:</p>
</text><group><example/><text><p>object i=Filesystem.Traversion(".");
   foreach(i; string dir; string file) {
   	if(!has_suffix(file, ".c")) continue;
     file = dir+file;
     string ofile = file;
   	ofile[-1]='o';
   	object s=file_stat(ofile);
   	if(s &amp;&amp; i-&gt;stat()-&gt;mtime&lt;s-&gt;mtime) continue;
   	// compile file
   }</p>
</text></group></doc><docgroup homogen-name='progress' homogen-type='method'><doc><text><p>Returns the current progress of the traversion as a value
 between 0.0 and 1.0. Note that this value isn't based on the
 number of files, but the directory structure.</p>
</text></doc>
<method name='progress'><source-position first-line='269' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='share'><type><or><void/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='path'/><text><p>The root path from which to traverse.</p>
</text></group><group><param name='symlink'/><text><p>Don't traverse symlink directories.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='path'><type><string/></type></argument><argument name='symlink'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='stat' homogen-type='method'><doc><text><p>Returns the stat for the current index-value-pair.</p>
</text></doc>
<method name='stat'><source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Stdio.Stat'>Stdio.Stat</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='parse_mode' homogen-type='method'><doc><text><p><fixme>Document this function</fixme></p>
</text></doc>
<method name='parse_mode'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='old'><type><int/></type></argument><argument name='mode'><type><or><int/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_filesystem' homogen-type='method'><doc><text><p><fixme>Document this function</fixme></p>
</text></doc>
<method name='get_filesystem'><source-position first-line='231' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p><fixme>Document this function</fixme></p>
</text></doc>
<method name='`()'><source-position first-line='238' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Filesystem.pmod/module.pmod'/>
<arguments><argument name='path'><type><or><void/><string/></or></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
</module>





<module name='Geography'>

<module name='Countries'>

<class name='Country'><source-position first-line='328' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><doc><text><p>Country</p>
</text></doc><docgroup homogen-type='variable' homogen-name='iso2'><doc><text><p>ISO 2-character code aka domain name</p>
</text></doc>
<variable name='iso2'><source-position first-line='330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='fips10'><doc><text><p>FIPS 10-character code; 
    "Federal Information Processing Standards 10-3" etc,
    used by some goverments in the US.</p>
</text></doc>
<variable name='fips10'><source-position first-line='333' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Country name and as-known-as, if any</p>
</text></doc>
<variable name='name'><source-position first-line='338' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><string/></type></variable>
<variable name='aka'><source-position first-line='339' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='former'><doc><text><p>Flag that is set if this country doesn't exist anymore.
    (eg USSR.)</p>
</text></doc>
<variable name='former'><source-position first-line='342' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='continent' homogen-type='method'><doc><text><p>Returns the continent of the country.</p>
</text><group><note/><text><p>Some countries are geographically in more then
	one continent; any of the continents might be
	returned then, but probably the continent in which
	the capital is resident - Europe for Russia, for instance.</p>
</text></group></doc>
<method name='continent'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast a country to a string,
	which will be the same as performing 
	<expr>country-&gt;name;</expr>.</p>
</text></doc>
<method name='cast'>
<arguments><argument><value>"string"</value></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='variable' homogen-name='countries'><doc><text><p>All known countries.</p>
</text></doc>
<variable name='countries'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Countries.pmod'/><type><array><valuetype><object resolved='predef::Geography.Countries.Country'>Country</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='from_domain' homogen-type='method'><doc><text><p>Look up a country from a domain name.
	Returns zero if the domain doesn't map
	to a country. Note that there are some
	valid domains that don't:</p>
<dl><group><item name='INT'/><text><p>International</p>
</text></group><group><item name='MIL'/><text><p>US Military</p>
</text></group><group><item name='NET'/><text><p>Network</p>
</text></group><group><item name='ORG'/><text><p>Non-Profit Organization</p>
</text></group><group><item name='ARPA'/><text><p>Old style Arpanet</p>
</text></group><group><item name='NATO'/><text><p>Nato field</p>
</text></group></dl><p>And that US has five domains, Great Britain and france two:
	&lt;dl compact&gt;
	&lt;dt&gt;EDU   &lt;dd&gt;US Educational
	&lt;dt&gt;MIL   &lt;dd&gt;US Military
	&lt;dt&gt;GOV   &lt;dd&gt;US Government
	&lt;dt&gt;UM	  &lt;dd&gt;US Minor Outlying Islands
	&lt;dt&gt;US	  &lt;dd&gt;US
	&lt;dt&gt;GB    &lt;dd&gt;Great Britain (UK)
	&lt;dt&gt;UK    &lt;dd&gt;United Kingdom
	&lt;dt&gt;FR	  &lt;dd&gt;France
	&lt;dt&gt;FX	  &lt;dd&gt;France, Metropolitan
	&lt;dt&gt;There's also three domains that for convinience maps to US:
	&lt;dt&gt;NET   &lt;dd&gt;Network
	&lt;dt&gt;ORG   &lt;dd&gt;Organization
	&lt;dt&gt;COM   &lt;dd&gt;Commercial
	&lt;/dl&gt;</p>
</text></doc>
<method name='from_domain'>
<arguments><argument name='domain'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Geography.Countries.Country'>Country</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='from_domain' homogen-type='method'><doc><text><p>Look up a country from its name or aka.
	The search is case-insensitive but
	regards whitespace and interpunctation.</p>
</text></doc>
<method name='from_domain'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Geography.Countries.Country'>Country</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='continents' homogen-type='method'><doc><text><p>Gives back a mapping from continent name to 
	an array of the countries on that continent.</p>
<p>	The continents are:
	<pre>
    	  "Europe"
    	  "Africa"
    	  "Asia"
    	  "North America"
    	  "South America"
    	  "Oceania"
	  "Antarctica"
	</pre></p>
</text><group><note/><text><p>Some countries are considered to be on more than one continent.</p>
</text></group></doc>
<method name='continents'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><array><valuetype><object resolved='predef::Geography.Countries.Country'>Country</object></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Convenience functions for getting a country
	the name-space way; it looks up whatever it
	is in the name- and domain-space and
	returns that country if possible:</p>
<code><text><p>&gt; Geography.Countries.se;    
 Result: Country(Sweden)
 &gt; Geography.Countries.djibouti;
 Result: Country(Djibouti)
 &gt; Geography.Countries.com;     
 Result: Country(United States)
 &gt; Geography.Countries.wallis_and_futuna_islands-&gt;iso2;
 Result: "WF"</p>
</text></code>
</text></doc>
<method name='`[]'>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</module>

<class name='PositionRT38'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/module.pmod'/><doc><text><p>Create a Position object from a RT38 coordinate</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Position'><doc>
</doc>
<inherit name='Position'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/module.pmod'/><classname resolved='predef::Geography.Position'>.Position</classname></inherit>
</docgroup>
</class>

<class name='Position'><doc><text><p>This class contains a geographical position,
 ie a point on the earths surface. The resulting
 position object implements comparision methods
 (__hash, `==, `&lt; and `&gt;) so that you can compare
 and sort positions as well as using them as index
 in mappings. Comparision is made primary on latidue
 and secondly on longitude. It does not currently
 take the ellipsoid into account.</p>
<p> It is possible to cast a position into an array, which
 will yield ({ float latitude, float longitude }), as
 well as into a string.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='lat'><doc><text><p>Latitude (N--S) of the position, in degrees.
 Positive number is north, negative number is south.</p>
</text></doc>
<variable name='lat'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='long'><doc><text><p>Longitude (W--E) of the position, in degrees.
 Positive number is east, negative number is west.</p>
</text></doc>
<variable name='long'><source-position first-line='23' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='alt'><doc><text><p>Altitud of the position, in meters. Positive numbers
 is up. Zero is the shell of the current ellipsoid.</p>
</text></doc>
<variable name='alt'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Constructor for this class. If fed with strings,
 it will perform a dwim scan on the strings. If they
 fails to be understood, there will be an exception.</p>
</text></doc>
<method name='create'>
<arguments><argument name='lat'><type><float/></type></argument><argument name='long'><type><float/></type></argument><argument name='alt'><type><or><void/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='lat'><type><string/></type></argument><argument name='long'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='both'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the nicely formatted latitude or longitude.</p>
<int><group><value>0</value><text><p>"17°42.19'N" / "42°22.2'W"</p>
</text></group><group><value>1</value><text><p>"17.703°N" / "42.37°W"</p>
</text></group><group><value>2</value><text><p>"17°42.18'N" / "42°22.2'W"</p>
</text></group><group><value>3</value><text><p>"17°42'10.4"N" / "42°22'12"W"</p>
</text></group><group><value>-1</value><text><p>"17.703" / "-42.37"</p>
</text></group></int>
</text></doc>
<method name='latitude'>
<arguments><argument name='n'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='longitude'>
<arguments><argument name='n'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='standard_grid' homogen-type='method'><doc><text><p>Returns the standard map grid system
 for the current position. Can either
 be "UPS" or "UTM".</p>
</text></doc>
<method name='standard_grid'><source-position first-line='142' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='polar_radius'><doc><text><p>The polar radius is how many meters the earth
 radius is at the poles (north-south direction).</p>
</text></doc>
<variable name='polar_radius'><source-position first-line='149' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='equatorial_radius'><doc><text><p>The equatorial radius is how many meters the earth
 radius is at the equator (east-west direction).</p>
</text></doc>
<variable name='equatorial_radius'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/><type><float/></type></variable>
</docgroup>
<docgroup homogen-name='flattening' homogen-type='method'><doc><text><p>Returns the flattening factor for the selected
 earth approximation ellipsoid.</p>
</text></doc>
<method name='flattening'><source-position first-line='157' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eccentricity_squared' homogen-type='method'><doc><text><p>Returns the first eccentricity squared for the
 selected earth approximation ellipsoid.</p>
</text></doc>
<method name='eccentricity_squared'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ellipsoids'><doc><text><p>A mapping with reference ellipsoids, which can be fed to the
 UTM converter. The mapping maps the name of the ellipsoid to
 an array where the first element is a float describing the
 equatorial radius and the second element is a float describing
 the polar radius.</p>
</text></doc>
<constant name='ellipsoids'><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/></constant>
</docgroup>
<docgroup homogen-name='set_ellipsoid' homogen-type='method'><doc><text><p>Sets the equatorial and polar radius to the provided values.
 A name can also be provided, in which case the radius will be looked
 up in the ellipsoid mapping. The function returns 1 upon success, 0 on
 failure.</p>
<string name='name'><group><value>"Airy 1830"</value><value>"ATS77"</value><value>"Australian National"</value><value>"Bessel 1841"</value><value>"Bessel 1841 Namibia"</value><value>"Clarke 1866"</value><value>"Clarke 1880"</value><value>"Everest"</value><value>"Everest 1830"</value><value>"Everest 1848"</value><value>"Everest 1856"</value><value>"Everest 1869"</value><value>"Everest Pakistan"</value><value>"Fisher 1960"</value><value>"Fisher 1968"</value><value>"G R S 1967"</value><value>"G R S 1975"</value><value>"G R S 1980"</value><value>"Helmert 1906"</value><value>"Hough 1956"</value><value>"Indonesian 1974"</value><value>"Krassovsky 1940"</value><value>"Mercury"</value><value>"Modified Airy"</value><value>"Modified Fisher 1960"</value><value>"New International 1967"</value><value>"SGS 85"</value><value>"South American 1969"</value><value>"Sphere"</value><value>"WGS 60"</value><value>"WGS 66"</value><value>"WGS 72"</value><value>"WGS 84"</value></group></string>
</text><group><note/><text><p>The longitude and lattitude are not converted to the new ellipsoid.</p>
</text></group></doc>
<method name='set_ellipsoid'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='set_ellipsoid'>
<arguments><argument name='equatorial_radius'><type><float/></type></argument><argument name='polar_radius'><type><float/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='UTM_zone_number' homogen-type='method'><doc><text><p>Returns the UTM zone number for the current longitude, with
 correction for the Svalbard deviations.</p>
</text></doc>
<method name='UTM_zone_number'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='UTM_zone_designator' homogen-type='method'><doc><text><p>Returns the UTM letter designator for the current latitude.
 Returns "Z" if latitude is outside the UTM limits of 84N to 80S.</p>
</text></doc>
<method name='UTM_zone_designator'><source-position first-line='316' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='UTM_offset' homogen-type='method'><doc><text><p>Returns the offset within the present UTM cell.
 The result will be returned in an array of floats,
 containing easting and northing.</p>
</text></doc>
<method name='UTM_offset'><source-position first-line='330' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='UTM' homogen-type='method'><doc><text><p>Returns the current UTM coordinates position.
 An example output is
 "32T 442063.562 5247479.500"
 where the parts are zone number + zone designator,
 easting and northing.</p>
</text></doc>
<method name='UTM'><source-position first-line='370' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_from_UTM' homogen-type='method'><doc><text><p>Sets the longitude and lattitude from the given
 UTM coordinates.</p>
</text></doc>
<method name='set_from_UTM'><source-position first-line='377' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='zone_number'><type><int/></type></argument><argument name='zone_designator'><type><string/></type></argument><argument name='UTME'><type><float/></type></argument><argument name='UTMN'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='GEOREF' homogen-type='method'><doc><text><p>Gives the full GEOREF position for the current position, e.g. "LDJA0511".</p>
</text></doc>
<method name='GEOREF'><source-position first-line='418' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='RT38' homogen-type='method'><doc/>
<method name='RT38'><source-position first-line='453' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_from_RT38' homogen-type='method'><doc><text><p>Sets the longitude and lattitude from the given
 RT38 coordinates.</p>
</text></doc>
<method name='set_from_RT38'><source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='x_n'><type><or><int/><float/><string/></or></type></argument><argument name='y_e'><type><or><int/><float/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='approx_height' homogen-type='method'><doc><text><p>Returns a very crude approximation of where the ground level is
 at the current position, compared against the ellipsoid shell.
 WGS-84 is assumed, but the approximation is so bad that it doesn't
 matter which of the standard ellipsoids is used.</p>
</text></doc>
<method name='approx_height'><source-position first-line='535' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ECEF' homogen-type='method'><doc><text><p>Returns the current position as Earth Centered Earth Fixed
 Cartesian Coordinates.</p>
</text><group><returns/><text><p>({ X, Y, Z })</p>
</text></group></doc>
<method name='ECEF'><source-position first-line='555' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='__hash' homogen-type='method'><doc/>
<method name='__hash'><source-position first-line='582' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc/>
<method name='`=='><source-position first-line='588' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='pos'><type><object resolved='predef::Geography.Position.`=='/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc/>
<method name='`&lt;'><source-position first-line='594' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='pos'><type><object resolved='predef::Geography.Position.`&lt;'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc/>
<method name='`&gt;'><source-position first-line='602' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='pos'><type><object resolved='predef::Geography.Position.`&gt;'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'><source-position first-line='610' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='t'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='euclidian_distance' homogen-type='method'><doc><text><p>Calculate the euclidian distance between two Geography.Position.
 Result is in meter. This uses the ECEF function.</p>
</text></doc>
<method name='euclidian_distance'><source-position first-line='618' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Geography.pmod/Position.pike'/>
<arguments><argument name='p'><type><object resolved='predef::Geography.Position'>this_program</object></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
</class></module>





<module name='MIME'>

<doc><text><p>RFC1521, the <b>Multipurpose Internet Mail Extensions</b> memo, defines a
 structure which is the base for all messages read and written by
 modern mail and news programs.  It is also partly the base for the
 HTTP protocol.  Just like RFC822, MIME declares that a message should
 consist of two entities, the headers and the body.  In addition, the
 following properties are given to these two entities:</p>
<dl><group><item name='Headers'/><text><ul><group><item/><text><p>A MIME-Version header must be present to signal MIME compatibility</p>
</text></group><group><item/><text><p>A Content-Type header should be present to describe the nature of
     the data in the message body.  Seven major types are defined, and an
     extensive number of subtypes are available.  The header can also
     contain attributes specific to the type and subtype.</p>
</text></group><group><item/><text><p>A Content-Transfer-Encoding may be present to notify that the data
     of the body is encoded in some particular encoding.</p>
</text></group></ul></text></group><group><item name='Body'/><text><ul><group><item/><text><p>Raw data to be interpreted according to the Content-Type header</p>
</text></group><group><item/><text><p>Can be encoded using one of several Content-Transfer-Encodings to
     allow transport over non 8bit clean channels</p>
</text></group></ul></text></group></dl><p>The MIME module can extract and analyze these two entities from a stream
 of bytes.  It can also recreate such a stream from these entities.
 To encapsulate the headers and body entities, the class <ref resolved='predef::MIME.Message'>MIME.Message</ref> is
 used.  An object of this class holds all the headers as a mapping from
 string to string, and it is possible to obtain the body data in either
 raw or encoded form as a string.  Common attributes such as message type
 and text char set are also extracted into separate variables for easy
 access.</p>
<p> The Message class does not make any interpretation of the body
 data, unless the content type is <tt>multipart</tt>.  A multipart
 message contains several individual messages separated by boundary
 strings.  The <ref resolved='predef::MIME.Message.create'>Message-&gt;create</ref> method of the Message class will
 divide a multipart body on these boundaries, and then create
 individual Message objects for each part.  These objects will be
 collected in the array <ref resolved='predef::MIME.Message.body_parts'>Message-&gt;body_parts</ref> within the original
 Message object. If any of the new <ref resolved='predef::MIME.Message'>Message</ref> objects have a body of
 type multipart, the process is of course repeated recursively.</p>
</text></doc>

<class name='Message'><source-position first-line='558' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><doc><text><p>This class is used to hold a decoded MIME message.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='560' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><classname resolved='predef::Array'>Array</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='headers'><doc><text><p>This mapping contains all the headers of the message.</p>
<p> The key is the header name (in lower case) and the value is
 the header value.</p>
<p> Although the mapping contains all headers, some particular headers get
 special treatment by the module and should <b>not</b> be accessed through
 this mapping. These fields are currently:</p>
<string><group><value>"content-type"</value><value>"content-disposition"</value><value>"content-length"</value><value>"content-transfer-encoding"</value></group></string><p>The contents of these fields can be accessed and/or modified through
 a set of variables and methods available for this purpose.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.type'>type</ref>, <ref resolved='predef::MIME.Message.subtype'>subtype</ref>, <ref resolved='predef::MIME.Message.charset'>charset</ref>, <ref resolved='predef::MIME.Message.boundary'>boundary</ref>, <ref resolved='predef::MIME.Message.transfer_encoding'>transfer_encoding</ref>,
 <ref resolved='predef::MIME.Message.params'>params</ref>, <ref resolved='predef::MIME.Message.disposition'>disposition</ref>, <ref resolved='predef::MIME.Message.disp_params'>disp_params</ref>, <ref resolved='predef::MIME.Message.setencoding'>setencoding()</ref>,
 <ref resolved='predef::MIME.Message.setparam'>setparam()</ref>, <ref resolved='predef::MIME.Message.setdisp_param'>setdisp_param()</ref>, <ref resolved='predef::MIME.Message.setcharset'>setcharset()</ref>, <ref resolved='predef::MIME.Message.setboundary'>setboundary()</ref></p>
</text></group></doc>
<variable name='headers'><source-position first-line='587' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='body_parts'><doc><text><p>If the message is of type <tt>multipart</tt>, this is an array
 containing one Message object for each part of the message.
 If the message is not a multipart, this field is <expr>0</expr> (zero).</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.type'>type</ref>, <ref resolved='predef::MIME.Message.boundary'>boundary</ref></p>
</text></group></doc>
<variable name='body_parts'><source-position first-line='596' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><array><valuetype><object resolved='predef::MIME.Message'/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='boundary'><doc><text><p>For multipart messages, this <tt>Content-Type</tt> parameter gives a
 delimiter string for separating the individual messages.  As multiparts
 are handled internally by the module, you should not need to access this
 field.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.setboundary'>setboundary()</ref></p>
</text></group></doc>
<variable name='boundary'><source-position first-line='606' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='charset'><doc><text><p>One of the possible parameters of the <tt>Content-Type</tt> header is the
 charset attribute. It determines the character encoding used in bodies of
 type <tt>text</tt>.</p>
<p> If there is no <tt>Content-Type</tt> header, the value of this field
 is <expr>"us-ascii"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.type'>type</ref></p>
</text></group></doc>
<variable name='charset'><source-position first-line='618' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='type'><doc><text><p>The <tt>Content-Type</tt> header contains a type, a subtype, and optionally
 some parameters. This field contains the type attribute extracted
 from the header.</p>
<p> If there is no <tt>Content-Type</tt> header, the value of this field
 is <expr>"text"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.subtype'>subtype</ref>, <ref resolved='predef::MIME.Message.params'>params</ref></p>
</text></group></doc>
<variable name='type'><source-position first-line='630' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='subtype'><doc><text><p>The <tt>Content-Type</tt> header contains a type, a subtype, and optionally
 some parameters. This field contains the subtype attribute extracted
 from the header.</p>
<p> If there is no <tt>Content-Type</tt> header, the value of this field
 is <expr>"plain"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.type'>type</ref>, <ref resolved='predef::MIME.Message.params'>params</ref></p>
</text></group></doc>
<variable name='subtype'><source-position first-line='642' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='transfer_encoding'><doc><text><p>The contents of the <tt>Content-Transfer-Encoding</tt> header.</p>
<p> If no <tt>Content-Transfer-Encoding</tt> header is given, this field
 is <expr>0</expr> (zero).</p>
<p> Transfer encoding and decoding is done transparently by the module,
 so this field should be interesting only to applications wishing to
 do auto conversion of certain transfer encodings.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.setencoding'>setencoding()</ref></p>
</text></group></doc>
<variable name='transfer_encoding'><source-position first-line='656' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='params'><doc><text><p>A mapping containing all the additional parameters to the
 <tt>Content-Type</tt> header.</p>
<p> Some of these parameters have fields of their own, which should
 be accessed instead of this mapping wherever applicable.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.charset'>charset</ref>, <ref resolved='predef::MIME.Message.boundary'>boundary</ref>, <ref resolved='predef::MIME.Message.setparam'>setparam()</ref></p>
</text></group></doc>
<variable name='params'><source-position first-line='667' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='disposition'><doc><text><p>The first part of the <tt>Content-Disposition</tt> header, hinting on how
 this part of a multipart message should be presented in an interactive
 application.</p>
<p> If there is no <tt>Content-Disposition</tt> header, this field
 is <expr>0</expr>.</p>
</text></doc>
<variable name='disposition'><source-position first-line='676' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='disp_params'><doc><text><p>A mapping containing all the additional parameters to the
 <tt>Content-Disposition</tt> header.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.setdisp_param'>setdisp_param()</ref>, <ref resolved='predef::MIME.Message.get_filename'>get_filename()</ref></p>
</text></group></doc>
<variable name='disp_params'><source-position first-line='684' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='get_filename' homogen-type='method'><doc><text><p>This method tries to find a suitable filename should you want to save the
 body data to disk.</p>
<p> It will examine the <tt>filename</tt> attribute of the
 <tt>Content-Disposition</tt> header, and failing that the <tt>name</tt>
 attribute of the <tt>Content-Type</tt> header. If neither attribute is set,
 the method returns 0.</p>
</text><group><note/><text><p>An interactive application should always query the user for the actual
 filename to use.  This method may provide a reasonable default though.</p>
</text></group></doc>
<method name='get_filename'><source-position first-line='699' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_partial' homogen-type='method'><doc><text><p>If this message is a part of a fragmented message (i.e. has a
 Content-Type of <tt>message/partial</tt>), an array with three elements
 is returned.</p>
<p> The first element is an identifier string. This string should be used to
 group this message with the other fragments of the message (which will
 have the same id string).</p>
<p> The second element is the sequence number of this fragment. The first
 part will have number 1, the next number 2 etc.</p>
<p> The third element of the array is either the total number of fragments
 that the original message has been split into, or 0 of this information
 is not available.</p>
<p> If this method is called in a message that is not a part of a fragmented
 message, it will return 0.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.reconstruct_partial'>MIME.reconstruct_partial()</ref></p>
</text></group></doc>
<method name='is_partial'><source-position first-line='726' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='setdata' homogen-type='method'><doc><text><p>Replaces the body entity of the data with a new piece of raw data.</p>
<p> The new data should comply to the format indicated by the
 <ref resolved='predef::MIME.Message.type'>type</ref> and <ref resolved='predef::MIME.Message.subtype'>subtype</ref> attributes.</p>
</text><group><note/><text><p>Do not use this method unless you know what you are doing.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.Message.getdata'>getdata()</ref></p>
</text></group></doc>
<method name='setdata'><source-position first-line='743' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getdata' homogen-type='method'><doc><text><p>This method returns the raw data of the message body entity.</p>
<p> The <ref resolved='predef::MIME.Message.type'>type</ref> and <ref resolved='predef::MIME.Message.subtype'>subtype</ref> attributes indicate how this data should
 be interpreted.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.getencoded'>getencoded()</ref></p>
</text></group></doc>
<method name='getdata'><source-position first-line='759' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getencoded' homogen-type='method'><doc><text><p>This method returns the data of the message body entity, encoded
 using the current transfer encoding.</p>
<p> You should never have to call this function.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.getdata'>getdata()</ref></p>
</text></group></doc>
<method name='getencoded'><source-position first-line='774' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setencoding' homogen-type='method'><doc><text><p>Select a new transfer encoding for this message.</p>
<p> The <tt>Content-Transfer-Encoding</tt> header will be modified accordingly,
 and subsequent calls to <ref resolved='predef::MIME.Message.getencoded'>getencoded</ref> will produce data encoded using
 the new encoding.</p>
<p> See <ref resolved='predef::MIME.encode'>MIME.encode()</ref> for a list of valid encodings.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.getencoded'>getencoded()</ref>, <ref resolved='predef::MIME.encode'>MIME.encode()</ref></p>
</text></group></doc>
<method name='setencoding'><source-position first-line='792' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setparam' homogen-type='method'><doc><text><p>Set or modify the named parameter of the <tt>Content-Type</tt> header.</p>
<p> Common parameters include <tt>charset</tt> for text messages, and
 <tt>boundary</tt> for multipart messages.</p>
</text><group><note/><text><p>It is not allowed to modify the <tt>Content-Type</tt> header directly,
 please use this function instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.Message.setcharset'>setcharset()</ref>, <ref resolved='predef::MIME.Message.setboundary'>setboundary()</ref>, <ref resolved='predef::MIME.Message.setdisp_param'>setdisp_param()</ref></p>
</text></group></doc>
<method name='setparam'><source-position first-line='813' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='param'><type><string/></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setdisp_param' homogen-type='method'><doc><text><p>Set or modify the named parameter of the <tt>Content-Disposition</tt>
 header.</p>
<p> A common parameters is e.g. <tt>filename</tt>.</p>
</text><group><note/><text><p>It is not allowed to modify the <tt>Content-Disposition</tt> header
 directly, please use this function instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.Message.setparam'>setparam()</ref>, <ref resolved='predef::MIME.Message.get_filename'>get_filename()</ref></p>
</text></group></doc>
<method name='setdisp_param'><source-position first-line='851' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='param'><type><string/></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setcharset' homogen-type='method'><doc><text><p>Sets the <tt>charset</tt> parameter of the <tt>Content-Type</tt> header.</p>
<p> This is equivalent of calling <expr>setparam("charset", <ref resolved='predef::MIME.Message.setcharset.charset'>charset</ref>)</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.setparam'>setparam()</ref></p>
</text></group></doc>
<method name='setcharset'><source-position first-line='878' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='charset'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setboundary' homogen-type='method'><doc><text><p>Sets the <tt>boundary</tt> parameter of the <tt>Content-Type</tt> header.</p>
<p> This is equivalent of calling <expr>setparam("boundary", <ref resolved='predef::MIME.Message.setboundary.boundary'>boundary</ref>)</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.setparam'>setparam()</ref></p>
</text></group></doc>
<method name='setboundary'><source-position first-line='890' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='boundary'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Casting the message object to a string will yield a byte stream suitable
 for transmitting the message over protocols such as ESMTP and NNTP.</p>
<p> The body will be encoded using the current transfer encoding, and
 subparts of a multipart will be collected recursively. If the message
 is a multipart and no boundary string has been set, one will be
 generated using <ref resolved='predef::MIME.generate_boundary'>generate_boundary()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.create'>create()</ref></p>
</text></group></doc>
<method name='cast'><source-position first-line='905' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='dest_type'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>There are several ways to call the constructor of the Message class:</p>
<ul><group><item/><text><p>With zero arguments, you will get a dummy message with neither
     headers nor body. Not very useful.</p>
</text></group><group><item/><text><p>With one argument, the argument is taken to be a byte stream
     containing a message in encoded form. The constructor will analyze
     the string and extract headers and body.</p>
</text></group><group><item/><text><p>With two or three arguments, the first argument is taken to be the
     raw body data, and the second argument a desired set of headers.
     The keys of this mapping are not case-sensitive.  If the given
     headers indicate that the message should be of type multipart,
     an array of Message objects constituting the subparts should be
     given as a third argument.</p>
</text></group><group><item/><text><p>With the <ref resolved='predef::MIME.Message.create.guess'>guess</ref> argument set to 1 (<ref resolved='predef::MIME.Message.create.headers'>headers</ref> and <ref resolved='predef::MIME.Message.create.parts'>parts</ref> may be 0
     if you don't want to give any), you get a more forgiving MIME Message
     that will do its best to guess what broken input data really meant. It
     won't always guess right, but for applications like mail archives and
     similar where you can't get away with throwing an error at the user,
     this comes in handy. Only use the <ref resolved='predef::MIME.Message.create.guess'>guess</ref> mode only for situations
     where you <i>need</i> to process broken MIME messages silently; the
     abuse of overly lax tools is what poisons standards.</p>
</text></group></ul>
</text><group><seealso/><text><p><ref resolved='predef::MIME.Message.cast'>cast()</ref></p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='message'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='message'><type><string/></type></argument><argument name='headers'><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></argument><argument name='parts'><type><or><array><valuetype><object resolved='predef::MIME.Message.create'/></valuetype></array><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='message'><type><string/></type></argument><argument name='headers'><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></argument><argument name='parts'><type><or><array><valuetype><object resolved='predef::MIME.Message.create'/></valuetype></array><void/></or></type></argument><argument name='guess'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='___MIME'><doc>
</doc>
<inherit name='___MIME'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/><classname>___MIME</classname></inherit>
</docgroup>
<docgroup homogen-name='generate_boundary' homogen-type='method'><doc><text><p>This function will create a string that can be used as a separator string
 for multipart messages.  The generated string is guaranteed not to appear
 in <tt>base64</tt>, <tt>quoted-printable</tt>, or <tt>x-uue</tt> encoded data.
 It is also unlikely to appear in normal text.  This function is used by
 the cast method of the <tt>Message</tt> class if no boundary string is
 specified.</p>
</text></doc>
<method name='generate_boundary'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Extract raw data from an encoded string suitable for transport between
 systems.</p>
<p> The encoding can be any of</p>
<string><group><value>"7bit"</value><value>"8bit"</value><value>"base64"</value><value>"binary"</value><value>"quoted-printable"</value><value>"x-uue"</value><value>"x-uuencode"</value></group></string><p>The encoding string is not case sensitive.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.encode'>MIME.encode()</ref></p>
</text></group></doc>
<method name='decode'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encode raw data into something suitable for transport to other systems.</p>
<p> The encoding can be any of</p>
<string><group><value>"7bit"</value><value>"8bit"</value><value>"base64"</value><value>"binary"</value><value>"quoted-printable"</value><value>"x-uue"</value><value>"x-uuencode"</value></group></string><p>The encoding string is not case sensitive.  For the <tt>x-uue</tt> encoding,
 an optional <ref resolved='predef::MIME.encode.filename'>filename</ref> string may be supplied.</p>
<p> If a nonzero value is passed as <ref resolved='predef::MIME.encode.no_linebreaks'>no_linebreaks</ref>, the result string
 will not contain any linebreaks (<tt>base64</tt> and <tt>quoted-printable</tt>
 only).</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode'>MIME.decode()</ref></p>
</text></group></doc>
<method name='encode'><source-position first-line='136' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='encoding'><type><string/></type></argument><argument name='filename'><type><or><void/><string/></or></type></argument><argument name='no_linebreaks'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_word' homogen-type='method'><doc><text><p>Extracts the textual content and character set from an <i>encoded word</i>
 as specified by RFC1522.  The result is an array where the first element
 is the raw text, and the second element the name of the character set.
 If the input string is not an encoded word, the result is still an array,
 but the char set element will be set to 0.</p>
</text><group><note/><text><p>Note that this function can only be applied to individual encoded words.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.encode_word'>MIME.encode_word()</ref></p>
</text></group></doc>
<method name='decode_word'><source-position first-line='168' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='word'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_word' homogen-type='method'><doc><text><p>Create an <i>encoded word</i> as specified in RFC1522 from an array
 containing a raw text string and a char set name.</p>
<p> The text will be transfer encoded according to the encoding argument,
 which can be either <expr>"base64"</expr> or <expr>"quoted-printable"</expr>
 (or either <expr>"b"</expr> or <expr>"q"</expr> for short).</p>
<p> If either the second element of the array (the char set name), or
 the encoding argument is 0, the raw text is returned as is.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_word'>MIME.decode_word()</ref></p>
</text></group></doc>
<method name='encode_word'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='word'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_text' homogen-type='method'><doc><text><p>Separates a header value containing <i>text</i> into units and calls
 <ref resolved='predef::MIME.decode_word'>MIME.decode_word()</ref> on them.  The result is an array where each element
 is a result from <ref resolved='predef::MIME.decode_word'>decode_word()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_words_tokenized'>MIME.decode_words_tokenized</ref>
 <ref resolved='predef::MIME.decode_words_text_remapped'>MIME.decode_words_text_remapped</ref></p>
</text></group></doc>
<method name='decode_words_text'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='txt'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_text_remapped' homogen-type='method'><doc><text><p>Like <ref resolved='predef::MIME.decode_words_text'>MIME.decode_words_text()</ref>, but the extracted strings are
 also remapped from their specified character encoding into UNICODE,
 and then pasted together.  The result is thus a string in the original
 text format, without RFC1522 escapes, and with all characters in UNICODE
 encoding.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_words_tokenized_remapped'>MIME.decode_words_tokenized_remapped</ref></p>
</text></group></doc>
<method name='decode_words_text_remapped'><source-position first-line='273' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='txt'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_tokenized' homogen-type='method'><doc><text><p>Tokenizes a header value just like <ref resolved='predef::MIME.tokenize'>MIME.tokenize()</ref>, but also
 converts encoded words using <ref resolved='predef::MIME.decode_word'>MIME.decode_word()</ref>.  The result is
 an array where each element is either an <expr>int</expr> representing
 a special character, or an <expr>array</expr> as returned by
 <ref resolved='predef::MIME.decode_word'>decode_word()</ref> representing an atom or a quoted string.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_words_tokenized_labled'>MIME.decode_words_tokenized_labled</ref>
 <ref resolved='predef::MIME.decode_words_tokenized_remapped'>MIME.decode_words_tokenized_remapped</ref>
 <ref resolved='predef::MIME.decode_words_text'>MIME.decode_words_text</ref></p>
</text></group></doc>
<method name='decode_words_tokenized'><source-position first-line='289' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><array><valuetype><string/></valuetype></array><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_tokenized_remapped' homogen-type='method'><doc><text><p>Like <ref resolved='predef::MIME.decode_words_tokenized'>MIME.decode_words_tokenized()</ref>, but the extracted atoms are
 also remapped from their specified character encoding into UNICODE.
 The result is thus identical to that of <ref resolved='predef::MIME.tokenize'>MIME.tokenize()</ref>, but
 without RFC1522 escapes, and with all characters in UNICODE encoding.</p>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_words_tokenized_labled_remapped'>MIME.decode_words_tokenized_labled_remapped</ref>
 <ref resolved='predef::MIME.decode_words_text_remapped'>MIME.decode_words_text_remapped</ref></p>
</text></group></doc>
<method name='decode_words_tokenized_remapped'><source-position first-line='306' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_tokenized_labled' homogen-type='method'><doc><text><p>Tokenizes and labels a header value just like <ref resolved='predef::MIME.tokenize_labled'>MIME.tokenize_labled()</ref>,
 but also converts encoded words using <ref resolved='predef::MIME.decode_word'>MIME.decode_word()</ref>.  The result
 is an array where each element is an array of two or more elements, the
 first being the label.  The rest of the array depends on the label:</p>
<string><group><value>"special"</value><text><p>One additional element, containing the character code for the special
     character as an <expr>int</expr>.</p>
</text></group><group><value>"word"</value><text><p>Two additional elements, the first being the word, and the second
     being the character set of this word (or 0 if it did not originate
     from an encoded word).</p>
</text></group><group><value>"domain-literal"</value><text><p>One additional element, containing the domain literal as a string.</p>
</text></group><group><value>"comment"</value><text><p>One additional element, containing an array as returned by
     <ref resolved='predef::MIME.decode_words_text'>MIME.decode_words_text()</ref>.</p>
</text></group></string>
</text><group><seealso/><text><p><ref resolved='predef::MIME.decode_words_tokenized_labled_remapped'>MIME.decode_words_tokenized_labled_remapped</ref></p>
</text></group></doc>
<method name='decode_words_tokenized_labled'><source-position first-line='337' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><string/><int/><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_words_tokenized_labled_remapped' homogen-type='method'><doc><text><p>Like <ref resolved='predef::MIME.decode_words_tokenized_labled'>MIME.decode_words_tokenized_labled()</ref>, but the extracted words are
 also remapped from their specified character encoding into UNICODE.
 The result is identical to that of <ref resolved='predef::MIME.tokenize_labled'>MIME.tokenize_labled()</ref>, but
 without RFC1522 escapes, and with all characters in UNICODE encoding.</p>
</text></doc>
<method name='decode_words_tokenized_labled_remapped'><source-position first-line='360' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_words_text' homogen-type='method'><doc><text><p>The inverse of <ref resolved='predef::MIME.decode_words_text'>decode_words_text()</ref>, this function accepts
 an array of strings or pairs of strings which will each be encoded
 by <ref resolved='predef::MIME.encode_word'>encode_word()</ref>, after which they are all pasted together.</p>
</text><group><param name='encoding'/><text><p>Either <expr>"base64"</expr> or <expr>"quoted-printable"</expr>
  (or either <expr>"b"</expr> or <expr>"q"</expr> for short).</p>
</text></group></doc>
<method name='encode_words_text'><source-position first-line='384' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><array><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></type></argument><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_words_quoted' homogen-type='method'><doc><text><p>The inverse of <ref resolved='predef::MIME.decode_words_tokenized'>decode_words_tokenized()</ref>, this functions accepts
 an array like the argument to <ref resolved='predef::MIME.quote'>quote()</ref>, but instead of simple strings
 for atoms and quoted-strings, it will also accept pairs of strings to
 be passed to <ref resolved='predef::MIME.encode_word'>encode_word()</ref>.</p>
</text><group><param name='encoding'/><text><p>Either <expr>"base64"</expr> or <expr>"quoted-printable"</expr>
  (or either <expr>"b"</expr> or <expr>"q"</expr> for short).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.encode_words_quoted_labled'>MIME.encode_words_quoted_labled()</ref></p>
</text></group></doc>
<method name='encode_words_quoted'><source-position first-line='417' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><array><valuetype><or><array><valuetype><string/></valuetype></array><int/></or></valuetype></array></type></argument><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_words_quoted_labled' homogen-type='method'><doc><text><p>The inverse of <ref resolved='predef::MIME.decode_words_tokenized_labled'>decode_words_tokenized_labled()</ref>, this functions accepts
 an array like the argument to <ref resolved='predef::MIME.quote_labled'>quote_labled()</ref>, but "word" labled
 elements can optionally contain an additional string element specifying
 a character set, in which case an encoded-word will be used.  Also, the
 format for "comment" labled elements is entirely different; instead of
 a single string, an array of strings or pairs like the first argument to
 <ref resolved='predef::MIME.encode_words_text'>encode_words_text()</ref> is expected.</p>
</text><group><param name='encoding'/><text><p>Either <expr>"base64"</expr> or <expr>"quoted-printable"</expr>
  (or either <expr>"b"</expr> or <expr>"q"</expr> for short).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.encode_words_quoted'>MIME.encode_words_quoted()</ref></p>
</text></group></doc>
<method name='encode_words_quoted_labled'><source-position first-line='440' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='phrase'><type><array><valuetype><array><valuetype><or><string/><int/><array><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></or></valuetype></array></valuetype></array></type></argument><argument name='encoding'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='guess_subtype' homogen-type='method'><doc><text><p>Provide a reasonable default for the subtype field.</p>
<p> Some pre-RFC1521 mailers provide only a type and no subtype in the
 Content-Type header field.  This function can be used to obtain a
 reasonable default subtype given the type of a message.  (This is done
 automatically by the <ref resolved='predef::MIME.Message'>MIME.Message</ref> class.)</p>
<p> Currently, the function uses the following guesses:</p>
<string><group><value>"text"</value><text><p><expr>"plain"</expr></p>
</text></group><group><value>"message"</value><text><p><expr>"rfc822"</expr></p>
</text></group><group><value>"multipart"</value><text><p><expr>"mixed"</expr></p>
</text></group></string>
</text></doc>
<method name='guess_subtype'><source-position first-line='480' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_headers' homogen-type='method'><doc><text><p>This is a low level function that will separate the headers from the body
 of an encoded message.  It will also translate the headers into a mapping.
 It will however not try to analyze the meaning of any particular header.
 This means that the body is returned as is, with any transfer-encoding
 intact.</p>
<p> It is possible to call this function with just the header part
 of a message, in which case an empty body will be returned.</p>
<p> The result is returned in the form of an array containing two elements.
 The first element is a mapping containing the headers found.  The second
 element is a string containing the body.</p>
<p> Headers that occurr multiple times will have their contents NUL separated,
 unless <ref resolved='predef::MIME.parse_headers.use_multiple'>use_multiple</ref> has been specified, in which case the contents will
 be arrays.</p>
</text></doc>
<method name='parse_headers'>
<arguments><argument name='message'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping><string/></or></valuetype></array></returntype>
</method>
<method name='parse_headers'>
<arguments><argument name='message'><type><string/></type></argument><argument name='use_multiple'><type><int><min>1</min><max>1</max></int></type></argument></arguments>
<returntype><array><valuetype><or><mapping><indextype><string/></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='reconstruct_partial' homogen-type='method'><doc><text><p>This function will attempt to reassemble a fragmented message from its
 parts.</p>
<p> The array <ref resolved='predef::MIME.reconstruct_partial.collection'>collection</ref> should contain <ref resolved='predef::MIME.Message'>MIME.Message</ref> objects forming
 a complete set of parts for a single fragmented message.
 The order of the messages in the array is not important, but every part
 must exist at least once.</p>
<p> Should the function succeed in reconstructing the original message, a
 new <ref resolved='predef::MIME.Message'>MIME.Message</ref> object will be returned.</p>
<p> If the function fails to reconstruct an original message, an integer
 indicating the reason for the failure will be returned:</p>
<int><group><value>0</value><text><p>Returned if empty <ref resolved='predef::MIME.reconstruct_partial.collection'>collection</ref> is passed in, or one that contains
     messages which are not of type <tt>message/partial</tt>, or parts of
     different fragmented messages.</p>
</text></group><group><value><minvalue>1</minvalue></value><text><p>If more fragments are needed to reconstruct the entire message, the
     number of additional messages needed is returned.</p>
</text></group><group><value>-1</value><text><p>If more fragments are needed, but the function can't determine
     exactly how many.</p>
</text></group></int>
</text><group><note/><text><p>Note that the returned message may in turn be a part of another,
 larger, fragmented message.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MIME.Message.is_partial'>MIME.Message-&gt;is_partial()</ref></p>
</text></group></doc>
<method name='reconstruct_partial'><source-position first-line='1147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/MIME.pmod/module.pmod'/>
<arguments><argument name='collection'><type><array><valuetype><object resolved='predef::MIME.reconstruct_partial'/></valuetype></array></type></argument></arguments>
<returntype><or><int/><object resolved='predef::MIME.reconstruct_partial'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode_base64'><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 resolved='predef::MIME.decode'>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-type='method' homogen-name='encode_base64'><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 resolved='predef::MIME.encode'>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-type='method' homogen-name='decode_qp'><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 resolved='predef::MIME.decode'>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-type='method' homogen-name='encode_qp'><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 resolved='predef::MIME.encode'>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-type='method' homogen-name='decode_uue'><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 resolved='predef::MIME.decode'>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-type='method' homogen-name='encode_uue'><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 resolved='predef::MIME.encode'>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-type='method' homogen-name='tokenize'><doc><text><p>A structured header field, as specified by RFC822, is constructed from
 a sequence of lexical elements.</p>
<p> These 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><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 RFC1521
 (i.e. <expr>"&lt;", "&gt;", "@", ",", ";", ":", "\", "/", "?", "="</expr>),
 and not the set specified in RFC822.</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 resolved='predef::MIME.decode_words_tokenized_remapped'>decode_words_tokenized_remapped()</ref>.</p>
</text></group></doc>
<method name='tokenize'>
<arguments><argument name='header'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tokenize_labled'><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>
<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><seealso/><text><p><ref resolved='predef::MIME.quote'>MIME.quote()</ref>, <ref resolved='predef::MIME.tokenize'>tokenize()</ref>,
   <ref resolved='predef::MIME.decode_words_tokenized_labled_remapped'>decode_words_tokenized_labled_remapped()</ref></p>
</text></group></doc>
<method name='tokenize_labled'>
<arguments><argument name='header'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='quote'><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-type='method' homogen-name='quote_labled'><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='ext_to_media_type' homogen-type='method'><doc><text><p>Returns the MIME media type for the provided filename <ref resolved='predef::MIME.ext_to_media_type.extension'>extension</ref>.
 Currently 469 file extensions are known to this method. Zero will
 be returned on unknown file extensions.</p>
</text></doc>
<method name='ext_to_media_type'>
<arguments><argument name='extension'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup></module>



<module name='Web'>

<module name='Crawler'><doc><text><p>This module implements a generic web crawler.</p>
<p> Features:</p>
<dl><group><item/><text><p>Fully asynchronous operation (Several hundred simultaneous requests)</p>
</text></group><group><item/><text><p>Supports the /robots.txt exclusion standard</p>
</text></group><group><item/><text><p>Extensible</p>
<dl><group><item/><text><p>URI Queues</p>
</text></group><group><item/><text><p>Allow/Deny rules</p>
</text></group></dl></text></group><group><item/><text><p>Configurable</p>
<dl><group><item/><text><p>Number of concurrent fetchers</p>
</text></group><group><item/><text><p>Bits per second (bandwidth throttling)</p>
</text></group><group><item/><text><p>Number of concurrent fetchers per host</p>
</text></group><group><item/><text><p>Delay between fetches from the same host</p>
</text></group></dl></text></group><group><item/><text><p>Supports HTTP and HTTPS</p>
</text></group></dl>
</text></doc>

<class name='Stats'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>Statistics.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='window_width'><type><int/></type></variable>
<variable name='granularity'><type><int/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='window_width'><type><int/></type></argument><argument name='granularity'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bytes_read_callback' homogen-type='method'><doc><text><p>This callback is called when data has arrived for a presently crawled
 URI, but no more often than once a second.</p>
</text></doc>
<method name='bytes_read_callback'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='uri'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument><argument name='num_bytes_read'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close_callback' homogen-type='method'><doc><text><p>This callback is called whenever the crawling of a URI is finished or
 fails.</p>
</text></doc>
<method name='close_callback'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='uri'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Policy'><source-position first-line='138' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>The crawler policy object.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='max_concurrent_fetchers'><doc><text><p>Maximum number of fetchers. Defaults to 100.</p>
</text></doc>
<variable name='max_concurrent_fetchers'><source-position first-line='141' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='max_bits_per_second_total'><doc><text><p>Maximum number of bits per second. Defaults to off (0).</p>
</text></doc>
<variable name='max_bits_per_second_total'><source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='max_bits_per_second_per_host'><doc><text><p>Maximum number of bits per second, per host. Defaults to off (0).</p>
</text></doc>
<variable name='max_bits_per_second_per_host'><source-position first-line='147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='bandwidth_throttling_floating_window_width'><doc><text><p>Bandwidth throttling floating window width. Defaults to 30.</p>
</text></doc>
<variable name='bandwidth_throttling_floating_window_width'><source-position first-line='150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='max_concurrent_fetchers_per_host'><doc><text><p>Maximum concurrent fetchers per host. Defaults to 1.</p>
</text></doc>
<variable name='max_concurrent_fetchers_per_host'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='min_delay_per_host'><doc><text><p>Minimum delay per host. Defaults to 0.</p>
</text></doc>
<variable name='min_delay_per_host'><source-position first-line='156' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><type><int/></type></variable>
</docgroup>
</class>

<class name='Queue'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>A crawler queue.
 Does not need to be reentrant safe. The Crawler always runs
 in just one thread.</p>
</text></doc><docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get the next URI to index.
 Returns -1 if there are no URIs to index at the time of the function call,
 with respect to bandwidth throttling and other limits.
 Returns 0 if there are no more URIs to index.</p>
</text></doc>
<method name='get'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments/>
<returntype><or><int/><object resolved='predef::Standards.URI'>Standards.URI</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='put' homogen-type='method'><doc><text><p>Put one or several URIs in the queue.
 Any URIs that were already present in the queue are silently
 disregarded.</p>
</text></doc>
<method name='put'><source-position first-line='174' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='uri'><type><or><string/><array><valuetype><string/></valuetype></array><object resolved='predef::Standards.URI'>Standards.URI</object><array><valuetype><object resolved='predef::Standards.URI'>Standards.URI</object></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Rule'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>Abstract rule class.</p>
</text></doc><docgroup homogen-name='check' homogen-type='method'><doc/>
<method name='check'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='uri'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='GlobRule'><source-position first-line='232' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>A rule that uses glob expressions</p>
</text><group><param name='pattern'/><text><p>a glob pattern that the rule will match against.</p>
</text></group><group><example/><text><p>GlobRule("http://pike.ida.liu.se/*.xml");</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Rule'><doc>
</doc>
<inherit name='Rule'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><classname resolved='predef::Web.Crawler.Rule'>Rule</classname></inherit>
</docgroup>
<docgroup><doc>
</doc>
<variable name='pattern'><type><string/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='pattern'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='RegexpRule'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>A rule that uses <ref resolved='predef::Regexp'>Regexp</ref> expressions</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Rule'><doc>
</doc>
<inherit name='Rule'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><classname resolved='predef::Web.Crawler.Rule'>Rule</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='re'/><text><p>a string describing the <ref resolved='predef::Regexp'>Regexp</ref> expression</p>
</text></group></doc>
<method name='create'><source-position first-line='252' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='re'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='RuleSet'><source-position first-line='264' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>A set of rules</p>
</text></doc><docgroup homogen-name='add_rule' homogen-type='method'><doc><text><p>add a rule to the ruleset</p>
</text></doc>
<method name='add_rule'><source-position first-line='269' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='rule'><type><object resolved='predef::Web.Crawler.Rule'>Rule</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_rule' homogen-type='method'><doc><text><p>remove a rule from the ruleset</p>
</text></doc>
<method name='remove_rule'><source-position first-line='275' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='rule'><type><object resolved='predef::Web.Crawler.Rule'>Rule</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='MySQLQueue'><source-position first-line='290' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><docgroup homogen-type='inherit' homogen-name='Queue'><doc>
</doc>
<inherit name='Queue'><source-position first-line='301' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><classname resolved='predef::Web.Crawler.Queue'>Queue</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='304' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='_stats'><type><object resolved='predef::Web.Crawler.Stats'>Stats</object></type></argument><argument name='_policy'><type><object resolved='predef::Web.Crawler.Policy'>Policy</object></type></argument><argument name='_host'><type><string/></type></argument><argument name='_table'><type><string/></type></argument><argument name='_allow'><type><or><void/><object resolved='predef::Web.Crawler.RuleSet'>RuleSet</object></or></type></argument><argument name='_deny'><type><or><void/><object resolved='predef::Web.Crawler.RuleSet'>RuleSet</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='MemoryQueue'><source-position first-line='409' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><doc><text><p>Memory queue</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Queue'><doc>
</doc>
<inherit name='Queue'><source-position first-line='425' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><classname resolved='predef::Web.Crawler.Queue'>Queue</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='417' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='_stats'><type><object resolved='predef::Web.Crawler.Stats'>Stats</object></type></argument><argument name='_policy'><type><object resolved='predef::Web.Crawler.Policy'>Policy</object></type></argument><argument name='_allow'><type><object resolved='predef::Web.Crawler.RuleSet'>RuleSet</object></type></argument><argument name='_deny'><type><object resolved='predef::Web.Crawler.RuleSet'>RuleSet</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get the next URI to index.
 Returns -1 if there are no URIs to index at the time of the function call,
 with respect to bandwidth throttling, outstanding requests and other limits.
 Returns 0 if there are no more URIs to index.</p>
</text></doc>
<method name='get'><source-position first-line='453' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments/>
<returntype><or><int/><object resolved='predef::Standards.URI'>Standards.URI</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='put' homogen-type='method'><doc><text><p>Put one or several URIs in the queue.
 Any URIs that were already present in the queue are silently
 disregarded.</p>
</text></doc>
<method name='put'><source-position first-line='475' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='uri'><type><or><string/><array><valuetype><string/></valuetype></array><object resolved='predef::Standards.URI'>Standards.URI</object><array><valuetype><object resolved='predef::Standards.URI'>Standards.URI</object></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='ComplexQueue'><source-position first-line='506' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><docgroup homogen-type='inherit' homogen-name='Queue'><doc>
</doc>
<inherit name='Queue'><source-position first-line='508' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><classname resolved='predef::Web.Crawler.Queue'>Queue</classname></inherit>
</docgroup>
<docgroup><doc>
</doc>
<variable name='stats'><type><object resolved='predef::Web.Crawler.Stats'>Stats</object></type></variable>
<variable name='policy'><type><object resolved='predef::Web.Crawler.Policy'>Policy</object></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='stats'><type><object resolved='predef::Web.Crawler.Stats'>Stats</object></type></argument><argument name='policy'><type><object resolved='predef::Web.Crawler.Policy'>Policy</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Crawler'><source-position first-line='735' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='_page_cb'/><text><p>function called when a page is retreived. Arguments are: 
    Standards.URI uri, mixed data, mapping headers, mixed ... args. 
    should return an array containing additional links found within data
    that will be analyzed for insertion into the crawler queue (assuming
    they are allowed by the allow/deny rulesets.</p>
</text></group><group><param name='_error_cb'/><text><p>function called when an error is received from a server. Arguments are:
    Standards.URI real_uri, int status_code, mapping headers,
    mixed ... args. Returns void.</p>
</text></group><group><param name='_done_cb'/><text><p>function called when crawl is complete. Accepts mixed ... args and 
    returns void.</p>
</text></group><group><param name='_prepare_cb'/><text><p>argument called before a uri is retrieved. may be used to alter
    the request. Argument is Standards.URI uri. Returns array with
    element 0 of Standards.URI uri, element 1 is a header mapping for the
    outgoing request.</p>
</text></group><group><param name='start_uri'/><text><p>location to start the crawl from.</p>
</text></group><group><param name='_args'/><text><p>optional arguments sent as the last argument to the callback 
    functions.</p>
</text></group></doc>
<method name='create'><source-position first-line='924' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/Crawler.pmod'/>
<arguments><argument name='_queue'><type><object resolved='predef::Web.Crawler.Queue'>Queue</object></type></argument><argument name='_page_cb'><type><function/></type></argument><argument name='_error_cb'><type><function/></type></argument><argument name='_done_cb'><type><function/></type></argument><argument name='_prepare_cb'><type><function/></type></argument><argument name='start_uri'><type><or><string/><array><valuetype><string/></valuetype></array><object resolved='predef::Standards.URI'>Standards.URI</object><array><valuetype><object resolved='predef::Standards.URI'>Standards.URI</object></valuetype></array></or></type></argument><argument name='_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='RSS'><doc><text><p>Represents a RSS (RDF Site Summary) file.</p>
</text></doc>

<class name='Thing'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><modifiers><static/></modifiers><doc><text><p>The base class for the RSS resources.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates an RSS resource.</p>
</text></doc>
<method name='create'>
<arguments><argument name='about'><type><string/></type></argument><argument name='attributes'><type><mapping/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='me'><type><object resolved='predef::Web.RDF.Resource'>.RDF.Resource</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_id' homogen-type='method'><doc><text><p>Returns the <ref resolved='predef::Web.RDF.Resource'>RDF.Resource</ref> that identifies this RSS resource.</p>
</text></doc>
<method name='get_id'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/>
<arguments/>
<returntype><object resolved='predef::Web.RDF.Resource'>.RDF.Resource</object></returntype>
</method>
</docgroup>
</class>

<class name='Image'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><doc><text><p>Represents an RSS image resource.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Thing'><doc>
</doc>
<inherit name='Thing'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><classname resolved='predef::Web.RSS.Thing'>Thing</classname></inherit>
</docgroup>
<docgroup homogen-type='variable'><doc/>
<variable name='title'><type><string/></type></variable>
<variable name='url'><type><string/></type></variable>
<variable name='link'><type><string/></type></variable>
</docgroup>
</class>

<class name='Item'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><doc><text><p>Represents an RSS item resource.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Thing'><doc>
</doc>
<inherit name='Thing'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><classname resolved='predef::Web.RSS.Thing'>Thing</classname></inherit>
</docgroup>
<docgroup homogen-type='variable'><doc/>
<variable name='title'><type><string/></type></variable>
<variable name='link'><type><string/></type></variable>
<variable name='description'><type><string/></type></variable>
</docgroup>
</class>

<class name='Textinput'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><doc><text><p>Represents an RSS textinput resource.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Thing'><doc>
</doc>
<inherit name='Thing'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><classname resolved='predef::Web.RSS.Thing'>Thing</classname></inherit>
</docgroup>
<docgroup homogen-type='variable'><doc/>
<variable name='title'><type><string/></type></variable>
<variable name='description'><type><string/></type></variable>
<variable name='name'><type><string/></type></variable>
<variable name='link'><type><string/></type></variable>
</docgroup>
</class>

<class name='Channel'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><doc><text><p>Represents an RSS channel.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Thing'><doc>
</doc>
<inherit name='Thing'><source-position first-line='146' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><classname resolved='predef::Web.RSS.Thing'>Thing</classname></inherit>
</docgroup>
<docgroup homogen-type='variable'><doc/>
<variable name='title'><type><string/></type></variable>
<variable name='link'><type><string/></type></variable>
<variable name='description'><type><string/></type></variable>
<variable name='image'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></variable>
<variable name='textinput'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></variable>
<variable name='items'><type><array><valuetype><object resolved='predef::Web.RSS.Item'>Item</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Adds the <ref resolved='predef::Web.RSS.Item'>Item</ref> <ref resolved='predef::Web.RSS.Channel.add_item.i'>i</ref> to the <ref resolved='predef::Web.RSS.Channel'>Channel</ref>.</p>
</text></doc>
<method name='add_item'><source-position first-line='195' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Web.RSS.Item'>Item</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_item' homogen-type='method'><doc><text><p>Removes the <ref resolved='predef::Web.RSS.Item'>Item</ref> <ref resolved='predef::Web.RSS.Channel.remove_item.i'>i</ref> from the <ref resolved='predef::Web.RSS.Channel'>Channel</ref>.</p>
</text></doc>
<method name='remove_item'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Web.RSS.Item'>Item</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Index'><source-position first-line='210' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><doc><text><p>Represents the top level of an RSS index.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='rdf'><doc><text><p>The underlying RDF representation of the RSS index.</p>
</text></doc>
<variable name='rdf'><source-position first-line='211' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><type><object resolved='predef::Web.RDF'>.RDF</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='channels'><doc><text><p>The RSS channels.</p>
</text></doc>
<variable name='channels'><source-position first-line='213' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><type><array><valuetype><object resolved='predef::Web.RSS.Channel'>Channel</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='images'><doc><text><p>The RSS images.</p>
</text></doc>
<variable name='images'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><type><array><valuetype><object resolved='predef::Web.RSS.Image'>Image</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='items'><doc><text><p>The RSS items.</p>
</text></doc>
<variable name='items'><source-position first-line='215' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><type><array><valuetype><object resolved='predef::Web.RSS.Item'>Item</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='textinputs'><doc><text><p>The RSS textinputs.</p>
</text></doc>
<variable name='textinputs'><source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/><type><array><valuetype><object resolved='predef::Web.RSS.Textinput'>Textinput</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='219' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/>
<arguments><argument name='_rdf'><type><or><object resolved='predef::Web.RDF'>.RDF</object><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='parse_xml' homogen-type='method'><doc><text><p>Returns an <ref resolved='predef::Web.RSS.Index'>Index</ref> object, populated with the rss information
 given in the rss file <ref resolved='predef::Web.RSS.parse_xml.n'>n</ref>.</p>
</text></doc>
<method name='parse_xml'><source-position first-line='246' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RSS.pmod'/>
<arguments><argument name='n'><type><or><string/><object resolved='predef::Parser.XML.Tree.Node'>Parser.XML.Tree.Node</object></or></type></argument><argument name='base'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Web.RSS.Index'>Index</object></returntype>
</method>
</docgroup>
</module>

<class name='OWL'><doc><text><p>Represents an RDF tuple set from an OWL perspective.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='RDFS'><doc>
</doc>
<inherit name='RDFS'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/OWL.pike'/><classname>.RDFS</classname></inherit>
</docgroup>
</class>

<class name='RDF'><doc><text><p>Represents an RDF domain which can contain any number of complete
 statements.</p>
</text></doc>

<class name='Resource'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><doc><text><p>Instances of this class represents resources as defined in RDF:
 All things being described by RDF expressions are called resources. A
 resource may be an entire Web page; such as the HTML document
 "http://www.w3.org/Overview.html" for example. A resource may be a
 part of a Web page; e.g. a specific HTML or XML element within the
 document source. A resource may also be a whole collection of pages;
 e.g. an entire Web site. A resource may also be an object that is
 not directly accessible via the Web; e.g. a printed book.
 This general resource is anonymous and has no URI or literal id.</p>
</text><group><note/><text><p>Resources instantiated from this class should not be used in
   other RDF domain objects.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Web.RDF.URIResource'>URIResource</ref>, <ref resolved='predef::Web.RDF.LiteralResource'>LiteralResource</ref></p>
</text></group></doc><docgroup homogen-name='get_n_triple_name' homogen-type='method'><doc><text><p>Returns the nodes' N-triple serialized ID.</p>
</text></doc>
<method name='get_n_triple_name'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_3_tuple_name' homogen-type='method'><doc><text><p>Returns the nodes' 3-tuple serialized ID.</p>
</text></doc>
<method name='get_3_tuple_name'><source-position first-line='63' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='LiteralResource'><source-position first-line='78' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><doc><text><p>Resource identified by literal.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Resource'><doc>
</doc>
<inherit name='Resource'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><classname resolved='predef::Web.RDF.Resource'>Resource</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='datatype'><doc><text><p>Used to contain rdf:datatype value.</p>
</text></doc>
<variable name='datatype'><source-position first-line='84' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The resource will be identified by <ref resolved='predef::Web.RDF.LiteralResource.create.literal'>literal</ref>.</p>
</text></doc>
<method name='create'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><modifiers><static/></modifiers>
<arguments><argument name='literal'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xml' homogen-type='method'><doc><text><p>Returns the literal as an XML string.</p>
</text></doc>
<method name='get_xml'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_literal' homogen-type='method'><doc><text><p>Returns the literal string.</p>
</text></doc>
<method name='get_literal'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='URIResource'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><doc><text><p>Resource identified by URI.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Resource'><doc>
</doc>
<inherit name='Resource'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><classname resolved='predef::Web.RDF.Resource'>Resource</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates an URI resource with the <ref resolved='predef::Web.RDF.URIResource.create.uri'>uri</ref> as identifier.</p>
</text><group><throws/><text><p>Throws an error if another resource with the
   same URI already exists in the RDF domain.</p>
</text></group></doc>
<method name='create'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><modifiers><static/></modifiers>
<arguments><argument name='uri'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_uri' homogen-type='method'><doc><text><p>Returns the URI the resource references to.</p>
</text></doc>
<method name='get_uri'><source-position first-line='139' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_qname' homogen-type='method'><doc><text><p>Returns the qualifying name, or zero.</p>
</text></doc>
<method name='get_qname'><source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='ns'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_namespace' homogen-type='method'><doc><text><p>Returns the namespace this resource URI references to.</p>
</text></doc>
<method name='get_namespace'><source-position first-line='155' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='RDFResource'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><doc><text><p>Resource used for RDF-technical reasons like reification.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='URIResource'><doc>
</doc>
<inherit name='URIResource'><source-position first-line='177' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><classname resolved='predef::Web.RDF.URIResource'>URIResource</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The resource will be identified by the identifier <ref resolved='predef::Web.RDF.RDFResource.create.rdf_id'>rdf_id</ref></p>
</text></doc>
<method name='create'><source-position first-line='180' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><modifiers><static/></modifiers>
<arguments><argument name='rdf_id'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_qname' homogen-type='method'><doc><text><p>Returns the qualifying name.</p>
</text></doc>
<method name='get_qname'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='ns'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='variable' homogen-name='rdf_Statement'><doc><text><p>Statement resource.</p>
</text></doc>
<variable name='rdf_Statement'><source-position first-line='194' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_predicate'><doc><text><p>predicate resource.</p>
</text></doc>
<variable name='rdf_predicate'><source-position first-line='195' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_subject'><doc><text><p>subject resource.</p>
</text></doc>
<variable name='rdf_subject'><source-position first-line='196' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_object'><doc><text><p>object resource.</p>
</text></doc>
<variable name='rdf_object'><source-position first-line='197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_type'><doc><text><p>type resource.</p>
</text></doc>
<variable name='rdf_type'><source-position first-line='198' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_Seq'><doc><text><p>Seq resource.</p>
</text></doc>
<variable name='rdf_Seq'><source-position first-line='200' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_first'><doc><text><p>first resource.</p>
</text></doc>
<variable name='rdf_first'><source-position first-line='202' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_rest'><doc><text><p>rest resource.</p>
</text></doc>
<variable name='rdf_rest'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rdf_nil'><doc><text><p>nil resource.</p>
</text></doc>
<variable name='rdf_nil'><source-position first-line='204' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><type><object resolved='predef::Web.RDF.RDFResource'>RDFResource</object></type></variable>
</docgroup>
<docgroup homogen-name='add_statement' homogen-type='method'><doc><text><p>Adds a statement to the RDF set.</p>
</text><group><throws/><text><p>Throws an exception if any argument isn't a Resouce object.</p>
</text></group></doc>
<method name='add_statement'><source-position first-line='222' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_statement' homogen-type='method'><doc><text><p>Returns 1 if the RDF domain contains the relation {subj, pred, obj},
 otherwise 0.</p>
</text></doc>
<method name='has_statement'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_statement' homogen-type='method'><doc><text><p>Removes the relation from the RDF set. Returns 1 if the relation
 did exist in the RDF set.</p>
</text></doc>
<method name='remove_statement'><source-position first-line='244' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='reify_low' homogen-type='method'><doc><text><p>Reifies the statement <tt>{ pred, subj, obj }</tt> and returns
 the resource that denotes the reified statement. There will
 not be any check to see if the unreified statement is already
 in the domain, making it possible to define the relation twice.
 The original statement will not be removed.</p>
</text><group><returns/><text><p>The subject of the reified statement.</p>
</text></group></doc>
<method name='reify_low'><source-position first-line='260' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF.Resource'>Resource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_reify' homogen-type='method'><doc><text><p>Returns a resource that is the subject of the reified statement
 {subj, pred, obj}, if such a resource exists in the RDF domain.</p>
</text></doc>
<method name='get_reify'><source-position first-line='271' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF.Resource'>Resource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reify' homogen-type='method'><doc><text><p>Returns the result of <ref resolved='predef::Web.RDF.get_reify'>get_reify</ref>, if any. Otherwise calls
 <ref resolved='predef::Web.RDF.reify_low'>reify_low</ref> followed by <ref resolved='predef::Web.RDF.remove_statement'>remove_statement</ref> of the provided
 statement {subj, pred, obj}.</p>
</text><group><returns/><text><p>The subject of the reified statement.</p>
</text></group></doc>
<method name='reify'><source-position first-line='285' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='pred'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument><argument name='obj'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF.Resource'>Resource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='dereify' homogen-type='method'><doc><text><p>Turns the reified statement <ref resolved='predef::Web.RDF.dereify.r'>r</ref> into a normal statement, if possible.</p>
</text><group><returns/><text><p>1 for success, 0 for failure.</p>
</text></group></doc>
<method name='dereify'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='r'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='dereify_all' homogen-type='method'><doc><text><p>Dereifies as many statements as possible. Returns the number of
 dereified statements.</p>
</text></doc>
<method name='dereify_all'><source-position first-line='311' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_properties' homogen-type='method'><doc><text><p>Returns all properties in the domain, e.g. all resources that
 has been used as predicates.</p>
</text></doc>
<method name='get_properties'><source-position first-line='325' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Web.RDF.Resource'>Resource</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_subject_map' homogen-type='method'><doc><text><p>Returns a mapping with all the domains subject resources as
 indices and a mapping with that subjects predicates and objects
 as value.</p>
</text></doc>
<method name='get_subject_map'><source-position first-line='332' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><mapping><indextype><object resolved='predef::Web.RDF.Resource'>Resource</object></indextype><valuetype><mapping><indextype><object resolved='predef::Web.RDF.Resource'>Resource</object></indextype><valuetype><array><valuetype><object resolved='predef::Web.RDF.Resource'>Resource</object></valuetype></array></valuetype></mapping></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_resource' homogen-type='method'><doc><text><p>Returns an RDF resource with the given URI as identifier,
 or zero.</p>
</text></doc>
<method name='get_resource'><source-position first-line='349' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='uri'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF.URIResource'>URIResource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_resource' homogen-type='method'><doc><text><p>Returns an RDF resource with the given URI as identifier,
 or if no such resrouce exists, creates it and returns it.</p>
</text></doc>
<method name='make_resource'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='uri'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF.URIResource'>URIResource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_statements' homogen-type='method'><doc><text><p>Returns an array with the statements that matches the given
 subject <ref resolved='predef::Web.RDF.find_statements.subj'>subj</ref>, predicate <ref resolved='predef::Web.RDF.find_statements.pred'>pred</ref> and object <ref resolved='predef::Web.RDF.find_statements.obj'>obj</ref>. Any
 and all of the resources may be zero to disregard from matching
 that part of the statement, i.e. find_statements(0,0,0) returns
 all statements in the domain.</p>
</text><group><returns/><text><p>An array with arrays of three elements.</p>
<array><group><elem><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type><index>0</index></elem><text><p>The subject of the statement</p>
</text></group><group><elem><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type><index>1</index></elem><text><p>The predicate of the statement</p>
</text></group><group><elem><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type><index>2</index></elem><text><p>The object of the statement</p>
</text></group></array>
</text></group></doc>
<method name='find_statements'><source-position first-line='376' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='subj'><type><or><object resolved='predef::Web.RDF.Resource'>Resource</object><int><min>0</min><max>0</max></int></or></type></argument><argument name='pred'><type><or><object resolved='predef::Web.RDF.Resource'>Resource</object><int><min>0</min><max>0</max></int></or></type></argument><argument name='obj'><type><or><object resolved='predef::Web.RDF.Resource'>Resource</object><int><min>0</min><max>0</max></int></or></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><object resolved='predef::Web.RDF.Resource'>Resource</object></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_subject' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if resource <ref resolved='predef::Web.RDF.is_subject.r'>r</ref> is used as a subject, otherwise
 <expr>0</expr>.</p>
</text></doc>
<method name='is_subject'><source-position first-line='416' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='r'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_predicate' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if resource <ref resolved='predef::Web.RDF.is_predicate.r'>r</ref> is used as a predicate,
 otherwise <expr>0</expr>.</p>
</text></doc>
<method name='is_predicate'><source-position first-line='422' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='r'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_object' homogen-type='method'><doc><text><p>Returns <expr>1</expr> if resource <ref resolved='predef::Web.RDF.is_object.r'>r</ref> is used as an object, otherwise
 <expr>0</expr>.</p>
</text></doc>
<method name='is_object'><source-position first-line='428' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='r'><type><object resolved='predef::Web.RDF.Resource'>Resource</object></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_3_tuples' homogen-type='method'><doc><text><p>Returns a 3-tuple serialization of all the statements in
 the RDF set.</p>
</text></doc>
<method name='get_3_tuples'><source-position first-line='439' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_n_triples' homogen-type='method'><doc><text><p>Returns an N-triples serialization of all the statements in
 the RDF set.</p>
</text></doc>
<method name='get_n_triples'><source-position first-line='460' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_n_triples' homogen-type='method'><doc><text><p>Parses an N-triples string and adds the found statements
 to the RDF set. Returns the number of added relations.</p>
</text><group><throws/><text><p>The parser will throw errors on invalid N-triple input.</p>
</text></group></doc>
<method name='parse_n_triples'><source-position first-line='477' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_n_triple_string' homogen-type='method'><doc><text><p>Decodes a string that has been encoded for N-triples
 serialization.</p>
</text><group><bugs/><text><p>Doesn't correctly decode backslashes that has been
   encoded with with \u- or \U-notation.</p>
</text></group></doc>
<method name='decode_n_triple_string'><source-position first-line='609' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_n_triple_string' homogen-type='method'><doc><text><p>Encodes a string for use as tring in N-triples serialization.</p>
</text></doc>
<method name='encode_n_triple_string'><source-position first-line='629' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_xml' homogen-type='method'><doc><text><p>Adds the statements represented by the string or tree <ref resolved='predef::Web.RDF.parse_xml.in'>in</ref> to the
 RDF domain. If <ref resolved='predef::Web.RDF.parse_xml.in'>in</ref> is a tree the in-node should be the <tt>RDF</tt>
 node of the XML serialization. RDF documents take its default
 namespace from the URI of the document, so if the RDF document relies
 such ingenious mechanisms, pass the document URI in the <ref resolved='predef::Web.RDF.parse_xml.base'>base</ref>
 variable.</p>
</text></doc>
<method name='parse_xml'>
<arguments><argument name='in'><type><or><string/><object resolved='predef::Parser.XML.NSTree.NSNode'>Parser.XML.NSTree.NSNode</object></or></type></argument><argument name='base'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF'>Web.RDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xml' homogen-type='method'><doc><text><p>Serialize the RDF domain as an XML string.</p>
</text></doc>
<method name='get_xml'><source-position first-line='1047' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Returns the number of statements in the RDF domain.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='1057' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Web.pmod/RDF.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`|' homogen-type='method'><doc><text><p>Modifies the current object to create a union of the current object
 and the object <ref resolved='predef::Web.RDF.`|.x'>x</ref>.</p>
</text></doc>
<method name='`|'>
<arguments><argument name='x'><type><object resolved='predef::Web.RDF'>Web.RDF</object></type></argument></arguments>
<returntype><object resolved='predef::Web.RDF'>Web.RDF</object></returntype>
</method>
</docgroup>
</class></module>







<module name='Debug'><docgroup homogen-name='pp_memory_usage' homogen-type='method'><doc><text><p>Returns a pretty printed version of the
 output from <ref resolved='predef::Debug.memory_usage'>memory_usage</ref>.</p>
</text></doc>
<method name='pp_memory_usage'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>


<class name='Tracer'><doc><text><p>A class that when instatiated will turn on trace, and when it's
 destroyed will turn it off again.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Sets the level of debug trace to <ref resolved='predef::Debug.Tracer.create.level'>level</ref>.</p>
</text></doc>
<method name='create'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Tracer.pike'/>
<arguments><argument name='level'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Wrapper'><doc><text><p>This wrapper can be placed around another object to get
 printouts about what is happening to it. Only a few LFUNs
 are currently supported.</p>
</text><group><example/><text><p>&gt; object x=Debug.Wrapper(Crypto.MD5());
  Debug.Wrapper is proxying ___Nettle.MD5_State()
  &gt; x-&gt;name();
  ___Nettle.MD5_State()-&gt;name
  (1) Result: "md5"
  &gt; !x;
  !___Nettle.MD5_State()
  (2) Result: 0</p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments><argument name='x'><type><object resolved='predef::Debug.Wrapper.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc/>
<method name='`!'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc/>
<method name='`[]'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments><argument name='x'><type><mixed/></type></argument><argument name='y'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-&gt;' homogen-type='method'><doc/>
<method name='`-&gt;'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc/>
<method name='_indices'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc/>
<method name='_values'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc/>
<method name='_sizeof'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Debug.pmod/Wrapper.pike'/>
<arguments><argument name='c'><type><int/></type></argument><argument name='attrs'><type><or><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Subject'><doc><text><p>This is a probe subject which you can send in somewhere to
 get probed (not to be confused with a probe object, which
 does some active probing). All calls to LFUNs will be printed
 to stderr. It is possible to name the subject by passing a
 string as the first and only argument when creating the subject
 object.</p>
</text><group><example/><text><p>&gt; object s = Debug.Subject();
 create()
 &gt; random(s);
 _random()
 (1) Result: 0
 &gt; abs(s);
 `&lt;(0)
 _sprintf(79, ([ "indent":2 ]))
 (2) Result: Debug.Subject
 &gt; abs(class { inherit Debug.Subject; int `&lt;(mixed ... args) { return 1; } }());
 create()
 `-()
 destroy()
 (3) Result: 0
 &gt; pow(s,2);
 `[]("pow")
 Attempt to call the NULL-value
 Unknown program: 0(2)</p>
</text></group></doc></class><docgroup homogen-name='describe_program' homogen-type='method'><doc><text><p>Debug function for showing the symbol table of a program.</p>
</text></doc>
<method name='describe_program'>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><int/><string/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup><docgroup homogen-name='verify_internals' homogen-type='method'><doc><text><p>Perform sanity checks.</p>
<p>   This function goes through most of the internal Pike structures and
   generates a fatal error if one of them is found to be out of order.
   It is only used for debugging.</p>
</text><group><note/><text><p>This function does a more thorough check if the Pike runtime has
   been compiled with RTL debug.</p>
</text></group></doc>
<method name='verify_internals'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='debug' homogen-type='method'><doc><text><p>Set the run-time debug level.</p>
</text><group><returns/><text><p>The old debug level will be returned.</p>
</text></group><group><note/><text><p>This function is only available if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='debug'>
<arguments><argument name='level'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='optimizer_debug' homogen-type='method'><doc><text><p>Set the optimizer debug level.</p>
</text><group><returns/><text><p>The old optimizer debug level will be returned.</p>
</text></group><group><note/><text><p>This function is only available if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='optimizer_debug'>
<arguments><argument name='level'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='assembler_debug' homogen-type='method'><doc><text><p>Set the assembler debug level.</p>
</text><group><returns/><text><p>The old assembler debug level will be returned.</p>
</text></group><group><note/><text><p>This function is only available if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='assembler_debug'>
<arguments><argument name='level'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='compiler_trace' homogen-type='method'><doc><text><p>Set the compiler trace level.</p>
</text><group><returns/><text><p>The old compiler trace level will be returned.</p>
</text></group><group><note/><text><p>This function is only available if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='compiler_trace'>
<arguments><argument name='level'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='memory_usage' homogen-type='method'><doc><text><p>Check memory usage.</p>
<p>   This function is mostly intended for debugging. It delivers a mapping
   with information about how many arrays/mappings/strings etc. there
   are currently allocated and how much memory they use.</p>
</text><group><note/><text><p>Exactly what this function returns is version dependant.</p>
</text></group><group><seealso/><text><p><ref>_verify_internals()</ref></p>
</text></group></doc>
<method name='memory_usage'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup><docgroup homogen-name='reset_dmalloc' homogen-type='method'><doc><group><note/><text><p>Only available when compiled with dmalloc.</p>
</text></group></doc>
<method name='reset_dmalloc'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='dmalloc_set_name' homogen-type='method'><doc><group><note/><text><p>Only available when compiled with dmalloc.</p>
</text></group></doc>
<method name='dmalloc_set_name'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='linenumber'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='list_open_fds' homogen-type='method'><doc><group><note/><text><p>Only available when compiled with dmalloc.</p>
</text></group></doc>
<method name='list_open_fds'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='locate_references' homogen-type='method'><doc><text><p>This function is mostly intended for debugging. It will search through
   all data structures in Pike looking for <ref resolved='predef::Debug.locate_references.o'>o</ref> and print the
   locations on stderr. <ref resolved='predef::Debug.locate_references.o'>o</ref> can be anything but <expr>int</expr> or
   <expr>float</expr>.</p>
</text><group><note/><text><p>This function only exists if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='locate_references'>
<arguments><argument name='o'><type><or><string/><array/><mapping/><multiset/><function/><object resolved='predef::Debug.locate_references'/><program/><type><mixed/></type></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='describe' homogen-type='method'><doc><text><p>Prints out a description of the thing <ref resolved='predef::Debug.describe.x'>x</ref> to standard error.
   The description contains various internal info associated with
   <ref resolved='predef::Debug.describe.x'>x</ref>.</p>
</text><group><note/><text><p>This function only exists if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='describe'>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='gc_set_watch' homogen-type='method'><doc><text><p>Sets a watch on the given thing, so that the gc will print a
   message whenever it's encountered. Intended to be used together
   with breakpoints to debug the garbage collector.</p>
</text><group><note/><text><p>This function only exists if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='gc_set_watch'>
<arguments><argument name='x'><type><or><array/><multiset/><mapping/><object resolved='predef::Debug.gc_set_watch'/><function/><program/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='dump_backlog' homogen-type='method'><doc><text><p>Dumps the 1024 latest executed opcodes, along with the source
   code lines, to standard error. The backlog is only collected on
   debug level 1 or higher, set with <ref>_debug</ref> or with the <tt>-d</tt>
   argument on the command line.</p>
</text><group><note/><text><p>This function only exists if the Pike runtime has been compiled
   with RTL debug.</p>
</text></group></doc>
<method name='dump_backlog'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='gc_status' homogen-type='method'><doc><text><p>Get statistics from the garbage collector.</p>
</text><group><returns/><text><p>A mapping with the following content will be returned:</p>
<mapping><group><member><type><int/></type><index>"num_objects"</index></member><text><p>Number of arrays, mappings, multisets, objects and programs.</p>
</text></group><group><member><type><int/></type><index>"num_allocs"</index></member><text><p>Number of memory allocations since the last gc run.</p>
</text></group><group><member><type><int/></type><index>"alloc_threshold"</index></member><text><p>Threshold for "num_allocs" when another automatic gc run is
       scheduled.</p>
</text></group><group><member><type><float/></type><index>"projected_garbage"</index></member><text><p>Estimation of the current amount of garbage.</p>
</text></group><group><member><type><int/></type><index>"objects_alloced"</index></member><text><p>Decaying average over the number of allocated objects
       between gc runs.</p>
</text></group><group><member><type><int/></type><index>"objects_freed"</index></member><text><p>Decaying average over the number of freed objects in each gc
       run.</p>
</text></group><group><member><type><float/></type><index>"last_garbage_ratio"</index></member><text><p>Garbage ratio in the last gc run.</p>
</text></group><group><member><type><int/></type><index>"non_gc_time"</index></member><text><p>Decaying average over the CPU milliseconds spent outside the
       garbage collector.</p>
</text></group><group><member><type><int/></type><index>"gc_time"</index></member><text><p>Decaying average over the CPU milliseconds spent inside the
       garbage collector.</p>
</text></group><group><member><type><string/></type><index>"last_garbage_strategy"</index></member><text><p>The garbage accumulation goal that the gc aimed for when
       setting "alloc_threshold" in the last run. The value is
       either "garbage_ratio_low" or "garbage_ratio_high", which
       corresponds to the gc parameters with the same names in
       <ref resolved='predef::Pike.gc_parameters'>Pike.gc_parameters</ref>.</p>
</text></group><group><member><type><int/></type><index>"last_gc"</index></member><text><p>Time when the garbage-collector last ran.</p>
</text></group></mapping>
</text></group><group><seealso/><text><p><ref resolved='predef::gc'>gc()</ref>, <ref resolved='predef::Pike.gc_parameters'>Pike.gc_parameters()</ref></p>
</text></group></doc>
<method name='gc_status'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><or><int/><float/></or></valuetype></mapping></returntype>
</method>
</docgroup></module>













<module name='Remote'>

<class name='Call'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/><docgroup homogen-name='`()' homogen-type='method'><doc/>
<method name='`()'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sync' homogen-type='method'><doc/>
<method name='sync'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async' homogen-type='method'><doc/>
<method name='async'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exists' homogen-type='method'><doc/>
<method name='exists'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_async' homogen-type='method'><doc/>
<method name='is_async'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_async' homogen-type='method'><doc/>
<method name='set_async'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='a'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='objectid'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='connection'><type><object resolved='predef::Remote.Call.create'/></type></argument><argument name='context'><type><object resolved='predef::Remote.Call.create'/></type></argument><argument name='async'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Connection'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='nice'/><text><p>If set, no errors will be thrown.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='nice'><type><or><void/><int/></or></type></argument><argument name='max_call_threads'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>This function is called by clients to connect to a server.</p>
</text></doc>
<method name='connect'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='host'><type><string/></type></argument><argument name='port'><type><int/></type></argument><argument name='timeout'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_server' homogen-type='method'><doc><text><p>This function is called by servers when they have got a connection
 from a client. The first argument is the connection file object, and
 the second argument is the context to be used.</p>
</text></doc>
<method name='start_server'><source-position first-line='160' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Remote.Connection.start_server'/></type></argument><argument name='cx'><type><object resolved='predef::Remote.Connection.start_server'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_close_callback' homogen-type='method'><doc><text><p>Add a function that is called when the connection is closed.</p>
</text></doc>
<method name='add_close_callback'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='f'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_close_callback' homogen-type='method'><doc><text><p>Remove a function that is called when the connection is closed.</p>
</text></doc>
<method name='remove_close_callback'><source-position first-line='195' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='f'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the connection nicely, after waiting in outstanding calls in
 both directions.</p>
</text></doc>
<method name='close'><source-position first-line='202' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call_sync' homogen-type='method'><doc><text><p>Make a call and wait for the result</p>
</text></doc>
<method name='call_sync'><source-position first-line='575' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='data'><type><array/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call_async' homogen-type='method'><doc><text><p>Make a call but don't wait for the result</p>
</text></doc>
<method name='call_async'><source-position first-line='631' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='data'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_named_object' homogen-type='method'><doc><text><p>Get a named object provided by the server.</p>
</text></doc>
<method name='get_named_object'><source-position first-line='641' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Remote.Connection.get_named_object'/></returntype>
</method>
</docgroup>
</class>

<class name='Context'><source-position first-line='649' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/><docgroup homogen-name='id_for' homogen-type='method'><doc/>
<method name='id_for'><source-position first-line='662' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='thing'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='object_for' homogen-type='method'><doc/>
<method name='object_for'><source-position first-line='687' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='id'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Remote.Context.object_for'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='function_for' homogen-type='method'><doc/>
<method name='function_for'><source-position first-line='715' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='id'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Remote.Context.function_for'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc/>
<method name='encode'><source-position first-line='746' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc/>
<method name='decode'><source-position first-line='783' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_call' homogen-type='method'><doc/>
<method name='encode_call'><source-position first-line='806' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='o'><type><or><object resolved='predef::Remote.Context.encode_call'/><string/></or></type></argument><argument name='f'><type><or><string/><function/></or></type></argument><argument name='args'><type><array/></type></argument><argument name='type'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_call' homogen-type='method'><doc/>
<method name='decode_call'><source-position first-line='830' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='data'><type><array/></type></argument></arguments>
<returntype><or><function/><object resolved='predef::Remote.Context.decode_call'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_existp' homogen-type='method'><doc/>
<method name='decode_existp'><source-position first-line='864' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='data'><type><array/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc/>
<method name='add'><source-position first-line='895' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='o'><type><object resolved='predef::Remote.Context.add'/></type></argument><argument name='id'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe' homogen-type='method'><doc/>
<method name='describe'><source-position first-line='903' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='data'><type><array/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_server_context' homogen-type='method'><doc/>
<method name='set_server_context'><source-position first-line='936' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='ctx'><type><object resolved='predef::Remote.Context.set_server_context'/></type></argument><argument name='cn'><type><object resolved='predef::Remote.Context.set_server_context'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='943' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='b'><type><string/></type></argument><argument name='cn'><type><or><object resolved='predef::Remote.Context.create'/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Obj'><source-position first-line='952' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/><docgroup homogen-name='get_function' homogen-type='method'><doc/>
<method name='get_function'><source-position first-line='962' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc/>
<method name='`[]'><source-position first-line='971' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-&gt;' homogen-type='method'><doc/>
<method name='`-&gt;'><source-position first-line='977' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exists' homogen-type='method'><doc/>
<method name='exists'><source-position first-line='983' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Remote.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='id'><type><string/></type></argument><argument name='connection'><type><object resolved='predef::Remote.Obj.create'/></type></argument><argument name='context'><type><object resolved='predef::Remote.Obj.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>
<module name='Protocols'>
<source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<module name='HTTP'>
<source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<docgroup homogen-type='method'>
<method name='filename_to_type'>
   <returntype><string/></returntype>
   <arguments><argument name='filename'><type><string/></type></argument>

   </arguments>
</method><method name='extension_to_type'>
   <returntype><string/></returntype>
   <arguments><argument name='extension'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<doc>
<text>
<source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<p>Looks up the file extension in a table to return
a suitable MIME type.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='http_date' homogen-type='method'>
<method name='http_date'>
   <returntype><string/></returntype>
   <arguments><argument name='time'><type><int/></type></argument>

   </arguments>
</method><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<doc>
<text>
<source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<p>    Makes a time notification suitable for the HTTP protocol.
@param time
 The time in seconds since the 00:00:00 UTC, January 1, 1970
@returns
 The date in the HTTP standard date format.
 Example : Thu, 03 Aug 2000 05:40:39 GMT</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='http_decode_date' homogen-type='method'>
<method name='http_decode_date'>
   <returntype><int/></returntype>
   <arguments><argument name='date'><type><string/></type></argument>

   </arguments>
</method><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<doc>
<text>
<source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<p>    Decode a HTTP date to seconds since 1970 (UTC)
@returns
    zero (UNDEFINED) if the given string isn't a HTTP date</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='http_decode_string'>
   <returntype><string/></returntype>
   <arguments><argument name='what'><type><string/></type></argument>

   </arguments>
</method><method name='http_decode_urlencoded_query'>
   <returntype>
        <mapping><indextype><string/></indextype>
           <valuetype>
            <or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></returntype>
   <arguments><argument name='query'><type><string/></type></argument>
<argument name='dest'><type>
   <or><void/><mapping/></or></type></argument>

   </arguments>
</method><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<doc>
<text>
<source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<p>Decodes an URL-encoded query into a mapping.</p>
</text>

</doc>
</docgroup>

<class name='HeaderParser'>
<source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<doc>
<text>
<source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/module.pmod'/>
<p>Fast HTTP header parser.</p>
</text>

</doc>
</class>



<module name='Server'>

<class name='Request'><docgroup homogen-type='variable' homogen-name='raw'><doc><text><p>raw unparsed full request (headers and body)</p>
</text></doc>
<variable name='raw'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='body_raw'><doc><text><p>raw unparsed body of the request (<ref resolved='predef::Protocols.HTTP.Server.Request.raw'>raw</ref> minus request line and headers)</p>
</text></doc>
<variable name='body_raw'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='request_raw'><doc><text><p>full request line (<ref resolved='predef::Protocols.HTTP.Server.Request.request_type'>request_type</ref> + <ref resolved='predef::Protocols.HTTP.Server.Request.full_query'>full_query</ref> + <ref resolved='predef::Protocols.HTTP.Server.Request.protocol'>protocol</ref>)</p>
</text></doc>
<variable name='request_raw'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='request_type'><doc><text><p>HTTP request method, eg. POST, GET, etc.</p>
</text></doc>
<variable name='request_type'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='full_query'><doc><text><p>full resource requested, including attached GET query</p>
</text></doc>
<variable name='full_query'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='not_query'><doc><text><p>resource requested minus any attached query</p>
</text></doc>
<variable name='not_query'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='query'><doc><text><p>query portion of requested resource, starting after the first "?"</p>
</text></doc>
<variable name='query'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='protocol'><doc><text><p>request protocol and version, eg. HTTP/1.0</p>
</text></doc>
<variable name='protocol'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='request_headers'><doc><text><p>all headers included as part of the HTTP request, ie content-type.</p>
</text></doc>
<variable name='request_headers'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='variables'><doc><text><p>all variables included as part of a GET or POST request.</p>
</text></doc>
<variable name='variables'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cookies'><doc><text><p>cookies set by client</p>
</text></doc>
<variable name='cookies'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='misc'><doc><text><p>external use only</p>
</text></doc>
<variable name='misc'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='send_timeout_delay'><doc><text><p>send timeout (no activity for this period with data in send buffer)
 in seconds, default is 180</p>
</text></doc>
<variable name='send_timeout_delay'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='connection_timeout_delay'><doc><text><p>connection timeout, delay until connection is closed while
 waiting for the correct headers:</p>
</text></doc>
<variable name='connection_timeout_delay'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='response_and_finish' homogen-type='method'><doc><text><p>return a properly formatted response to the HTTP client</p>
</text><group><param name='m'/><text><p>Contains elements for generating a response to the client.</p>
<mapping name='m'><group><member><type><string/></type><index>"data"</index></member><text><p>Data to be returned to the client.</p>
</text></group><group><member><type><object resolved='predef::Protocols.HTTP.Server.Request.response_and_finish'/></type><index>"file"</index></member><text><p>File object, the contents of which will be returned to the client.</p>
</text></group><group><member><type><int/></type><index>"error"</index></member><text><p>HTTP error code</p>
</text></group><group><member><type><int/></type><index>"length"</index></member><text><p>length of content returned. If <i>file</i> is provided, <i>size</i> 
   bytes will be returned to client.</p>
</text></group><group><member><type><string/></type><index>"modified"</index></member><text><p>contains optional modification date.</p>
</text></group><group><member><type><string/></type><index>"type"</index></member><text><p>contains optional content-type</p>
</text></group><group><member><type><mapping/></type><index>"extra_heads"</index></member><text><p>contains a mapping of additional headers to be 
 returned to client.</p>
</text></group><group><member><type><string/></type><index>"server"</index></member><text><p>contains the server identification header.</p>
</text></group></mapping>
</text></group></doc>
<method name='response_and_finish'><source-position first-line='576' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Request.pike'/>
<arguments><argument name='m'><type><mapping/></type></argument><argument name='_log_cb'><type><or><function/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Port'><doc><text><p>The simplest server possible. Binds a port and calls
 a callback with <ref resolved='predef::Protocols.HTTP.Server.Request'>Server.Request</ref> objects.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Protocols.HTTP.Server.Request'>.Request</object></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Protocols.HTTP.Server.Request'>.Request</object></argtype><returntype><void/></returntype></function></type></argument><argument name='portno'><type><int/></type></argument><argument name='interface'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the HTTP port.</p>
</text></doc>
<method name='close'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/Port.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='SSLPort'><doc><text><p>The simplest SSL server possible. Binds a port and calls
 a callback with <ref resolved='predef::Protocols.HTTP.Server.Request'>Request</ref> objects.</p>
</text></doc>

<class name='MySSLPort'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/><classname resolved='predef::Stdio'>Stdio</classname></import>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='sslport'><doc>
</doc>
<inherit name='sslport'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/><classname resolved='predef::SSL.sslport'>SSL.sslport</classname></inherit>
</docgroup>
<docgroup homogen-name='set_default_keycert' homogen-type='method'><doc/>
<method name='set_default_keycert'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_key' homogen-type='method'><doc/>
<method name='set_key'><source-position first-line='127' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/>
<arguments><argument name='skey'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_certificate' homogen-type='method'><doc/>
<method name='set_certificate'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/>
<arguments><argument name='certificate'><type><or><string/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/><classname>"."</classname></import>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a HTTPS (HTTP over SSL) server.</p>
</text><group><param name='_callback'/><text><p>The function run when a request is received.
   takes one argument of type <ref resolved='predef::Protocols.HTTP.Server.Request'>Request</ref>.</p>
</text></group><group><param name='_portno'/><text><p>The port number to bind to, defaults to 443.</p>
</text></group><group><param name='_interface'/><text><p>The interface address to bind to.</p>
</text></group><group><param name='key'/><text><p>An optional SSL secret key, provided in binary format, such
   as that created by <ref resolved='predef::Standards.PKCS.RSA.private_key'>Standards.PKCS.RSA.private_key()</ref>.</p>
</text></group><group><param name='certificate'/><text><p>An optional SSL certificate or chain of certificates with the host 
   certificate first, provided in binary format.</p>
</text></group></doc>
<method name='create'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/>
<arguments><argument name='_callback'><type><function><argtype><object resolved='predef::Protocols.HTTP.Server.Request'>Request</object></argtype><returntype><void/></returntype></function></type></argument><argument name='_portno'><type><or><void/><int/></or></type></argument><argument name='_interface'><type><or><void/><string/></or></type></argument><argument name='key'><type><or><void/><string/></or></type></argument><argument name='certificate'><type><or><void/><string/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the HTTP port.</p>
</text></doc>
<method name='close'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_connection' homogen-type='method'><doc><text><p>The port accept callback</p>
</text></doc>
<method name='new_connection'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Server.pmod/SSLPort.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>





<class name='Query'><doc><text><p>Open and execute an HTTP query.</p>
</text><group><example/><text><p>HTTP.Query o=HTTP.Query();</p>
<p> void ok()
 {
    write("ok...\n");
    write("%O\n", o-&gt;headers);
    exit(0);
 }</p>
<p> void fail()
 {
    write("fail\n");
    exit(0);
 }</p>
<p> int main()
 {
    o-&gt;set_callbacks(ok, fail);
    o-&gt;async_request("pike.ida.liu.se", 80, "HEAD / HTTP/1.0");
    return -1;
 }</p>
</text></group></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><classname resolved='predef::SSL.Constants'>SSL.Constants</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='errno'><doc><text><p>Errno copied from the connection.</p>
</text></doc>
<variable name='errno'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='ok'><doc><text><p>Tells if the connection is successfull.</p>
</text></doc>
<variable name='ok'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='headers'><doc><text><p>Headers as a mapping. All header names are in lower case,
	for convinience.</p>
</text></doc>
<variable name='headers'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='protocol'><doc><text><p>Protocol string, ie <expr>"HTTP/1.0"</expr>.</p>
</text></doc>
<variable name='protocol'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Status number and description (eg <expr>200</expr> and <expr>"ok"</expr>).</p>
</text></doc>
<variable name='status'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><int/></type></variable>
<variable name='status_desc'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='hostname_cache'><doc><text><p>Set this to a global mapping if you want to use a cache,
	prior of calling *request().</p>
</text></doc>
<variable name='hostname_cache'><source-position first-line='425' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Setup and run an asynchronous request,
	otherwise similar to <ref resolved='predef::Protocols.HTTP.Query.thread_request'>thread_request()</ref>.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.set_callbacks.request_ok'>request_ok</ref>(Protocols.HTTP.Query httpquery,...extra args)
	will be called when connection is complete,
	and headers are parsed.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.set_callbacks.request_fail'>request_fail</ref>(Protocols.HTTP.Query httpquery,...extra args)
	is called if the connection fails.</p>
</text><group><returns/><text><p>Returns the called object</p>
</text></group></doc>
<method name='set_callbacks'>
<arguments><argument name='request_ok'><type><function/></type></argument><argument name='request_fail'><type><function/></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></returntype>
</method>
<method name='async_request'>
<arguments><argument name='server'><type><string/></type></argument><argument name='port'><type><int/></type></argument><argument name='query'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></returntype>
</method>
<method name='async_request'>
<arguments><argument name='server'><type><string/></type></argument><argument name='port'><type><int/></type></argument><argument name='query'><type><string/></type></argument><argument name='headers'><type><mapping/></type></argument><argument name='data'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thread_request' homogen-type='method'><doc><text><p>Create a new query object and begin the query.</p>
<p>	The query is executed in a background thread;
	call <ref resolved='predef::Protocols.HTTP.Query.`()'>`()</ref> in the object to wait for the request
	to complete.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.thread_request.query'>query</ref> is the first line sent to the HTTP server;
	for instance <expr>"GET /index.html HTTP/1.1"</expr>.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.thread_request.headers'>headers</ref> will be encoded and sent after the first line,
	and <ref resolved='predef::Protocols.HTTP.Query.thread_request.data'>data</ref> will be sent after the headers.</p>
</text><group><returns/><text><p>Returns the called object.</p>
</text></group></doc>
<method name='thread_request'>
<arguments><argument name='server'><type><string/></type></argument><argument name='port'><type><int/></type></argument><argument name='query'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></returntype>
</method>
<method name='thread_request'>
<arguments><argument name='server'><type><string/></type></argument><argument name='port'><type><int/></type></argument><argument name='query'><type><string/></type></argument><argument name='headers'><type><mapping/></type></argument><argument name='data'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Wait for connection to complete.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> on successfull connection, <expr>0</expr> on failure.</p>
</text></group></doc>
<method name='`()'><source-position first-line='726' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data' homogen-type='method'><doc><text><p>Gives back the data as a string.</p>
</text></doc>
<method name='data'><source-position first-line='736' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments><argument name='max_length'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='downloaded_bytes' homogen-type='method'><doc><text><p>Gives back the number of downloaded bytes.</p>
</text></doc>
<method name='downloaded_bytes'><source-position first-line='887' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='total_bytes' homogen-type='method'><doc><text><p>Gives back the size of a file if a content-length header is present
     and parsed at the time of evaluation. Otherwise returns -1.</p>
</text></doc>
<method name='total_bytes'><source-position first-line='897' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><group><returns/><text><array><group><elem><type><mapping/></type><index>0</index></elem><text><p>Headers</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>Data</p>
</text></group><group><elem><type><string/></type><index>2</index></elem><text><p>Protocol</p>
</text></group><group><elem><type><int/></type><index>3</index></elem><text><p>Status</p>
</text></group><group><elem><type><string/></type><index>4</index></elem><text><p>Status description</p>
</text></group></array>
</text></group></doc>
<method name='cast'>
<arguments><argument><value>"array"</value></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><group><returns/><text><p>The header mapping ORed with the following mapping.</p>
<mapping><group><member><type><string/></type><index>"protocol"</index></member><text><p>The protocol.</p>
</text></group><group><member><type><int/></type><index>"status"</index></member><text><p>The status code.</p>
</text></group><group><member><type><string/></type><index>"status_desc"</index></member><text><p>The status description.</p>
</text></group><group><member><type><string/></type><index>"data"</index></member><text><p>The returned data.</p>
</text></group></mapping>
</text></group></doc>
<method name='cast'>
<arguments><argument><value>"mapping"</value></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Gives back the answer as a string.</p>
</text></doc>
<method name='cast'>
<arguments><argument><value>"string"</value></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='file' homogen-type='method'><doc><text><p>Gives back a pseudo-file object,
	with the methods <expr>read()</expr> and <expr>close()</expr>.
	This could be used to copy the file to disc at
	a proper tempo.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.file.newheaders'>newheaders</ref>, <ref resolved='predef::Protocols.HTTP.Query.file.removeheaders'>removeheaders</ref> is applied as:
	<expr>(oldheaders|newheaders))-removeheaders</expr>
	Make sure all new and remove-header indices are lower case.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Query.datafile'>datafile()</ref></p>
</text></group></doc>
<method name='file'>
<arguments/>
<returntype><object>Protocols.HTTP.Query.PseudoFile</object></returntype>
</method>
<method name='file'>
<arguments><argument name='newheaders'><type><mapping/></type></argument><argument name='removeheaders'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><object>Protocols.HTTP.Query.PseudoFile</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='datafile' homogen-type='method'><doc><text><p>Gives back a pseudo-file object,
	with the methods <expr>read()</expr> and <expr>close()</expr>.
	This could be used to copy the file to disc at
	a proper tempo.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Query.datafile'>datafile()</ref> doesn't give the complete request,
	just the data.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Query.file'>file()</ref></p>
</text></group></doc>
<method name='datafile'>
<arguments/>
<returntype><object>Protocols.HTTP.Query.PseudoFile</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_fetch' homogen-type='method'><doc><text><p>Fetch all data in background.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Query.timed_async_fetch'>timed_async_fetch()</ref>, <ref resolved='predef::Protocols.HTTP.Query.set_callbacks'>async_request()</ref>, <ref resolved='predef::Protocols.HTTP.Query.set_callbacks'>set_callbacks()</ref></p>
</text></group></doc>
<method name='async_fetch'><source-position first-line='1078' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments><argument name='callback'><type><function/></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='timed_async_fetch' homogen-type='method'><doc><text><p>Like <ref resolved='predef::Protocols.HTTP.Query.async_fetch'>async_fetch()</ref>, except with a timeout and a corresponding fail 
 callback function</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Query.async_fetch'>async_fetch()</ref>, <ref resolved='predef::Protocols.HTTP.Query.set_callbacks'>async_request()</ref>, <ref resolved='predef::Protocols.HTTP.Query.set_callbacks'>set_callbacks()</ref></p>
</text></group></doc>
<method name='timed_async_fetch'><source-position first-line='1102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Query.pike'/>
<arguments><argument name='ok_callback'><type><function><argtype><object resolved='predef::Protocols.HTTP.Query.timed_async_fetch'/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='fail_callback'><type><function><argtype><object resolved='predef::Protocols.HTTP.Query.timed_async_fetch'/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='do_method' homogen-type='method'><doc><text><p>Low level HTTP call method.</p>
</text><group><param name='method'/><text><p>The HTTP method to use, e.g. <expr>"GET"</expr>.</p>
</text></group><group><param name='url'/><text><p>The URL to perform <ref resolved='predef::Protocols.HTTP.do_method.method'>method</ref> on. Should be a complete URL,
   including protocol, e.g. <expr>"https://pike.ida.liu.se/"</expr>.</p>
</text></group><group><param name='query_variables'/><text><p>Calls <ref resolved='predef::Protocols.HTTP.http_encode_query'>http_encode_query</ref> and appends the result to the URL.</p>
</text></group><group><param name='request_headers'/><text><p>The HTTP headers to be added to the request. By default the
   headers User-agent, Host and, if needed by the url,
   Authorization will be added, with generated contents.
   Providing these headers will override the default. Setting
   the value to 0 will remove that header from the request.</p>
</text></group><group><param name='con'/><text><p>Old connection object.</p>
</text></group><group><param name='data'/><text><p>Data payload to be transmitted in the request.</p>
</text></group></doc>
<method name='do_method'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='method'><type><string/></type></argument><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument><argument name='data'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_url' homogen-type='method'><doc><text><p>Sends a HTTP GET request to the server in the URL and returns the
 created and initialized <ref resolved='predef::Protocols.HTTP.Query'>Query</ref> object. <expr>0</expr> is returned
 upon failure. If a query object having
 <expr>request_headers-&gt;Connection=="Keep-Alive"</expr> from a previous
 request is provided and the already established server connection
 can be used for the next request, you may gain some performance.</p>
</text></doc>
<method name='get_url'><source-position first-line='147' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_url' homogen-type='method'><doc><text><p>Sends a HTTP PUT request to the server in the URL and returns the
 created and initialized <ref resolved='predef::Protocols.HTTP.Query'>Query</ref> object. <expr>0</expr> is returned upon
 failure. If a query object having
 <expr>request_headers-&gt;Connection=="Keep-Alive"</expr> from a previous
 request is provided and the already established server connection
 can be used for the next request, you may gain some performance.</p>
</text></doc>
<method name='put_url'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='file'><type><or><void/><string/></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_url' homogen-type='method'><doc><text><p>Sends a HTTP DELETE request to the server in the URL and returns
 the created and initialized <ref resolved='predef::Protocols.HTTP.Query'>Query</ref> object. <expr>0</expr> is returned
 upon failure. If a query object having
 <expr>request_headers-&gt;Connection=="Keep-Alive"</expr> from a previous
 request is provided and the already established server connection
 can be used for the next request, you may gain some performance.</p>
</text></doc>
<method name='delete_url'><source-position first-line='178' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_url_nice' homogen-type='method'><doc><text><p>Returns an array of <expr>({content_type, data})</expr> after calling
 the requested server for the information. <expr>0</expr> is returned
 upon failure. Redirects (HTTP 302) are automatically followed.</p>
</text></doc>
<method name='get_url_nice'><source-position first-line='190' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_url_data' homogen-type='method'><doc><text><p>Returns the returned data after calling the requested server for
 information through HTTP GET. <expr>0</expr> is returned upon failure.
 Redirects (HTTP 302) are automatically followed.</p>
</text></doc>
<method name='get_url_data'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></or></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='post_url' homogen-type='method'><doc><text><p>Similar to <ref resolved='predef::Protocols.HTTP.get_url'>get_url</ref>, except that query variables is sent as a
 POST request instead of a GET request.</p>
</text></doc>
<method name='post_url'><source-position first-line='223' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>.Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='post_url_nice' homogen-type='method'><doc><text><p>Similar to <ref resolved='predef::Protocols.HTTP.get_url_nice'>get_url_nice</ref>, except that query variables is sent as
 a POST request instead of a GET request.</p>
</text></doc>
<method name='post_url_nice'><source-position first-line='238' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='post_url_data' homogen-type='method'><doc><text><p>Similar to <ref resolved='predef::Protocols.HTTP.get_url_data'>get_url_data</ref>, except that query variables is sent as
 a POST request instead of a GET request.</p>
</text></doc>
<method name='post_url_data'><source-position first-line='249' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument><argument name='query_variables'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument><argument name='request_headers'><type><or><void/><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></or></type></argument><argument name='con'><type><or><void/><object resolved='predef::Protocols.HTTP.Query'>Protocols.HTTP.Query</object></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unentity' homogen-type='method'><doc><text><p>Helper function for replacing HTML entities with the corresponding
 iso-8859-1 characters.</p>
</text><group><note/><text><p>All characters aren't replaced, only those with corresponding
   iso-8859-1 characters.</p>
</text></group></doc>
<method name='unentity'><source-position first-line='263' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='http_encode_query' homogen-type='method'><doc><text><p>Encodes a query mapping to a string;
	this protects odd - in http perspective - characters
	like '&amp;' and '#' and control characters,
	and packs the result together in a HTTP query string.</p>
<p>	Example:
	<pre>
	&gt; Protocols.HTTP.http_encode_query( (["anna":"eva","lilith":"blue"]) );  
     Result: "lilith=blue&amp;anna=eva"
     &gt; Protocols.HTTP.http_encode_query( (["&amp;amp;":"&amp;","'=\"":"\0\0\0"]) );  
     Result: "%26amp%3b=%26&amp;%27%3d%22=%00%00%00"
	</pre></p>
</text></doc>
<method name='http_encode_query'><source-position first-line='318' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='variables'><type><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='http_encode_string' homogen-type='method'><doc><text><p>This protects all odd - see <ref resolved='predef::Protocols.HTTP.http_encode_query'>http_encode_query()</ref> - 
	characters for transfer in HTTP.</p>
<p>	Do not use this function to protect URLs, since
	it will protect URL characters like <expr>'/'</expr> and <expr>'?'</expr>.</p>
</text><group><param name='in'/><text><p>The string to encode</p>
</text></group><group><returns/><text><p>The HTTP encoded string</p>
</text></group></doc>
<method name='http_encode_string'><source-position first-line='345' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='http_encode_cookie' homogen-type='method'><doc><text><p>Encode the specified string in as to the HTTP cookie standard.</p>
</text><group><param name='f'/><text><p>The string to encode.</p>
</text></group><group><returns/><text><p>The HTTP cookie encoded string.</p>
</text></group></doc>
<method name='http_encode_cookie'><source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/module.pmod'/>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>


<class name='Session'>

<class name='Request'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><doc><text><p>Request</p>
</text></doc><docgroup homogen-type='variable' homogen-name='con'><doc><text><p>Raw connection object</p>
</text></doc>
<variable name='con'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><object resolved='predef::Protocols.HTTP.Query'>Query</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='url_requested'><doc><text><p>URL requested (set by prepare_method).
	This will update according to followed redirects.</p>
</text></doc>
<variable name='url_requested'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='follow_redirects'><doc><text><p>Number of redirects to follow;
	the request will perform another request if the 
	HTTP answer is a 3xx redirect.
	Default from the parent <ref resolved='predef::Protocols.HTTP.Session.follow_redirects'>Session.follow_redirects</ref>.</p>
<p>	A redirect automatically turns into a GET request,
	and all header, query, post or put information is dropped.</p>
</text><group><bugs/><text><p>Loops will currently not be detected, only the limit
	works to stop loops.</p>
</text></group></doc>
<variable name='follow_redirects'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cookie_encountered'><doc><text><p>Cookie callback. When a request is performed,
	the result is checked for cookie changes and
	additions. If a cookie is encountered, this
	function is called. Default is to call 
	<ref resolved='predef::Protocols.HTTP.Session.set_http_cookie'>set_http_cookie</ref> in the <ref resolved='predef::Protocols.HTTP.Session'>Session</ref> object.</p>
</text></doc>
<variable name='cookie_encountered'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><function><argtype><string/></argtype><argtype><object resolved='predef::Standards.URI'>Standards.URI</object></argtype><returntype><mixed/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-name='prepare_method' homogen-type='method'><doc><text><p>Prepares the HTTP Query object for the connection,
	and returns the parameters to use with <ref resolved='predef::Protocols.HTTP.Session.Request.do_sync'>do_sync</ref>,
	<ref resolved='predef::Protocols.HTTP.Session.Request.do_async'>do_async</ref> or <ref resolved='predef::Protocols.HTTP.Session.Request.do_thread'>do_thread</ref>.</p>
<p>	This method will also use cookie information from the 
	parent <ref resolved='predef::Protocols.HTTP.Session'>Session</ref>, and may reuse connections (keep-alive).</p>
</text></doc>
<method name='prepare_method'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='method'><type><string/></type></argument><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument><argument name='extra_headers'><type><or><void/><mapping/></or></type></argument><argument name='data'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/><mapping/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_sync' homogen-type='method'><doc><text><p>Perform a request synchronously.
	Get arguments from <ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>.</p>
</text><group><returns/><text><p>0 upon failure, this object upon success</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_async'>do_async</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_thread'>do_thread</ref></p>
</text></group></doc>
<method name='do_sync'><source-position first-line='150' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='args'><type><array><valuetype><or><string/><int/><mapping/></or></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_thread' homogen-type='method'><doc><text><p>Start a request in the background, using a thread.
	Call <ref resolved='predef::Protocols.HTTP.Session.Request.wait'>wait</ref> to wait for the thread to finish.
	Get arguments from <ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>.</p>
</text><group><returns/><text><p>The called object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_sync'>do_sync</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_async'>do_async</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.wait'>wait</ref></p>
</text></group><group><note/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.do_thread'>do_thread</ref> does not rerun redirections automatically</p>
</text></group></doc>
<method name='do_thread'><source-position first-line='192' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='args'><type><array><valuetype><or><string/><int/><mapping/></or></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='wait' homogen-type='method'><doc><text><p>Wait for the request thread to finish.</p>
</text><group><returns/><text><p>0 upon failure, or the called object upon success.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.do_thread'>do_thread</ref></p>
</text></group></doc>
<method name='wait'><source-position first-line='204' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments/>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_callbacks' homogen-type='method'><doc><text><p>Setup callbacks for async mode,
	<ref resolved='predef::Protocols.HTTP.Session.Request.set_callbacks.headers'>headers</ref> will be called when the request got connected,
	and got data headers; <ref resolved='predef::Protocols.HTTP.Session.Request.set_callbacks.data'>data</ref> will be called when the request
	got the amount of data it's supposed to get and <ref resolved='predef::Protocols.HTTP.Session.Request.set_callbacks.fail'>fail</ref> is
	called whenever the request failed.</p>
<p>	Note here that an error message from the server isn't 
	considered a failure, only a failed TCP connection.</p>
</text></doc>
<method name='set_callbacks'><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='headers'><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='data'><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='fail'><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='callback_arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_async' homogen-type='method'><doc><text><p>Start a request asyncroneously. It will perform in 
	the background using callbacks (make sure the backend
	thread is free).
	Call <ref resolved='predef::Protocols.HTTP.Session.Request.set_callbacks'>set_callbacks</ref> to setup the callbacks.
	Get arguments from <ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>.</p>
</text><group><returns/><text><p>The called object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.set_callbacks'>set_callbacks</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.prepare_method'>prepare_method</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_sync'>do_sync</ref>, <ref resolved='predef::Protocols.HTTP.Session.Request.do_thread'>do_thread</ref></p>
</text></group></doc>
<method name='do_async'><source-position first-line='249' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='args'><type><array><valuetype><or><string/><int/><mapping/></or></valuetype></array></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.destroy'>destroy</ref> is called when an object is destructed.
	But since this clears the HTTP connection from the Request object,
	it can also be used to reuse a <ref resolved='predef::Protocols.HTTP.Session.Request'>Request</ref> object.</p>
</text></doc>
<method name='destroy'><source-position first-line='376' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='SessionURL'><source-position first-line='983' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><doc><text><p>Class to store URL+referer</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='URI'><doc>
</doc>
<inherit name='URI'><source-position first-line='985' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><classname resolved='predef::Standards.URI'>Standards.URI</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='referer'><doc><text><p>the referer to this URL</p>
</text></doc>
<variable name='referer'><source-position first-line='988' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><object>URL</object></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>instantiate a SessionURL object;
 when fed to Protocols.HTTP.Session calls, will add
 referer to the HTTP handshaking variables</p>
</text></doc>
<method name='create'><source-position first-line='993' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='uri'><type><object>URL</object></type></argument><argument name='base_uri'><type><object>URL</object></type></argument><argument name='_referer'><type><object>URL</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><classname resolved='predef::Protocols.HTTP'>Protocols.HTTP</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='follow_redirects'><doc><text><p>The number of redirects to follow, if any.
	This is the default to the created Request objects.</p>
<p>	A redirect automatically turns into a GET request,
	and all header, query, post or put information is dropped.</p>
<p>	Default is 20 redirects. A negative number will mean infinity.</p>
</text><group><bugs/><text><p>Loops will currently not be detected, only the limit
	works to stop loops.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.HTTP.Session.Request.follow_redirects'>Request.follow_redirects</ref></p>
</text></group></doc>
<variable name='follow_redirects'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='default_headers'><doc><text><p>Default HTTP headers.</p>
</text></doc>
<variable name='default_headers'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-name='set_http_cookie' homogen-type='method'><doc><text><p>Parse and set a cookie received in the HTTP protocol.
	The cookie will be checked against current security levels et al.</p>
</text></doc>
<method name='set_http_cookie'><source-position first-line='477' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='cookie'><type><string/></type></argument><argument name='at'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cookie' homogen-type='method'><doc><text><p>Set a cookie. 
	The cookie will be checked against current security levels et al,
	using the parameter <ref resolved='predef::Protocols.HTTP.Session.set_cookie.who'>who</ref>.
	If <ref resolved='predef::Protocols.HTTP.Session.set_cookie.who'>who</ref> is zero, no security checks will be performed.</p>
</text></doc>
<method name='set_cookie'><source-position first-line='488' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='cookie'><type><object>Cookie</object></type></argument><argument name='who'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Dump all cookies to a string and read them back. This is useful to
	store cookies in between sessions (on disk, for instance).
	<ref resolved='predef::Protocols.HTTP.Session.encode_cookies'>decode_cookies</ref> will throw an error upon parse failures.
	Also note, <ref resolved='predef::Protocols.HTTP.Session.encode_cookies'>decode_cookies</ref> will clear out any previously
	learned cookies from the <ref resolved='predef::Protocols.HTTP.Session'>Session</ref> object, unless no_clear
	is given and true.</p>
</text></doc>
<method name='encode_cookies'>
<arguments/>
<returntype><string/></returntype>
</method>
<method name='decode_cookies'>
<arguments><argument name='data'><type><string/></type></argument><argument name='no_clear'><type><void/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cookies' homogen-type='method'><doc><text><p>Get the cookies that we should send to this server,
	for this url. They are presented in the form suitable
	for HTTP headers (as an array).
	This will also take in count expiration of cookies,
	and delete expired cookies from the <ref resolved='predef::Protocols.HTTP.Session'>Session</ref> unless 
	<ref resolved='predef::Protocols.HTTP.Session.get_cookies.no_delete'>no_delete</ref> is true.</p>
</text></doc>
<method name='get_cookies'><source-position first-line='538' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='for_url'><type><or><object resolved='predef::Standards.URI'>Standards.URI</object><object resolved='predef::Protocols.HTTP.Session.SessionURL'>SessionURL</object></or></type></argument><argument name='no_delete'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='hostname_cache'><doc><text><p>Cache of hostname to IP lookups. Given to and used by the
	<ref resolved='predef::Protocols.HTTP.Query'>Query</ref> objects.</p>
</text></doc>
<variable name='hostname_cache'><source-position first-line='577' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='time_to_keep_unused_connections'><doc><text><p>The time to keep unused connections in seconds. Set to zero
	to never save any kept-alive connections.
	(Might be good in a for instance totaly synchroneous script
	that keeps the backend thread busy and never will get call_outs.)
	Defaults to 10 seconds.</p>
</text></doc>
<variable name='time_to_keep_unused_connections'><source-position first-line='584' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><or><int/><float/></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='maximum_connections_per_server'><doc><text><p>Maximum number of connections to the same server.
	Used only by async requests.
	Defaults to 10 connections.</p>
</text></doc>
<variable name='maximum_connections_per_server'><source-position first-line='589' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='maximum_total_connections'><doc><text><p>Maximum total number of connections. Limits only
	async requests, and the number of kept-alive connections
	(live connections + kept-alive connections &lt;= this number)
	Defaults to 50 connections.</p>
</text></doc>
<variable name='maximum_total_connections'><source-position first-line='595' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='maximum_connection_reuse'><doc><text><p>Maximum times a connection is reused. 
	Defaults to 1000000. &lt;2 means no reuse at all.</p>
</text></doc>
<variable name='maximum_connection_reuse'><source-position first-line='599' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='give_me_connection' homogen-type='method'><doc><text><p>Request a <ref resolved='predef::Protocols.HTTP.Query'>Query</ref> object suitable to use for the
	given URL. This may be a reused object from a keep-alive
	connection.</p>
</text></doc>
<method name='give_me_connection'><source-position first-line='658' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='url'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Query'>Query</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='return_connection' homogen-type='method'><doc><text><p>Return a previously used Query object to the keep-alive
	storage. This function will determine if the given object
	is suitable to keep or not by checking status and headers.</p>
</text></doc>
<method name='return_connection'><source-position first-line='720' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/HTTP.pmod/Session.pike'/>
<arguments><argument name='url'><type><object resolved='predef::Standards.URI'>Standards.URI</object></type></argument><argument name='query'><type><object resolved='predef::Protocols.HTTP.Query'>Query</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Sends a HTTP GET, POST, PUT or DELETE request to the server in the URL
	and returns the created and initialized <ref resolved='predef::Protocols.HTTP.Session.Request'>Request</ref> object.
	0 is returned upon failure.</p>
</text></doc>
<method name='get_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='post_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='put_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='file'><type><string/></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='delete_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns an array of <expr>({content_type,data})</expr> and
     just the data string respective, 
	after calling the requested server for the information.
	<expr>0</expr> is returned upon failure.</p>
<p> 	post* is similar to the <ref resolved='predef::Protocols.HTTP.Session.get_url'>get_url()</ref> class of functions,
	except that the query variables is sent as a POST request instead
	of as a GET.</p>
</text></doc>
<method name='get_url_nice'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
<method name='get_url_data'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='post_url_nice'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
<method name='post_url_data'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Sends a HTTP GET, POST, PUT or DELETE request to the server in
     the URL asynchroneously, and call the corresponding callbacks
	when result arrives (or not). The callbacks will receive 
	the created Request object as first argument, then 
	the given <ref resolved='predef::Protocols.HTTP.Session.async_get_url.callback_arguments'>callback_arguments</ref>, if any.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Session.async_get_url.callback_headers_ok'>callback_headers_ok</ref> is called when the HTTP request has received
	headers. </p>
<p>	<ref resolved='predef::Protocols.HTTP.Session.async_get_url.callback_data_ok'>callback_data_ok</ref> is called when the HTTP request has been 
	received completely, data and all.</p>
<p>	<ref resolved='predef::Protocols.HTTP.Session.async_get_url.callback_fail'>callback_fail</ref> is called when the HTTP request has failed,
	on a TCP/IP or DNS level, or has received a forced timeout.</p>
<p>	The created Request object is returned.</p>
</text></doc>
<method name='async_get_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument><argument name='callback_headers_ok'><type><function/></type></argument><argument name='callback_data_ok'><type><function/></type></argument><argument name='callback_fail'><type><function/></type></argument><argument name='callback_arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='async_put_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='file'><type><or><void/><string/></or></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument><argument name='callback_headers_ok'><type><function/></type></argument><argument name='callback_data_ok'><type><function/></type></argument><argument name='callback_fail'><type><function/></type></argument><argument name='callback_arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='async_delete_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><or><void/><mapping/></or></type></argument><argument name='callback_headers_ok'><type><function/></type></argument><argument name='callback_data_ok'><type><function/></type></argument><argument name='callback_fail'><type><function/></type></argument><argument name='callback_arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
<method name='async_post_url'>
<arguments><argument name='url'><type><object>URL</object></type></argument><argument name='query_variables'><type><mapping/></type></argument><argument name='callback_headers_ok'><type><function/></type></argument><argument name='callback_data_ok'><type><function/></type></argument><argument name='callback_fail'><type><function/></type></argument><argument name='callback_arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.HTTP.Session.Request'>Request</object></returntype>
</method>
</docgroup>
</class></module>















<module name='IRC'>

<class name='Person'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><doc><text><p>Abstract class for a person.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='nick'><doc><text><p>User nickname, e.g. <expr>"Mirar"</expr>.</p>
</text></doc>
<variable name='nick'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='user'><doc><text><p>User name, e.g. <expr>"mirar"</expr>.</p>
</text></doc>
<variable name='user'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='ip'><doc><text><p>User domain, e.g. <expr>"mistel.idonex.se"</expr>.</p>
</text></doc>
<variable name='ip'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='last_action'><doc><text><p>Time of last action, represented as posix time.</p>
</text></doc>
<variable name='last_action'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
</class>

<class name='Channel'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><doc><text><p>Abstract class for a IRC channel.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='name'><doc><text><p>The name of the channel.</p>
</text></doc>
<variable name='name'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/module.pmod'/><type><string/></type></variable>
</docgroup>
</class>

<class name='Client'><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/Client.pike'/><classname>"."</classname></import>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='server'/><text><p>The IRC server to connect to.</p>
</text></group><group><param name='options'/><text><p>An optional mapping with additional IRC client options.</p>
<mapping><group><member><type><int/></type><index>"port"</index></member><text><p>Defaults to 6667.</p>
</text></group><group><member><type><string/></type><index>"user"</index></member><text><p>Defaults to <expr>"unknown"</expr> on systems without <ref resolved='predef::getpwuid'>getpwuid</ref> and
       <ref>getuid</ref> and to <expr>getpwuid(getuid())[0]</expr> on systems with.</p>
</text></group><group><member><type><string/></type><index>"nick"</index></member><text><p>Defaults to <expr>"Unknown"</expr> on systems without <ref resolved='predef::getpwuid'>getpwuid</ref> and
       <ref>getuid</ref> and to <expr>String.capitalize(getpwuid(getuid())[0])</expr>
       on systems with.</p>
</text></group><group><member><type><string/></type><index>"realname"</index></member><text><p>Defaults to <expr>"Mr. Anonymous"</expr> on systems without <ref resolved='predef::getpwuid'>getpwuid</ref>
       and <ref>getuid</ref> and to <expr>getpwuid(getuid())[4]</expr> on systems with.</p>
</text></group><group><member><type><string/></type><index>"host"</index></member><text><p>Defaults to <expr>"localhost"</expr> on systems without <ref>uname</ref> and
       to <expr>uname()-&gt;nodename</expr> on systems with.</p>
</text></group><group><member><type><int/></type><index>"ping_interval"</index></member><text><p>Defaults to 120.</p>
</text></group><group><member><type><int/></type><index>"ping_timeout"</index></member><text><p>Defaults to 120.</p>
</text></group><group><member><type><function><argtype><void/></argtype><returntype><void/></returntype></function></type><index>"connection_lost"</index></member><text><p>This function is called when the connection to the IRC server is
       lost or when a ping isn't answered with a pong within the time
       set by the <tt>ping_timeout</tt> option. The default behaviour is
       to complain on stderr and self destruct.</p>
</text></group><group><member><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type><index>"error_notify"</index></member><text><p>This function is called when a KILL or ERROR command is recieved
       from the IRC server.</p>
</text></group><group><member><type><function><argtype><string/></argtype><argtype><or><void/><string/></or></argtype><returntype><void/></returntype></function></type><index>"system_notify"</index></member></group><group><member><type><function><argtype><string/></argtype><argtype><or><void/><string/></or></argtype><returntype><void/></returntype></function></type><index>"motd_notify"</index></member></group><group><member><type><function><argtype><string/></argtype></function></type><index>"error_nickinuse"</index></member></group><group><member><type><function><argtype><string/></argtype><argtype><string/></argtype><argtype><string/></argtype><argtype><string/></argtype><argtype><string/></argtype></function></type><index>"generic_notify"</index></member><text><p>The arguments are from, type, to, message and extra.</p>
</text></group><group><member><type><function><argtype><string/></argtype><argtype><string/></argtype></function></type><index>"quit_notify"</index></member><text><p>The arguments are who and why.</p>
</text></group><group><member><type><function><argtype><object resolved='predef::Protocols.IRC.Person'>Person</object></argtype><argtype><string/></argtype><argtype><string/></argtype></function></type><index>"privmsg_notify"</index></member><text><p>The arguments are originator, message and to.</p>
</text></group><group><member><type><function><argtype><object resolved='predef::Protocols.IRC.Person'>Person</object></argtype><argtype><string/></argtype><argtype><string/></argtype></function></type><index>"notice_notify"</index></member><text><p>The arguments are originator, message and to.</p>
</text></group><group><member><type><function><argtype><object resolved='predef::Protocols.IRC.Person'>Person</object></argtype><argtype><string/></argtype></function></type><index>"nick_notify"</index></member><text><p>The arguments are originator and to.</p>
</text></group></mapping>
</text></group></doc>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument><argument name='options'><type><or><void/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the connection to the server.</p>
</text></doc>
<method name='close'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/IRC.pmod/Client.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>



<module name='LysKOM'>

<class name='Connection'><doc><text><p>This class contains nice abstraction for calls into the
	server. They are named "<tt><i>call</i></tt>",
	"<tt>async_<i>call</i></tt>" or
	"<tt>async_cb_<i>call</i></tt>", depending on
	how you want the call to be done.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike'/><classname>"."</classname></import>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Do a call to the server. This really
	clones a <ref resolved='predef::Protocols.LysKOM.Request'>Protocols.LysKOM.Request</ref> object,
	and initialises it. <tt>XXX</tt> is to be read as
	one of the calls in the lyskom protocol. ('-' is replaced
	with '_'.) (ie, logout, async_login or async_cb_get_conf_stat.)</p>
<p>	The first method is a synchronous call. This will
	send the command, wait for the server to execute it,
	and then return the result.</p>
<p>	The last two are asynchronous calls, returning an
	initialised <ref resolved='predef::Protocols.LysKOM.Request'>Protocols.LysKOM.Request</ref> object.</p>
</text></doc>
<method name='XXX'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='async_XXX'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Connection.XXX'/></returntype>
</method>
<method name='async_cb_XXX'>
<arguments><argument name='callback'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Connection.XXX'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Description of the connected server.</p>
</text></doc>
<variable name='protocol_level'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike'/><type><int/></type></variable>
<variable name='session_software'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike'/><type><string/></type></variable>
<variable name='software_version'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Connection.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The <ref resolved='predef::Protocols.LysKOM.Connection.create.options'>options</ref> argument is a mapping with the following members:</p>
<mapping><group><member><type><or><int/><string/></or></type><index>"login"</index></member><text><p>login as this person number (get number from name).</p>
</text></group><group><member><type><string/></type><index>"password"</index></member><text><p>send this login password.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"invisible"</index></member><text><p>if set, login invisible.</p>
</text></group><group><member><type><int><min>0</min><max>65535</max></int></type><index>"port"</index></member><text><p>server port (default is 4894).</p>
</text></group><group><member><type><string/></type><index>"whoami"</index></member><text><p>present as this user (default is from uid/getpwent and hostname).</p>
</text></group></mapping>
</text></doc>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='ProtocolTypes'><doc><text><p>Data types as defined by the LysKOM protocol specification.</p>
</text></doc>

























































<docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/ProtocolTypes.pmod'/><classname>.Helper</classname></import>
</docgroup>
</module>

<module name='Request'><doc><text><p>This module contains nice abstraction for calls into the
	server. They are named "<tt><i>call</i></tt>",
	"<tt>async_<i>call</i></tt>" or 
	"<tt>async_cb_<i>call</i></tt>", depending on 
	how you want the call to be done.</p>
</text></doc>

<class name='_Request'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod'/><doc><text><p>This is the main request class. All lyskom request
	classes inherit this class.</p>
</text></doc><docgroup homogen-type='method'><doc><text><p>Initialise an asynchronous or a synchronous call,
	the latter is also evaluating the result. This calls
	<tt>indata()</tt> in itself, to get the correct arguments to 
	the lyskom protocol call.</p>
</text></doc>
<method name='async'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='sync'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Initialise an asynchronous or a synchronous call,
	the latter is also evaluating the result. These
	are called by async and sync respectively.</p>
</text></doc>
<method name='_async'>
<arguments><argument name='call'><type><int/></type></argument><argument><value>mixed_data</value></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='_sync'>
<arguments><argument name='call'><type><int/></type></argument><argument><value>mixed_data</value></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p><ref resolved='predef::Protocols.LysKOM.Request._Request._reply'>_reply()</ref> is called as callback to evaluate the result, 
	and calls <ref resolved='predef::Protocols.LysKOM.Request._Request._reply'>reply()</ref> in itself to do the real work.</p>
</text></doc>
<method name='_reply'>
<arguments><argument name='what'><type><or><object resolved='predef::Protocols.LysKOM.Request._Request._reply'/><array/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='reply'>
<arguments><argument name='what'><type><or><object resolved='predef::Protocols.LysKOM.Request._Request._reply'/><array/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Wait for the call to finish.</p>
</text></doc>
<method name='`()'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='ok'><doc><text><p>Tells if the call has executed ok</p>
</text></doc>
<variable name='ok'><source-position first-line='115' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error'><doc><text><p>How the call failed.
	The call has completed if <expr>(ok||error)</expr>.</p>
</text></doc>
<variable name='error'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod'/><type><object resolved='predef::Protocols.LysKOM.Request._Request'/></type></variable>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod'/><classname>.Helper</classname></import>
</docgroup>
<docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Request.pmod'/><classname resolved='predef::Protocols.LysKOM.ProtocolTypes'>.ProtocolTypes</classname></import>
</docgroup>
</module>

<class name='Session'>

<class name='AuxItemInput'><source-position first-line='459' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><doc><group><fixme/><text><p>Undocumented</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='AuxItemInput'><doc>
</doc>
<inherit name='AuxItemInput'><source-position first-line='461' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><classname>ProtocolTypes.AuxItemInput</classname></inherit>
</docgroup>
</class>

<class name='AuxItems'><source-position first-line='484' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><doc><group><fixme/><text><p>Undocumented</p>
</text></group></doc></class>

<class name='Text'><source-position first-line='536' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><doc><text><p>All variables in this class is read only.</p>
</text><group><fixme/><text><p>Undocumented</p>
</text></group></doc><docgroup homogen-type='variable' homogen-name='no'><doc><text><p>The text number, as spicified to <ref resolved='predef::Protocols.LysKOM.Session.Text.create'>create</ref>.</p>
</text></doc>
<variable name='no'><source-position first-line='540' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='err'><doc><text><p>Undocumented</p>
</text></doc>
<variable name='err'><source-position first-line='546' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><object resolved='predef::Protocols.LysKOM.Session.Text'/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes a Text object.</p>
</text></doc>
<method name='create'>
<arguments><argument name='textnumber'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mark_as_read' homogen-type='method'><doc><group><fixme/><text><p>Undocumented.</p>
</text></group></doc>
<method name='mark_as_read'><source-position first-line='573' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc><group><fixme/><text><p>Undocumented</p>
</text></group></doc>
<variable name='prefetch_text'><type><mixed/></type></variable>
<variable name='prefetch_stat'><type><mixed/></type></variable>
<variable name='lines'><type><mixed/></type></variable>
<variable name='characters'><type><mixed/></type></variable>
<variable name='clear_stat'><type><mixed/></type></variable>
<variable name='aux_items'><type><mixed/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='text'><doc><text><p>The actual text (or body if you wish).</p>
</text></doc>
<variable name='text'><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='subject'><doc><text><p>The message subject.</p>
</text></doc>
<variable name='subject'><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='author'><doc><text><p>The author of the text.</p>
</text></doc>
<variable name='author'><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='misc'><doc><text><p>Misc info, including what conferences the message is posted to.</p>
</text><group><fixme/><text><p>Needs a more complete description.</p>
</text></group></doc>
<variable name='misc'><type><mixed/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='marks'><doc><text><p>The number of marks on this text.</p>
</text></doc>
<variable name='marks'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='creation_time'><doc><text><p>The time the text was created on the server.</p>
</text></doc>
<variable name='creation_time'><type><mixed/></type></variable>
</docgroup>
</class>

<class name='Membership'><source-position first-line='706' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><doc><text><p>All variables in this class is read only.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='last_time_read'><doc/>
<variable name='last_time_read'><source-position first-line='712' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><object resolved='predef::Protocols.LysKOM.Session.Membership'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='priority'><doc/>
<variable name='priority'><source-position first-line='715' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><int><min>0</min><max>255</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='last_text_read'><doc/>
<variable name='last_text_read'><source-position first-line='718' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='read_texts'><doc/>
<variable name='read_texts'><source-position first-line='721' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='added_at'><doc/>
<variable name='added_at'><source-position first-line='726' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><object resolved='predef::Protocols.LysKOM.Session.Membership'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='type'><doc/>
<variable name='type'><source-position first-line='729' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><multiset><indextype><string/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='position'><doc/>
<variable name='position'><source-position first-line='732' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='conf'><doc/>
<variable name='conf'><source-position first-line='735' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><object resolved='predef::Protocols.LysKOM.Session.Membership'/></type></variable>
</docgroup>
<docgroup homogen-name='number_unread' homogen-type='method'><doc/>
<method name='number_unread'><source-position first-line='766' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_read_texts' homogen-type='method'><doc/>
<method name='query_read_texts'><source-position first-line='773' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unread_texts' homogen-type='method'><doc/>
<method name='unread_texts'>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Membership.unread_texts'/></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='Person'><source-position first-line='870' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><docgroup homogen-type='variable' homogen-name='no'><doc/>
<variable name='no'><source-position first-line='873' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='no'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc><group><fixme/><text><p>Undocumented</p>
</text></group></doc>
<variable name='prefetch_stat'><type><mixed/></type></variable>
<variable name='prefetch_conf'><type><mixed/></type></variable>
<variable name='prefetch_membership'><type><mixed/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><group><fixme/><text><p>Undocumented</p>
</text></group></doc>
<variable name='error'><type><object resolved='predef::Protocols.LysKOM.Session.Person'/></type></variable>
<variable name='user_area'><type><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object></type></variable>
<variable name='username'><type><mixed/></type></variable>
<variable name='privileges'><type><mixed/></type></variable>
<variable name='flags'><type><mixed/></type></variable>
<variable name='last_login'><type><mixed/></type></variable>
<variable name='total_time_present'><type><mixed/></type></variable>
<variable name='sessions'><type><mixed/></type></variable>
<variable name='created_lines'><type><mixed/></type></variable>
<variable name='created_bytes'><type><mixed/></type></variable>
<variable name='read_texts'><type><mixed/></type></variable>
<variable name='no_of_text_fetches'><type><mixed/></type></variable>
<variable name='created_persons'><type><mixed/></type></variable>
<variable name='created_confs'><type><mixed/></type></variable>
<variable name='first_created_local_no'><type><mixed/></type></variable>
<variable name='no_of_created_texts'><type><mixed/></type></variable>
<variable name='no_of_marks'><type><mixed/></type></variable>
<variable name='no_of_confs'><type><mixed/></type></variable>
<variable name='unread'><type><mixed/></type></variable>
<variable name='clear_membership'><type><int><min>0</min><max>0</max></int></type></variable>
<variable name='membership'><type><mixed/></type></variable>
</docgroup>
</class>

<class name='Conference'><source-position first-line='1012' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='no'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><classname>"."</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='user'><doc><text><p>This variable contains the
 <ref resolved='predef::Protocols.LysKOM.Session.Person'>Protocols.LysKOM.Session.Person</ref>
 that is logged in.</p>
</text></doc>
<variable name='user'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/><type><object resolved='predef::Protocols.LysKOM.Session'/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes the session object, and opens
	a connection to that server.</p>
<p>	<ref resolved='predef::Protocols.LysKOM.Session.create.options'>options</ref> is a mapping of options:</p>
<mapping><group><member><type><or><int/><string/></or></type><index>"login"</index></member><text><p>login as this person number (get number from name).</p>
</text></group><group><member><type><string/></type><index>"create"</index></member><text><p>create a new person and login with it.</p>
</text></group><group><member><type><string/></type><index>"password"</index></member><text><p>send this login password.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"invisible"</index></member><text><p>if set, login invisible.</p>
</text></group><group><member><type><int><min>0</min><max>65535</max></int></type><index>"port"</index></member><text><p>server port (default is 4894).</p>
</text></group><group><member><type><string/></type><index>"whoami"</index></member><text><p>present as this user (default is from uid/getpwent and hostname).</p>
</text></group></mapping>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LysKOM.Connection'>Connection</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='text' homogen-type='method'><doc><text><p>Returns the text <ref resolved='predef::Protocols.LysKOM.Session.text.no'>no</ref>.</p>
</text></doc>
<method name='text'><source-position first-line='695' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='no'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='person' homogen-type='method'><doc><text><p>Returns the person <ref resolved='predef::Protocols.LysKOM.Session.person.no'>no</ref>.</p>
</text></doc>
<method name='person'><source-position first-line='1006' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='no'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.Person'>Person</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='conference' homogen-type='method'><doc><text><p>Returns conference number <ref resolved='predef::Protocols.LysKOM.Session.conference.no'>no</ref>.</p>
</text></doc>
<method name='conference'><source-position first-line='1098' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='no'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_complete_person' homogen-type='method'><doc><text><p>Runs a LysKOM completion on the given string,
 returning an array of confzinfos of the match.</p>
</text></doc>
<method name='try_complete_person'><source-position first-line='1105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='orig'><type><string/></type></argument></arguments>
<returntype><array><valuetype><object>ProtocolTypes.ConfZInfo</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='login' homogen-type='method'><doc><text><p>Performs a login. Throws a lyskom error if unsuccessful.</p>
</text><group><returns/><text><p>The session object logged in.</p>
</text></group></doc>
<method name='login'>
<arguments><argument name='user_no'><type><int/></type></argument><argument name='password'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.login'/></returntype>
</method>
<method name='login'>
<arguments><argument name='user_no'><type><int/></type></argument><argument name='password'><type><string/></type></argument><argument name='invisible'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.login'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_person' homogen-type='method'><doc><text><p>Create a person, which will be logged in.
 returns the new person object</p>
</text></doc>
<method name='create_person'><source-position first-line='1125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.create_person'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='logout' homogen-type='method'><doc><text><p>Logouts from the server.
 returns the called object</p>
</text></doc>
<method name='logout'><source-position first-line='1134' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments/>
<returntype><object resolved='predef::Protocols.LysKOM.Session'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_text' homogen-type='method'><doc><text><p>Creates a new text.</p>
<p> 	if <ref resolved='predef::Protocols.LysKOM.Session.create_text.callback'>callback</ref> is given, the function will be called when the text
 	has been created, with the text as first argument.
	Otherwise, the new text is returned.</p>
<p>	<ref resolved='predef::Protocols.LysKOM.Session.create_text.options'>options</ref> is a mapping that may contain:</p>
<mapping><group><member><type><or><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object></valuetype></array></or></type><index>"recpt"</index></member><text><p>recipient conferences.</p>
</text></group><group><member><type><or><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object></valuetype></array></or></type><index>"cc"</index></member><text><p>cc-recipient conferences.</p>
</text></group><group><member><type><or><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object></valuetype></array></or></type><index>"bcc"</index></member><text><p>bcc-recipient conferences*.</p>
</text></group><group><member><type><or><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object></valuetype></array></or></type><index>"comm_to"</index></member><text><p>The text(s) to be commented.</p>
</text></group><group><member><type><or><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.Text'>Text</object></valuetype></array></or></type><index>"foot_to"</index></member><text><p>The text(s) to be footnoted.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"anonymous"</index></member><text><p>send text anonymously.</p>
</text></group><group><member><type><array><valuetype><object resolved='predef::Protocols.LysKOM.Session.AuxItemInput'>AuxItemInput</object></valuetype></array></type><index>"aux_items"</index></member><text><p>AuxItems you want to set for the text*.</p>
</text></group></mapping>
</text><group><note/><text><p>The items above marked with '*' are only available on protocol 10
	servers. A LysKOM error will be thrown if the call fails.</p>
</text></group><group><seealso/><text><p><ref>Conference.create_text()</ref>, <ref>Text.comment()</ref>, <ref>Text.footnote()</ref></p>
</text></group></doc>
<method name='create_text'>
<arguments><argument name='subject'><type><string/></type></argument><argument name='body'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.create_text'/></returntype>
</method>
<method name='create_text'>
<arguments><argument name='subject'><type><string/></type></argument><argument name='body'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument><argument name='callback'><type><function/></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Protocols.LysKOM.Session.create_text'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_message' homogen-type='method'><doc><text><p>Sends a message.</p>
<p>	<ref resolved='predef::Protocols.LysKOM.Session.send_message.options'>options</ref> is a mapping that may contain:</p>
<mapping><group><member><type><object resolved='predef::Protocols.LysKOM.Session.Conference'>Conference</object></type><index>"recpt"</index></member><text><p>recipient conference.</p>
</text></group></mapping>
</text></doc>
<method name='send_message'><source-position first-line='1234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='textstring'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><or><object resolved='predef::Protocols.LysKOM.Session.send_message'/><void/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='register_async_message_callback' homogen-type='method'><doc/>
<method name='register_async_message_callback'><source-position first-line='1251' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LysKOM.pmod/Session.pike'/>
<arguments><argument name='cb'><type><function><argtype><int/></argtype><argtype><int/></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>







<module name='SMTP'>

<class name='Client'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><docgroup homogen-type='inherit' homogen-name='Protocol'><doc>
</doc>
<inherit name='Protocol'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><classname>Protocol</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates an SMTP mail client and connects it to the
 the <ref resolved='predef::Protocols.SMTP.Client.create.server'>server</ref> provided. The server parameter may
 either be a string witht the hostnam of the mail server,
 or it may be a file object acting as a mail server.
 If <ref resolved='predef::Protocols.SMTP.Client.create.server'>server</ref> is a string, than an optional port parameter
 may be provided. If no port parameter is provided, port
 25 is assumed. If no parameters at all is provided
 the client will look up the mail host by searching
 for the DNS MX record.</p>
</text><group><throws/><text><p>Throws an exception if the client fails to connect to
   the mail server.</p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='server'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='server'><type><string/></type></argument><argument name='port'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_message' homogen-type='method'><doc><text><p>Sends a mail message from <ref resolved='predef::Protocols.SMTP.Client.send_message.from'>from</ref> to the mail addresses
 listed in <ref resolved='predef::Protocols.SMTP.Client.send_message.to'>to</ref> with the mail body <ref resolved='predef::Protocols.SMTP.Client.send_message.body'>body</ref>. The body
 should be a correctly formatted mail DATA block, e.g.
 produced by <ref resolved='predef::MIME.Message'>MIME.Message</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.SMTP.Client.simple_mail'>simple_mail</ref></p>
</text></group><group><throws/><text><p>If the mail server returns any other return code than
   200-399 an exception will be thrown.</p>
</text></group></doc>
<method name='send_message'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='body'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_mail' homogen-type='method'><doc><text><p>Sends an e-mail. Wrapper function that uses <ref resolved='predef::Protocols.SMTP.Client.send_message'>send_message</ref>.</p>
</text><group><note/><text><p>Some important headers are set to:
   <expr>"Content-Type: text/plain; charset=iso-8859-1"</expr> and 
   <expr>"Content-Transfer-Encoding: 8bit"</expr>. <expr>"Date:"</expr>
   header isn't used at all.</p>
</text></group><group><throws/><text><p>If the mail server returns any other return code than
   200-399 an exception will be thrown.</p>
</text></group></doc>
<method name='simple_mail'><source-position first-line='170' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/>
<arguments><argument name='to'><type><string/></type></argument><argument name='subject'><type><string/></type></argument><argument name='from'><type><string/></type></argument><argument name='msg'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify' homogen-type='method'><doc><text><p>Verifies the mail address <ref resolved='predef::Protocols.SMTP.Client.verify.addr'>addr</ref> against the mail server.</p>
</text><group><returns/><text><array><group><elem><type><int/></type><index>code</index></elem><text><p>The numerical return code from the VRFY call.</p>
</text></group><group><elem><type><string/></type><index>message</index></elem><text><p>The textual answer to the VRFY call.</p>
</text></group></array>
</text></group><group><note/><text><p>Some mail servers does not answer truthfully to
   verfification queries in order to prevent spammers
   and others to gain information about the mail
   addresses present on the mail server.</p>
</text></group><group><throws/><text><p>If the mail server returns any other return code than
   200-399 an exception will be thrown.</p>
</text></group></doc>
<method name='verify'><source-position first-line='204' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/>
<arguments><argument name='addr'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='Configuration'><source-position first-line='211' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><doc><text><p>Class to store configuration variable for the SMTP server</p>
</text></doc><docgroup homogen-type='variable' homogen-name='maxsize'><doc><text><p>Message max size</p>
</text></doc>
<variable name='maxsize'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='maxrcpt'><doc><text><p>Maximum number of recipients (default 1000)</p>
</text></doc>
<variable name='maxrcpt'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='checkdns'><doc><text><p>Verify sender domain for MX</p>
</text></doc>
<variable name='checkdns'><source-position first-line='220' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='checkemail'><doc><text><p>Lamme check email from validity</p>
</text></doc>
<variable name='checkemail'><source-position first-line='223' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='givedata'><doc><text><p>Give raw data and normal MIME data, if set to
 yes your cb_data function should take an extra
 string argument</p>
</text></doc>
<variable name='givedata'><source-position first-line='228' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
</class>

<class name='Connection'><source-position first-line='254' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><doc><text><p>The low-level class for the SMTP server</p>
</text></doc><docgroup homogen-type='variable' homogen-name='logfunction'><doc><text><p>This function is called whenever the SMTP server logs something.
 By default the log function is <ref resolved='predef::werror'>werror</ref>.</p>
</text></doc>
<variable name='logfunction'><source-position first-line='355' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><function><argtype><string/></argtype><returntype><mixed/></returntype></function></type></variable>
</docgroup>
</class>

<class name='Server'><source-position first-line='844' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><doc><text><p>The use of Protocols.SMTP.server is quite easy and allow you 
  to design custom functions to process mail. This module does not
  handle mail storage nor relaying to other domains.
 So it is your job to provide mail storage and relay mails to other servers</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a receiving SMTP server. It implements RFC 2821, 2822 and 1854.</p>
</text><group><param name='domain'/><text><p>Domains name this server relay, you need to provide at least one
   domain (the first one will be used for MAILER-DAEMON address).
   if you want to relay everything you can put a '*' after this
   first domain.</p>
</text></group><group><param name='port'/><text><p>Port this server listen on</p>
</text></group><group><param name='listenip'/><text><p>IP on which server listen</p>
</text></group><group><param name='cb_mailfrom'/><text><p>Mailfrom callback function, this function will be called
   when a client send a mail from command. This function must take a
   string as argument (corresponding to the sender's email) and return
   int corresponding to the SMTP code to output to the client. If you
   return an array the first element is the SMTP code and the second
   is the error string to display.</p>
</text></group><group><param name='cb_rcptto'/><text><p>Same as cb_mailfrom but called when a client sends a rcpt to.</p>
</text></group><group><param name='cb_data'/><text><p>This function is called each time a client send a data content.
  It must have the following synopsis:
  int cb_data(object mime, string sender, array(string) recipients,  void|string rawdata)
  object mime : the mime data object
  string sender : sender of the mail (from the mailfrom command)
  array(string) recipients : one or more recipients given by the rcpt 
     to command
 return : SMTP code to output to the client. If you return an array 
   the first element is the SMTP code and the second is the error string
   to display.</p>
</text></group><group><example/><text><p>Here is an example of silly program that does nothing except outputing
  informations to stdout.
 int cb_mailfrom(string mail)
 {
   return 250;
 }</p>
<p> int cb_rcptto(string email)
 {
   // check the user's mailbox here
   return 250;
 }</p>
<p> int cb_data(object mime, string sender, array(string) recipients)
 {
   write(sprintf("smtpd: mailfrom=%s, to=%s, headers=%O\ndata=%s\n", 
   sender, recipients * ", ", mime-&gt;headers, mime-&gt;getdata()));
   // check the data and deliver the mail here
   if(mime-&gt;body_parts)
   {
     foreach(mime-&gt;body_parts, object mpart)
       write("smtpd: mpart data = %O\n", mpart-&gt;getdata());
   }
   return 250;
 }</p>
<p> int main(int argc, array(string) argv)
 {
   Protocols.SMTP.Server(({ "ece.fr" }), 2500, "127.0.0.1",       cb_mailfrom, cb_rcptto, cb_data);
   return -1;
 }</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='_domains'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='port'><type><or><void/><int/></or></type></argument><argument name='ip'><type><or><void/><string/></or></type></argument><argument name='_cb_mailfrom'><type><function/></type></argument><argument name='_cb_rcptto'><type><function/></type></argument><argument name='_cb_data'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='variable' homogen-name='replycodes'><doc><text><p>A mapping(int:string) that maps SMTP return
 codes to english textual messages.</p>
</text></doc>
<variable name='replycodes'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SMTP.pmod/module.pmod'/><type><mapping><indextype><int/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
</module>

<module name='SNMP'>

<class name='protocol'><doc><text><p>SNMP protocol implementation for Pike</p>
<p> RFCs:</p>
<p>  implemented (yet):
      1155-7 : v1</p>
<p>      1901-4 : v2/community (Bulk ops aren't implemented!)</p>
<p>  planned:
	 2742   : agentX</p>
<p>      2570   : v3 description</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='snmp'><doc>
</doc>
<inherit name='snmp'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/><classname resolved='predef::Stdio.UDP'>Stdio.UDP</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='snmp_version'><doc><text><p>SNMP version</p>
<p> currently version 1 and 2 are supported.</p>
</text></doc>
<variable name='snmp_version'><source-position first-line='181' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='snmp_community'><doc><text><p>SNMP community string</p>
<p> should be set to the appropriate SNMP community before sending a request.</p>
</text><group><note/><text><p>Set to "public" by default.</p>
</text></group></doc>
<variable name='snmp_community'><source-position first-line='189' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>create a new SNMP protocol object</p>
</text><group><param name='rem_port'/><param name='rem_addr'/><text><p>remote address and UDP port (optional)</p>
</text></group><group><param name='loc_port'/><param name='loc_addr'/><text><p>local address and UDP port (optional)</p>
</text></group></doc>
<method name='create'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='rem_port'><type><or><int/><void/></or></type></argument><argument name='rem_addr'><type><or><string/><void/></or></type></argument><argument name='loc_port'><type><or><int/><void/></or></type></argument><argument name='loc_addr'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='readmsg' homogen-type='method'><doc><text><p>return the whole SNMP message in raw format</p>
</text></doc>
<method name='readmsg'><source-position first-line='240' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_asn1_msg' homogen-type='method'><doc><text><p>decode ASN1 data, if garbaged ignore it</p>
</text></doc>
<method name='decode_asn1_msg'><source-position first-line='248' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='rawd'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='to_pool' homogen-type='method'><doc><text><p>decode raw pdu message and place in message pool</p>
</text></doc>
<method name='to_pool'><source-position first-line='269' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='rawd'><type><mapping/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='readmsg_from_pool' homogen-type='method'><doc><text><p>read decoded message from pool</p>
</text></doc>
<method name='readmsg_from_pool'><source-position first-line='290' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/><modifiers><private/></modifiers>
<arguments><argument name='msgid'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_request' homogen-type='method'><doc><text><p>GetRequest-PDU call</p>
</text><group><param name='varlist'/><text><p>an array of OIDs to GET</p>
</text></group><group><param name='rem_addr'/><param name='rem_port'/><text><p>remote address an UDP port to send request to (optional)</p>
</text></group><group><returns/><text><p>request ID</p>
</text></group></doc>
<method name='get_request'><source-position first-line='359' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='varlist'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='rem_addr'><type><or><string/><void/></or></type></argument><argument name='rem_port'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_response' homogen-type='method'><doc><text><p>GetResponse-PDU call</p>
</text><group><param name='varlist'/><text><p>a mapping containing data to return</p>
<mapping><group><member><type><array/></type><index>oid1</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid1</p>
</text></group></array></text></group><group><member><type><array/></type><index>oid2</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid2</p>
</text></group></array></text></group><group><member><type><array/></type><index>oidn</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oidn</p>
</text></group></array></text></group></mapping></text></group><group><param name='origdata'/><text><p>original received decoded pdu that this response corresponds to</p>
</text></group><group><param name='errcode'/><text><p>error code</p>
</text></group><group><param name='erridx'/><text><p>error index</p>
</text></group><group><returns/><text><p>request ID</p>
</text></group></doc>
<method name='get_response'><source-position first-line='473' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='varlist'><type><mapping/></type></argument><argument name='origdata'><type><mapping/></type></argument><argument name='errcode'><type><or><int/><void/></or></type></argument><argument name='erridx'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_nextrequest' homogen-type='method'><doc><text><p>GetNextRequest-PDU call</p>
</text><group><param name='varlist'/><text><p>an array of OIDs to GET</p>
</text></group><group><param name='rem_addr'/><param name='rem_port'/><text><p>remote address an UDP port to send request to (optional)</p>
</text></group><group><returns/><text><p>request ID</p>
</text></group></doc>
<method name='get_nextrequest'><source-position first-line='513' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='varlist'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='rem_addr'><type><or><string/><void/></or></type></argument><argument name='rem_port'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_request' homogen-type='method'><doc><text><p>SetRequest-PDU call</p>
</text><group><param name='varlist'/><text><p>a mapping of OIDs to SET</p>
<mapping><group><member><type><array/></type><index>oid1</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid1</p>
</text></group></array></text></group><group><member><type><array/></type><index>oid2</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid2</p>
</text></group></array></text></group><group><member><type><array/></type><index>oidn</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oidn</p>
</text></group></array></text></group></mapping></text></group><group><param name='rem_addr'/><param name='rem_port'/><text><p>remote address an UDP port to send request to (optional)</p>
</text></group><group><returns/><text><p>request ID</p>
</text></group><group><example/><text><p>// set the value of 1.3.6.1.4.1.1882.2.1 to "blah".
   object s=Protocols.SNMP.protocol();
   s-&gt;snmp_community="mysetcommunity";
   mapping req=(["1.3.6.1.4.1.1882.2.1": ({"str", "blah"})]);
   int id=s-&gt;set_request(req, "172.21.124.32");</p>
</text></group></doc>
<method name='set_request'><source-position first-line='582' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='varlist'><type><mapping/></type></argument><argument name='rem_addr'><type><or><string/><void/></or></type></argument><argument name='rem_port'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='trap' homogen-type='method'><doc><text><p>send an SNMP-v1 trap</p>
</text><group><param name='varlist'/><text><p>a mapping of OIDs to include in trap</p>
<mapping><group><member><type><array/></type><index>oid1</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid1</p>
</text></group></array></text></group><group><member><type><array/></type><index>oid2</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oid2</p>
</text></group></array></text></group><group><member><type><array/></type><index>oidn</index></member><text><array><group><elem><type><string/></type><index>type</index></elem><text><p>data type such as tick, oid, gauge, etc</p>
</text></group><group><elem><type><mixed/></type><index>data</index></elem><text><p>data to return for oidn</p>
</text></group></array></text></group></mapping></text></group><group><param name='oid'/><param name='type'/><text><p>generic trap-type</p>
</text></group><group><param name='spectype'/><text><p>specific trap-type</p>
</text></group><group><param name='ticks'/><text><p>uptime</p>
</text></group><group><param name='locip'/><text><p>originating ip address of the trap</p>
</text></group><group><param name='remaddr'/><param name='remport'/><text><p>address and UDP to send trap to</p>
</text></group><group><returns/><text><p>request id</p>
</text></group></doc>
<method name='trap'><source-position first-line='651' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/protocol.pike'/>
<arguments><argument name='varlist'><type><mapping/></type></argument><argument name='oid'><type><string/></type></argument><argument name='type'><type><int/></type></argument><argument name='spectype'><type><int/></type></argument><argument name='ticks'><type><int/></type></argument><argument name='locip'><type><or><string/><void/></or></type></argument><argument name='remaddr'><type><or><string/><void/></or></type></argument><argument name='remport'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class><doc><text><p>SNMPv1 and v2c</p>
</text></doc><docgroup homogen-type='constant' homogen-name='ERROR_TOOBIG'><doc><text><p>Error tooBig</p>
</text></doc>
<constant name='ERROR_TOOBIG'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ERROR_NOERROR'><doc><text><p>Error noError</p>
</text></doc>
<constant name='ERROR_NOERROR'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ERROR_NOSUCHNAME'><doc><text><p>Error noSuchName</p>
</text></doc>
<constant name='ERROR_NOSUCHNAME'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ERROR_BADVALUE'><doc><text><p>Error badValue</p>
</text></doc>
<constant name='ERROR_BADVALUE'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ERROR_READONLY'><doc><text><p>Error readOnly</p>
</text></doc>
<constant name='ERROR_READONLY'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ERROR_GENERROR'><doc><text><p>Error genError</p>
</text></doc>
<constant name='ERROR_GENERROR'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQUEST_GET'><doc><text><p>PDU type Get</p>
</text></doc>
<constant name='REQUEST_GET'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQUEST_GETNEXT'><doc><text><p>PDU type GetNext</p>
</text></doc>
<constant name='REQUEST_GETNEXT'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQUEST_SET'><doc><text><p>PDU type Set</p>
</text></doc>
<constant name='REQUEST_SET'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQUEST_GET_RESPONSE'><doc><text><p>PDU type GetResponse</p>
</text></doc>
<constant name='REQUEST_GET_RESPONSE'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQUEST_TRAP'><doc><text><p>PDU type Trap</p>
</text></doc>
<constant name='REQUEST_TRAP'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/module.pmod'/></constant>
</docgroup>


<class name='agent'><doc><text><p>A simple SNMP agent with support for SNMP Get requests</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/><classname resolved='predef::Protocols.SNMP.protocol'>"protocol"</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>create a new instance of the agent</p>
</text><group><param name='port'/><text><p>the port number to listen for requests on</p>
</text></group><group><param name='addr'/><text><p>the address to bind to for listening</p>
</text></group><group><note/><text><p>only one agent may be bound to a port at one time
    the agent does not currently support SMUX or AGENTX or other
    agent multiplexing protocols.</p>
</text></group></doc>
<method name='create'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='port'><type><or><int/><void/></or></type></argument><argument name='addr'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_threaded' homogen-type='method'><doc><text><p>Run the agent event loop in a thread, if available.</p>
</text></doc>
<method name='set_threaded'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_managers_only' homogen-type='method'><doc><text><p>enable manager access limits</p>
</text><group><param name='yesno'/><text><p>1 to allow only managers to submit requests
 0 to allow any host to submit requests</p>
<p> default setting allows all requests from all hosts</p>
</text></group></doc>
<method name='set_managers_only'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='yesno'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_get_communities' homogen-type='method'><doc><text><p>set the valid community strings for Get requests</p>
</text><group><param name='communities'/><text><p>an array of valid Get communities</p>
</text></group><group><note/><text><p>send an empty array to disable Get requests</p>
</text></group></doc>
<method name='set_get_communities'><source-position first-line='197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='communities'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_communities' homogen-type='method'><doc><text><p>set the valid community strings for Set requests</p>
</text><group><param name='communities'/><text><p>an array of valid Set communities</p>
</text></group><group><note/><text><p>send an empty array to disable Set requests</p>
</text></group></doc>
<method name='set_set_communities'><source-position first-line='209' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='communities'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_managers' homogen-type='method'><doc><text><p>set the valid manager list for requests</p>
</text><group><param name='managers'/><text><p>an array of valid management hosts</p>
</text></group><group><note/><text><p>send an empty array to disable all requests</p>
</text></group></doc>
<method name='set_managers'><source-position first-line='221' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='managers'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_oid_callback' homogen-type='method'><doc><text><p>set the Set request callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to serve as the handler for all requests
   for which a handler is specified.</p>
</text></group><group><param name='cb'/><text><p>the function to call when oid is requested by a manager
   the function should take 3 arguments: a string containing the 
   requested oid, the desired value, and the body of the request as a mapping.
   The function should return an array containing 3 elements:
   The first is a boolean indicating success or failure.
   If success, the next 2 elements should be the SNMP data type of 
   the result followed by the result itself.
   If failure, the next 2 elements should be the error-status
   such as <ref resolved='predef::Protocols.SNMP.ERROR_TOOBIG'>Protocols.SNMP.ERROR_TOOBIG</ref> and the second
   is the error-index, if any.</p>
</text></group><group><note/><text><p>there can be only one callback per object identifier.
    calling this function more than once with the same oid will
    result in the new callback replacing the existing one.</p>
</text></group></doc>
<method name='set_set_oid_callback'><source-position first-line='247' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear_set_oid_callback' homogen-type='method'><doc><text><p>clear the Set callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to indicate the default handler.</p>
</text></group><group><returns/><text><p>1 if the callback existed, 0 otherwise</p>
</text></group></doc>
<method name='clear_set_oid_callback'><source-position first-line='265' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_set_oid_callback' homogen-type='method'><doc><text><p>get the Set request callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to indicate the default handler</p>
</text></group><group><returns/><text><p>the function associated with oid, if any</p>
</text></group></doc>
<method name='get_set_oid_callback'><source-position first-line='286' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument></arguments>
<returntype><or><void/><function/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_get_oid_callback' homogen-type='method'><doc><text><p>set the Get request callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to serve as the handler for all requests
   for which a handler is specified.</p>
</text></group><group><param name='cb'/><text><p>the function to call when oid is requested by a manager
   the function should take 2 arguments: a string containing the 
   requested oid and the body of the request as a mapping.
   The function should return an array containing 3 elements:
   The first is a boolean indicating success or failure.
   If success, the next 2 elements should be the SNMP data type of 
   the result followed by the result itself.
   If failure, the next 2 elements should be the error-status
   such as <ref resolved='predef::Protocols.SNMP.ERROR_TOOBIG'>Protocols.SNMP.ERROR_TOOBIG</ref> and the second
   is the error-index, if any.</p>
</text></group><group><note/><text><p>there can be only one callback per object identifier.
    calling this function more than once with the same oid will
    result in the new callback replacing the existing one.</p>
</text></group></doc>
<method name='set_get_oid_callback'><source-position first-line='317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument><argument name='cb'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear_get_oid_callback' homogen-type='method'><doc><text><p>clear the Get callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to indicate the default handler.</p>
</text></group><group><returns/><text><p>1 if the callback existed, 0 otherwise</p>
</text></group></doc>
<method name='clear_get_oid_callback'><source-position first-line='335' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_get_oid_callback' homogen-type='method'><doc><text><p>get the Get request callback function for an Object Identifier</p>
</text><group><param name='oid'/><text><p>the string object identifier, such as 1.3.6.1.4.1.132.2
   or an asterisk (*) to indicate the default handler</p>
</text></group><group><returns/><text><p>the function associated with oid, if any</p>
</text></group></doc>
<method name='get_get_oid_callback'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/SNMP.pmod/agent.pike'/>
<arguments><argument name='oid'><type><string/></type></argument></arguments>
<returntype><or><void/><function/></or></returntype>
</method>
</docgroup>
</class></module>





<module name='Bittorrent'>

<module name='Bencoding'><docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Decodes a Bittorrent bencoded data chunk.</p>
</text><group><returns/><text><array><group><elem><type><or><string/><int/><array/><mapping/></or></type><index>data</index></elem><text><p>The decoded data. UNDEFINED if no data could be decoded.</p>
</text></group><group><elem><type><string/></type><index>remainder</index></elem><text><p>The trailing data that wasn't decoded.</p>
</text></group></array>
</text></group></doc>
<method name='_decode'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><int/><array/><mapping/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes a Bittorrent bencoded data chunk and ignores the remaining
 string. Returns UNDEFINED if the data is incomplete.</p>
</text></doc>
<method name='decode'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><or><string/><int/><array/><mapping/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encodes a Bittorrent bencoded data chunk.</p>
</text></doc>
<method name='encode'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='data'><type><or><string/><int/><array/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bits2string' homogen-type='method'><doc><text><p>Convert an array of <expr>int(0..1)</expr> to a Bittorrent style
 bitstring. Input will be padded to even bytes.</p>
</text></doc>
<method name='bits2string'><source-position first-line='118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='v'><type><array><valuetype><int><min>0</min><max>1</max></int></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='string2bits' homogen-type='method'><doc><text><p>Convert a Bittorrent style bitstring to an array of
 <expr>int(0..1)</expr>.</p>
</text></doc>
<method name='string2bits'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>1</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='string2arr' homogen-type='method'><doc><text><p>Convert a Bittorrent style bitstring to an array of indices.</p>
</text></doc>
<method name='string2arr'><source-position first-line='132' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Bencoding.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<class name='Port'><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Bind a port for this Torrent.</p>
</text></doc>
<method name='create'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Port.pike'/>
<arguments><argument name='_parent'><type><object resolved='predef::Protocols.Bittorrent.Torrent'>.Torrent</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Peer'><docgroup homogen-name='is_connectable' homogen-type='method'><doc><text><p>Returns true if we can connect to this peer,
 when new or disconnected but not fatally.</p>
</text></doc>
<method name='is_connectable'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_online' homogen-type='method'><doc><text><p>Returns true if this peer is online and connected.</p>
</text></doc>
<method name='is_online'><source-position first-line='118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_completed' homogen-type='method'><doc><text><p>Returns true if this peer is completed, as in
 has downloaded everything already - and we
 shouldn't need to upload to get stuff.</p>
</text></doc>
<method name='is_completed'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_available' homogen-type='method'><doc><text><p>Returns true if this peer is available, as in
 we can use it to download stuff.</p>
</text></doc>
<method name='is_available'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_activated' homogen-type='method'><doc><text><p>Returns true if this peer is activated, as in
 we're downloading from it.</p>
</text></doc>
<method name='is_activated'><source-position first-line='141' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_strangled' homogen-type='method'><doc><text><p>Returns true if this peer is strangled;
 as in we don't want to upload more, because we're not
 getting any back.</p>
</text></doc>
<method name='is_strangled'><source-position first-line='149' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_choked' homogen-type='method'><doc><text><p>Returns true if this peer is choking, as in
 doesn't send more data to us.</p>
</text></doc>
<method name='is_choked'><source-position first-line='156' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='downloading_pieces' homogen-type='method'><doc><text><p>Returns as multiset what this peer is downloading.</p>
</text></doc>
<method name='downloading_pieces'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><multiset><indextype><int/></indextype></multiset></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>Connect to the peer; this is done async.
 status/mode will change from <expr>"connecting"</expr> to
 <expr>"dead"</expr> or to <expr>"connected"</expr> depending on result.
 Will throw error if already online.</p>
<p> Upon connect, protocol will be initiated in choked mode.
 When the protocol is up, status will change to <expr>"online"</expr>
 (or <expr>"failed"</expr> if the handshake failed).</p>
</text></doc>
<method name='connect'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='disconnect' homogen-type='method'><doc><text><p>Disconnect a peer.
 Does nothing if we aren't online.
 status/mode will change to <expr>"disconnected"</expr>,1 if we were online.</p>
</text></doc>
<method name='disconnect'><source-position first-line='239' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_have' homogen-type='method'><doc><text><p>Send a have message to tell I now have piece n.
 Ignored if not online.</p>
</text></doc>
<method name='send_have'><source-position first-line='670' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='request' homogen-type='method'><doc><text><p>Called to request a chunk from this peer.</p>
</text></doc>
<method name='request'><source-position first-line='681' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments><argument name='piece'><type><int/></type></argument><argument name='offset'><type><int/></type></argument><argument name='bytes'><type><int/></type></argument><argument name='callback'><type><function><argtype><int/></argtype><argtype><int/></argtype><argtype><string/></argtype><argtype><object resolved='predef::Protocols.Bittorrent.Peer.request'/></argtype><returntype><or><void/><mixed/></or></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='status' homogen-type='method'><doc><text><p>Called whenever there is a status change for this peer.
 Always called with <expr>"created"</expr> when the object is created.</p>
<p> Does not need to call inherited function.</p>
</text></doc>
<method name='status'><source-position first-line='869' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Peer.pike'/>
<arguments><argument name='type'><type><string/></type></argument><argument name='data'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Torrent'><doc><text><p>Bittorrent peer - download and share.
 Read more about bittorrent at 
 <url>http://bitconjurer.org/BitTorrent/introduction.html</url></p>
</text><group><example/><text><p>The smallest usable torrent downloader. As first argument,
 it expects a filename to a .torrent file.</p>
<code><text><p>int main(int ac,array am)
   {
      // initialize Torrent from file:
      Protocols.Bittorrent.Torrent t=Protocols.Bittorrent.Torrent(); 
      t-&gt;load_metainfo(am[1]); </p>
<p>      // Callback when download status changes:
      // t-&gt;downloads_update_status=...;</p>
<p>      // Callback when pieces status change (when we get new stuff):
      // t-&gt;pieces_update_status=...; </p>
<p>      // Callback when peer status changes (connect, disconnect, choked...):
      // t-&gt;peer_update_status=...;</p>
<p>      // Callback when download is completed:
      t-&gt;download_completed_callback=
         lambda()
         {
             call_out(exit,3600,0);    // share for an hour, then exit
         };</p>
<p>      // Callback to print warnings (same args as sprintf):
      //   t-&gt;warning=werror; </p>
<p>      // type of progress function used below:
      void progress(int n,int of) { /* ... */ };</p>
<p>      // Initiate targets from Torrent,
      // if target was created, no need to verify:
      if (t-&gt;fix_targets(1,0,progress)==1)
         t-&gt;verify_targets(progress); </p>
<p>      // Open port to listen on,
      // we want to do this to be able to talk to firewalled peers:
      t-&gt;my_port=6881;
      t-&gt;open_port();</p>
<p>      // Ok, start calling tracker to get peers,
      // and tell about us:
      t-&gt;start_update_tracker();</p>
<p>      // Finally, start the download:
      t-&gt;start_download();</p>
<p>      return -1;
   }</p>
</text></code>
</text></group></doc>

<class name='Target'><source-position first-line='189' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><doc><text><p>Each bittorrent has one or more target files.
 This represents one of those.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='base'><type><string/></type></variable>
<variable name='length'><type><int/></type></variable>
<variable name='offset'><type><int/></type></variable>
<variable name='path'><type><or><void/><array/></or></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='base'><type><string/></type></argument><argument name='length'><type><int/></type></argument><argument name='offset'><type><int/></type></argument><argument name='path'><type><or><void/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><classname resolved='predef::Protocols.Bittorrent.Bencoding'>.Bencoding</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='do_we_strangle'><doc><text><p>Function to determine if we should strangle this peer.
 Default is to allow 100000 bytes of data over the ratio,
 which is 2:1 per default; upload twice as much as we get.</p>
<p> Arguments are the peer, bytes in (downloaded) and bytes out
 (uploaded). Return 1 to strangle and 0 to allow the peer to
 proceed downloading again.</p>
</text></doc>
<variable name='do_we_strangle'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function><argtype><object resolved='predef::Protocols.Bittorrent.Peer'>.Peer</object></argtype><argtype><int/></argtype><argtype><int/></argtype><returntype><int><min>0</min><max>1</max></int></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pieces_update_status'><doc><text><p>If set, called when we got another piece downloaded (no args).</p>
</text></doc>
<variable name='pieces_update_status'><source-position first-line='116' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='downloads_update_status'><doc><text><p>If set, called when we start to download another piece (no args).</p>
</text></doc>
<variable name='downloads_update_status'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='peer_update_status'><doc><text><p>If set, called when peer status changes.</p>
</text></doc>
<variable name='peer_update_status'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='download_completed_callback'><doc><text><p>If set, called when download is completed.</p>
</text></doc>
<variable name='download_completed_callback'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='warning'><doc><text><p>Called if there is a protocol error.</p>
</text></doc>
<variable name='warning'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/><type><function><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><void/><mixed/></or></returntype></function></type></variable>
</docgroup>
<docgroup homogen-name='load_metainfo' homogen-type='method'><doc><text><p>Loads the metainfo from a file.</p>
</text></doc>
<method name='load_metainfo'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fix_targets' homogen-type='method'><doc><text><p>Opens target datafile(s).</p>
<p> If all files are created, the verify info will be filled as well,
 but if it isn't created, a call to <ref>verify_target()</ref> is necessary
 after this call.</p>
</text><group><param name='allocate'/><text><p>Determines allocation procedure if the file doesn't exist:</p>
<int><group><value>0</value><text><p>Don't allocate.</p>
</text></group><group><value>1</value><text><p>Allocate virtual file size (seek, write end byte).</p>
</text></group><group><value>2</value><text><p>Allocate for real (will call progress_callback(pos,length)).</p>
</text></group><group><value>-1</value><text><p>Means never create a file, only open old files.</p>
</text></group></int>
</text></group><group><param name='my_filename'/><text><p>A new base filename to substitute the metainfo base target
   filename with.</p>
</text></group><group><returns/><text><int><group><value>1</value><text><p>The (a) file was already there.</p>
</text></group><group><value>2</value><text><p>All target files were created.</p>
</text></group></int>
</text></group></doc>
<method name='fix_targets'><source-position first-line='316' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='allocate'><type><or><void/><int><min>-1</min><max>2</max></int></or></type></argument><argument name='base_filename'><type><or><void/><string/></or></type></argument><argument name='progress_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='verify_targets' homogen-type='method'><doc><text><p>Verify the file and fill file_got (necessary after load_info,
 but needs open_file before this call).
 [ progress_callback(at chunk,total chunks) ]</p>
</text></doc>
<method name='verify_targets'><source-position first-line='393' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='progress_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open_port' homogen-type='method'><doc><text><p>Open the port we're listening on.</p>
</text></doc>
<method name='open_port'><source-position first-line='414' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bytes_done' homogen-type='method'><doc><text><p>Calculate the bytes successfully downloaded (full pieces).</p>
</text></doc>
<method name='bytes_done'><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bytes_left' homogen-type='method'><doc><text><p>Calculate the bytes left to download.</p>
</text></doc>
<method name='bytes_left'><source-position first-line='449' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='update_tracker' homogen-type='method'><doc><text><p>Contact and update the tracker with current status
 will fill the peer list.</p>
</text></doc>
<method name='update_tracker'><source-position first-line='460' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='event'><type><or><void/><string/></or></type></argument><argument name='contact'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_update_tracker' homogen-type='method'><doc><text><p>Starts to contact the tracker at regular intervals, giving it the
 status and recieving more peers to talk to. Will also contact
 these peers. The default interval is 5 minutes. If given an event,
 will update tracker with it.</p>
</text></doc>
<method name='start_update_tracker'><source-position first-line='600' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='interval'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='stop_update_tracker' homogen-type='method'><doc><text><p>Stops updating the tracker; will send the event as a last event,
 if set. It will not contact new peers.</p>
</text></doc>
<method name='stop_update_tracker'><source-position first-line='618' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='event'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='contact_peers' homogen-type='method'><doc><text><p>Contact all or n peers.</p>
</text></doc>
<method name='contact_peers'><source-position first-line='625' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments><argument name='n'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='file_got_bitfield' homogen-type='method'><doc><text><p>Returns the file got field as a string bitfield (cached).</p>
</text></doc>
<method name='file_got_bitfield'><source-position first-line='636' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_download' homogen-type='method'><doc><text><p>Initiate the downloading scheme.</p>
</text></doc>
<method name='start_download'><source-position first-line='657' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Torrent.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Generator'><doc><text><p>Generate a .torrent binary string from files in the filesystem</p>
</text><group><example/><text><p>// usage: thisprogram [&lt;file/dir&gt;] [&lt;file/dir&gt;...] &lt;target .torrent&gt;
   int main(int ac,array am)
   {
      Generator g=Generator();
      foreach (am[1..sizeof(am)-2];;string f)
         g-&gt;add(f);</p>
<p>      string dest=am[-1];
      if (-1==search(dest,"torrent")) dest+=".torrent";</p>
<p>      Stdio.write_file(dest,g-&gt;digest());
      return 0;
   }</p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Torrent'><doc>
</doc>
<inherit name='Torrent'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/><classname resolved='predef::Protocols.Bittorrent.Torrent'>.Torrent</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a generator.</p>
</text><group><param name='base'/><text><p>The base filename/path in the torrent.</p>
</text></group><group><param name='piece_size'/><text><p>The size of the pieces that the SHA hashes are calculated on.
   Default 262144 and this value should probably be 2^n.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='base'><type><or><void/><string/></or></type></argument><argument name='piece_size'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_announce' homogen-type='method'><doc><text><p>Add one or multiple announcers (trackers). This is needed to get a
 valid .torrent file. If this is called more then once, more
 announcers (trackers) will be added with lower priority.</p>
</text></doc>
<method name='add_announce'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='announce_url'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.Bittorrent.Generator'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_file' homogen-type='method'><doc><text><p>Add a file to the torrent. The second argument
 is what the file will be called in the torrent.</p>
</text></doc>
<method name='add_file'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='filename'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.Bittorrent.Generator'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_directory_tree' homogen-type='method'><doc><text><p>Add a directory tree to the torrent. The second argument
 is what the directory will be called in the torrent.
 This will call add_file on all non-directories in the tree.</p>
</text></doc>
<method name='add_directory_tree'><source-position first-line='95' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='dirbase'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.Bittorrent.Generator'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a file, or a directory tree to the torrent.
 This will call add_directory_tree or add_file.</p>
</text></doc>
<method name='add'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='base'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Protocols.Bittorrent.Generator'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='build_sha1s' homogen-type='method'><doc><text><p>Build the SHA hashes from the files.</p>
</text></doc>
<method name='build_sha1s'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='progress_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='digest' homogen-type='method'><doc><text><p>Finally make a torrent string out of this information.
 Will call build_sha1's if the sha1's aren't generated already.</p>
<p> <ref resolved='predef::Protocols.Bittorrent.Generator.digest.progress_callback'>progress_callback</ref> is called with (pos,of) arguments, similar
 to <ref resolved='predef::Protocols.Bittorrent.Torrent.verify_targets'>Torrent.verify_targets</ref>.</p>
</text></doc>
<method name='digest'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Bittorrent.pmod/Generator.pike'/>
<arguments><argument name='progress_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class></module>









<module name='LDAP'>

<class name='protocol'><docgroup homogen-type='inherit' homogen-name='ldap'><doc>
</doc>
<inherit name='ldap'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike'/><classname resolved='predef::Stdio.File'>Stdio.File</classname></inherit>
</docgroup>
<docgroup homogen-name='error_number' homogen-type='method'><doc><text><p>Returns error number of last transaction.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.protocol.error_string'>LDAP.protocol.error_string</ref></p>
</text></group></doc>
<method name='error_number'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='error_string' homogen-type='method'><doc><text><p>Returns error description of search result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.protocol.error_number'>LDAP.protocol.error_number</ref></p>
</text></group></doc>
<method name='error_string'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/protocol.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='client'><doc><text><p>Contains the client implementation of the LDAP protocol.
 All of the version 2 protocol features are implemented
 but only the base parts of the version 3.</p>
</text></doc>

<class name='result'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/><doc><text><p>Contains the result of a LDAP search.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.search'>LDAP.client.search</ref>, <ref resolved='predef::Protocols.LDAP.client.result.fetch'>LDAP.client.result.fetch</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>You can't create instances of this object yourself.
 The only way to create it is via a search of a LDAP server.</p>
</text></doc>
<method name='create'><source-position first-line='177' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='rawres'><type><array/></type></argument><argument name='stuff'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><object resolved='predef::Protocols.LDAP.client.result.create'/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='error_number' homogen-type='method'><doc><text><p>Returns error number of search result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.error_string'>LDAP.client.result.error_string</ref></p>
</text></group></doc>
<method name='error_number'><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='error_string' homogen-type='method'><doc><text><p>Returns error description of search result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.error_number'>LDAP.client.result.error_number</ref></p>
</text></group></doc>
<method name='error_string'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_entries' homogen-type='method'><doc><text><p>Returns the number of entries.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.count_entries'>LDAP.client.result.count_entries</ref></p>
</text></group></doc>
<method name='num_entries'><source-position first-line='246' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='count_entries' homogen-type='method'><doc><text><p>Returns the number of entries from current cursor
 possition till end of the list.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.first'>LDAP.client.result.first</ref>, <ref resolved='predef::Protocols.LDAP.client.result.next'>LDAP.client.result.next</ref></p>
</text></group></doc>
<method name='count_entries'><source-position first-line='254' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch' homogen-type='method'><doc><text><p>Returns a mapping with an entry for each attribute.
 Each entry is an array of values of the attribute.</p>
</text><group><param name='index'/><text><p>Optional argument can be used for direct access
  to the entry other then currently pointed by cursor.</p>
</text></group></doc>
<method name='fetch'><source-position first-line='262' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='idx'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><int/><mapping><indextype><string/></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dn' homogen-type='method'><doc><text><p>Returns distinguished name (DN) of the current entry
 in the result list. Notice that this is the same
 as fetch()-&gt;dn[0].</p>
</text></doc>
<method name='get_dn'><source-position first-line='277' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='first' homogen-type='method'><doc><text><p>Initialized the result cursor to the first entry
 in the result list.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.next'>LDAP.client.result.next</ref></p>
</text></group></doc>
<method name='first'><source-position first-line='285' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>Moves the result cursor to the next entry
 in the result list. Returns number of remained entries
 in the result list. Returns 0 at the end.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result.next'>LDAP.client.result.next</ref></p>
</text></group></doc>
<method name='next'><source-position first-line='294' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/><classname resolved='predef::SSL.Constants'>SSL.Constants</classname></import>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='protocol'><doc>
</doc>
<inherit name='protocol'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/><classname resolved='predef::Protocols.LDAP.protocol'>.protocol</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='info'><doc><text><p>Several information about code itself and about active connection too</p>
</text></doc>
<variable name='info'><source-position first-line='352' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create object. The first optional argument can be used later
 for subsequence operations. The second one can specify
 TLS context of connection. The default context only allows
 128-bit encryption methods, so you may need to provide your
 own context if your LDAP server supports only export encryption.</p>
</text><group><param name='url'/><text><p>LDAP server URL in form
    <expr>"ldap://hostname/basedn?attrlist?scope?ext"</expr></p>
</text></group><group><param name='context'/><text><p>TLS context of connection</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.bind'>LDAP.client.bind</ref>, <ref resolved='predef::Protocols.LDAP.client.search'>LDAP.client.search</ref></p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='url'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='url'><type><string/></type></argument><argument name='context'><type><object resolved='predef::Protocols.LDAP.client.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='bind' homogen-type='method'><doc><text><p>Authenticates connection to the direcory.</p>
<p> First form uses default value previously entered in create.</p>
<p> Second form uses value from parameters:</p>
</text><group><param name='dn'/><text><p>The distinguished name (DN) of an entry aginst which will
  be made authentication.</p>
</text></group><group><param name='password'/><text><p>Password used for authentication.</p>
<p> Third form allows specify the version of LDAP protocol used
 by connection to the LDAP server.</p>
</text></group><group><param name='version'/><text><p>Only <expr>2</expr> or <expr>3</expr> can be entered.</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>Only simple authentication type is implemented. So be warned
  clear text passwords are sent to the directory server.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='bind'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='bind'>
<arguments><argument name='dn'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='bind'>
<arguments><argument name='dn'><type><string/></type></argument><argument name='password'><type><string/></type></argument><argument name='version'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unbind' homogen-type='method'><doc><text><p>Unbinds from the directory and close the connection.</p>
</text></doc>
<method name='unbind'><source-position first-line='557' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete' homogen-type='method'><doc><text><p>Deletes entry from the LDAP server.</p>
</text><group><param name='dn'/><text><p>The distinguished name of deleted entry.</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='delete'><source-position first-line='587' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='dn'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compare' homogen-type='method'><doc><text><p>Compares given attribute value with one in the directory.</p>
</text><group><param name='dn'/><text><p>The distinguished name of compared entry.</p>
</text></group><group><param name='aval'/><text><p>The mapping of compared attributes and theirs values.</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='compare'><source-position first-line='646' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='dn'><type><string/></type></argument><argument name='aval'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>The Add Operation allows a client to request the addition
  of an entry into the directory</p>
</text><group><param name='dn'/><text><p>The Distinguished Name of the entry to be added.</p>
</text></group><group><param name='attrs'/><text><p>The mapping of attributes and their values that make up the content
  of the entry being added.</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='add'><source-position first-line='720' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='dn'><type><string/></type></argument><argument name='attrs'><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='search' homogen-type='method'><doc><text><p>Search LDAP directory.</p>
</text><group><param name='filter'/><text><p>Search filter used when searching directory objects.</p>
</text></group><group><param name='attrs'/><text><p>The array of attribute names which will be returned by server.
   for every entry.</p>
</text></group><group><param name='attrsonly'/><text><p>The flag causes server return only attribute name but not
   the attribute values.</p>
</text></group><group><returns/><text><p>Returns object <ref resolved='predef::Protocols.LDAP.client.result'>LDAP.client.result</ref> on success, <expr>0</expr>
	otherwise.</p>
</text></group><group><note/><text><p>For syntax of search filter see at RFC 1960
   (http://community.roxen.com/developers/idocs/rfc/rfc1960.html).</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.LDAP.client.result'>LDAP.client.result</ref>, <ref resolved='predef::Protocols.LDAP.client.result.fetch'>LDAP.client.result.fetch</ref></p>
</text></group></doc>
<method name='search'><source-position first-line='1003' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='filter'><type><or><string/><void/></or></type></argument><argument name='attrs'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument><argument name='attrsonly'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><object resolved='predef::Protocols.LDAP.client.search'/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_basedn' homogen-type='method'><doc><group><param name='base_dn'/><text><p>base DN for search</p>
</text></group></doc>
<method name='set_basedn'><source-position first-line='1194' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='base_dn'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_scope' homogen-type='method'><doc><text><p>Sets value of scope for search operation.</p>
</text><group><param name='scope'/><text><p>Value can be integer or its corresponding string value.
  0: base, 1: one, 2: sub</p>
</text></group></doc>
<method name='set_scope'><source-position first-line='1213' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='scope'><type><or><int/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_option' homogen-type='method'><doc><group><param name='option_type'/><text><p>LDAP_OPT_xxx</p>
</text></group><group><param name='value'/><text><p>new value for option</p>
</text></group></doc>
<method name='set_option'><source-position first-line='1238' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='opttype'><type><int/></type></argument><argument name='value'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_option' homogen-type='method'><doc><group><param name='option_type'/><text><p>LDAP_OPT_xxx</p>
</text></group></doc>
<method name='get_option'><source-position first-line='1270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='opttype'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='modifydn' homogen-type='method'><doc><text><p>The Modify DN Operation allows a client to change the leftmost
  (least significant) component of the name of an entry in the directory,
  or to move a subtree of entries to a new location in the directory.</p>
</text><group><param name='dn'/><text><p>DN of source object</p>
</text></group><group><param name='newrdn'/><text><p>RDN of destination</p>
</text></group><group><param name='deleteoldrdn'/><text><p>The parameter controls whether the old RDN attribute values
  are to be retained as attributes of the entry, or deleted
  from the entry.</p>
</text></group><group><param name='newsuperior'/><text><p>If present, this is the Distinguished Name of the entry
  which becomes the immediate superior of the existing entry.</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='modifydn'><source-position first-line='1366' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='dn'><type><string/></type></argument><argument name='newrdn'><type><string/></type></argument><argument name='deleteoldrdn'><type><int/></type></argument><argument name='newsuperior'><type><or><string/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='modify' homogen-type='method'><doc><text><p>The Modify Operation allows a client to request that a modification
  of an entry be performed on its behalf by a server.</p>
</text><group><param name='dn'/><text><p>The distinguished name of modified entry.</p>
</text></group><group><param name='attropval'/><text><p>The mapping of attributes with requested operation and attribute's
  values.</p>
<p>   attropval=([ attribute: ({operation, value1, value2, ...}) ])</p>
<p>   where operation is one of the following:
    0 (LDAP_OPERATION_ADD) -
      add values listed to the given attribute, creating the attribute
      if necessary
    1 (LDAP_OPERATION_DELETE) -
      delete values listed from the given attribute, removing the entire
      attribute if no values are listed, or if all current values
      of the attribute are listed for deletion
    2 (LDAP_OPERATION_REPLACE) -
      replace all existing values of the given attribute with the new
      values listed, creating the attribute if it did not already exist.
      A replace with no value will delete the entire attribute if it
      exists, and is ignored if the attribute does not exist</p>
</text></group><group><returns/><text><p>Returns <expr>1</expr> on uccess, <expr>0</expr> otherwise.</p>
</text></group><group><note/><text><p>The API change: the returning code was changed in Pike 7.3+
	to follow his logic better.</p>
</text></group></doc>
<method name='modify'><source-position first-line='1426' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='dn'><type><string/></type></argument><argument name='attropval'><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><mixed/></valuetype></array></valuetype></mapping></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_referrals' homogen-type='method'><doc><text><p>Gets referrals.</p>
</text><group><returns/><text><p>Returns array of referrals or <expr>0</expr>.</p>
</text></group></doc>
<method name='get_referrals'><source-position first-line='1465' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments/>
<returntype><or><array/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_url' homogen-type='method'><doc><group><param name='ldapuri'/><text><p>LDAP URL</p>
</text></group></doc>
<method name='parse_url'><source-position first-line='1473' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LDAP.pmod/client.pike'/>
<arguments><argument name='ldapuri'><type><string/></type></argument></arguments>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
</class></module>



<module name='X'>

<module name='Extensions'>

<class name='extension'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/><modifiers><static/></modifiers><doc><text><p>an abstract class used to provide features for implimenting
 X11 extensions. Provides no useful functionality on its own.</p>
</text></doc><docgroup homogen-name='init' homogen-type='method'><doc><text><p>initialize the extension.</p>
</text><group><param name='d'/><text><p>An object of type Protocols.X.Xlib.Display</p>
</text></group></doc>
<method name='init'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/>
<arguments><argument name='d'><type><object resolved='predef::Protocols.X.Extensions.extension.init'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='XTEST'><source-position first-line='162' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/><doc><text><p>Provides support for the X11 XTEST extension.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='extension'><doc>
</doc>
<inherit name='extension'><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/><classname resolved='predef::Protocols.X.Extensions.extension'>extension</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create object.</p>
</text></doc>
<method name='create'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='init' homogen-type='method'><doc><text><p>Initialize the XTEST extension. Returns 1 if successful.</p>
</text><group><param name='display'/><text><p>Protocols.X.Display object</p>
</text></group></doc>
<method name='init'><source-position first-line='177' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/>
<arguments><argument name='display'><type><object resolved='predef::Protocols.X.Extensions.XTEST.init'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='XTestFakeInput' homogen-type='method'><doc><text><p>Send a synthetic event to an X server.</p>
</text><group><param name='event_type'/><text><p>Type of event to send. Possible values: KeyPress: 2, KeyRelease: 3, 
   ButtonPress: 4, ButtonRelease: 5, MotionNotify: 6</p>
</text></group><group><param name='detail'/><text><p>Button (for Button events) or Keycode (for Key events) to send</p>
</text></group><group><param name='delay'/><text><p>Delay before the X server simulates event. 0 indicates zero delay.</p>
</text></group><group><param name='window'/><text><p>Window object that a motion event occurrs in. If no window is provided, the root window will be used.</p>
</text></group><group><param name='xloc'/><text><p>For motion events, this is the relative X distance or absolute X coordinates.</p>
</text></group><group><param name='yloc'/><text><p>For motion events, this is the relative Y distance or absolute Y coordinates.</p>
</text></group></doc>
<method name='XTestFakeInput'><source-position first-line='209' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/>
<arguments><argument name='event_type'><type><string/></type></argument><argument name='detail'><type><int/></type></argument><argument name='delay'><type><int/></type></argument><argument name='window'><type><or><object resolved='predef::Protocols.X.Extensions.XTEST.XTestFakeInput'/><void/></or></type></argument><argument name='xloc'><type><or><int/><void/></or></type></argument><argument name='yloc'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='XTestGrabControl' homogen-type='method'><doc><text><p>Cause the executing client to become impervious to server grabs.
 That is, it can continue to execute requests even if another client 
 grabs the server.</p>
</text><group><param name='impervious'/><text><p>A true (non zero) value causes the client to perform as 
   described above. If false (zero), server returns to the normal 
   state of  being susceptible to server grabs.</p>
</text></group></doc>
<method name='XTestGrabControl'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/X.pmod/Extensions.pmod'/>
<arguments><argument name='impervious'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module></module>

<module name='XMLRPC'><doc><text><p>This module implements most features of the XML-RPC standard (see
 <url>http://xml-rpc.org/</url>).</p>
<p> Translation rules for conversions from Pike datatypes to XML-RPC
 datatypes:</p>
<p> Pike <expr>int</expr> is translated to XML-RPC <tt>&lt;int&gt;</tt>.
 Pike <expr>string</expr> is translated to XML-RPC <tt>&lt;string&gt;</tt>.
 Pike <expr>float</expr> is translated to XML-RPC <tt>&lt;double&gt;</tt>.
 Pike <expr>mapping</expr> is translated to XML-RPC <tt>&lt;struct&gt;</tt>.
 Pike <expr>array</expr> is translated to XML-RPC <tt>&lt;array&gt;</tt>.</p>
<p> Translation rules for conversions from XML-RPC datatypes to Pike
 datatypes:</p>
<p> XML-RPC <tt>&lt;i4&gt;</tt>, <tt>&lt;int&gt;</tt> and <tt>&lt;boolean&gt;</tt> are
   translated to Pike <expr>int</expr>.
 XML-RPC <tt>&lt;string&gt;</tt> and <tt>&lt;base64&gt;</tt> are translated to
   Pike <expr>string</expr>.
 XML_RPC <tt>&lt;double&gt;</tt> is translated to Pike <expr>float</expr>.
 XML-RPC <tt>&lt;struct&gt;</tt> is translated to Pike <expr>mapping</expr>.
 XML-RPC <tt>&lt;array&gt;</tt> is translated to Pike <expr>array</expr>.
 XML-RPC <tt>&lt;dateTime.iso8601&gt;</tt> is translated to Pike Calendar object.</p>
</text><group><note/><text><p>The XML-RPC <tt>&lt;dateTime.iso8601&gt;</tt> datatype is currently only
 partially implemented. It is decoded but cannot be encoded. Also,
 the code here does not assume any particular timezone (which is
 correct according to the specification). The Calendar module,
 however, seems to assume localtime.</p>
</text></group></doc>

<class name='Call'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/><doc><text><p>Represents a function call made to a XML-RPC server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.XMLRPC.decode_call'>decode_call()</ref></p>
</text></group></doc><docgroup><doc>
</doc>
<variable name='method_name'><type><string/></type></variable>
<variable name='params'><type><array/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='method_name'><type><string/></type></argument><argument name='params'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='method_name'><doc><text><p>Represents <tt>&lt;methodName&gt;</tt> in the XML-RPC standard.</p>
</text></doc>
<variable name='method_name'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='params'><doc><text><p>Represents <tt>&lt;params&gt;</tt> in the XML-RPC standard where all
 datatypes have been converted to equivalent or similar datatypes
 in Pike.</p>
</text></doc>
<variable name='params'><type><array/></type></variable>
</docgroup>
</class>

<class name='Fault'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/><doc><text><p>Represents a fault response which can be one of the return values
 from a XML-RPC function call.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.XMLRPC.decode_response'>decode_response()</ref></p>
</text></group></doc><docgroup><doc>
</doc>
<variable name='fault_code'><type><int/></type></variable>
<variable name='fault_string'><type><string/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='fault_code'><type><int/></type></argument><argument name='fault_string'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='fault_code'><doc><text><p>Represents <tt>faultCode</tt> in the XML-RPC standard.</p>
</text></doc>
<variable name='fault_code'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='fault_string'><doc><text><p>Represents <tt>faultString</tt> in the XML-RPC standard.</p>
</text></doc>
<variable name='fault_string'><type><int/></type></variable>
</docgroup>
</class>

<class name='Client'><source-position first-line='337' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/><doc><text><p>This class implements an XML-RPC client that uses HTTP transport.</p>
</text><group><example/><text><p><pre>
   &gt; Protocols.XMLRPC.Client client = Protocols.XMLRPC.Client("http://www.oreillynet.com/meerkat/xml-rpc/server.php");
   Result: Protocols.XMLRPC.Client("http://www.oreillynet.com/meerkat/xml-rpc/server.php");
   &gt; client["system.listMethods"]();
   Result: ({ /* 1 element */
  		    ({ /* 9 elements */
  			"meerkat.getChannels",
  			"meerkat.getCategories",
  			"meerkat.getCategoriesBySubstring",
  			"meerkat.getChannelsByCategory",
  			"meerkat.getChannelsBySubstring",
  			"meerkat.getItems",
  			"system.listMethods",
  			"system.methodHelp",
  			"system.methodSignature"
  		    })
  		})
 </pre></p>
</text></group></doc><docgroup><doc>
</doc>
<variable name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='url'><type><or><string/><object resolved='predef::Standards.URI'>Standards.URI</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='decode_call' homogen-type='method'><doc><text><p>Decodes a XML-RPC representation of a function call and returns a
 <ref resolved='predef::Protocols.XMLRPC.Call'>Call</ref> object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.XMLRPC.Call'>Call</ref></p>
</text></group></doc>
<method name='decode_call'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/>
<arguments><argument name='xml_input'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.XMLRPC.Call'>Call</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_response' homogen-type='method'><doc><text><p>Decodes a XML-RPC representation of a response and returns an
 array containing response values, or a <ref resolved='predef::Protocols.XMLRPC.Fault'>Fault</ref> object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.XMLRPC.Fault'>Fault</ref></p>
</text></group></doc>
<method name='decode_response'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/>
<arguments><argument name='xml_input'><type><string/></type></argument></arguments>
<returntype><or><array/><object resolved='predef::Protocols.XMLRPC.Fault'>Fault</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_call' homogen-type='method'><doc><text><p>Encodes a function call with the name <ref resolved='predef::Protocols.XMLRPC.encode_call.method_name'>method_name</ref> and the arguments
 <ref resolved='predef::Protocols.XMLRPC.encode_call.params'>params</ref> and returns the XML-RPC string representation.</p>
</text></doc>
<method name='encode_call'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/>
<arguments><argument name='method_name'><type><string/></type></argument><argument name='params'><type><array/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_response' homogen-type='method'><doc><text><p>Encodes a response containing the multiple values in <ref resolved='predef::Protocols.XMLRPC.encode_response.params'>params</ref> and
 returns the XML-RPC string representation.</p>
</text></doc>
<method name='encode_response'><source-position first-line='118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/>
<arguments><argument name='params'><type><array/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode_response_fault' homogen-type='method'><doc><text><p>Encodes a response fault containing a <ref resolved='predef::Protocols.XMLRPC.encode_response_fault.fault_code'>fault_code</ref> and a
 <ref resolved='predef::Protocols.XMLRPC.encode_response_fault.fault_string'>fault_string</ref> and returns the XML-RPC string representation.</p>
</text></doc>
<method name='encode_response_fault'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/XMLRPC.pmod/module.pmod'/>
<arguments><argument name='fault_code'><type><int/></type></argument><argument name='fault_string'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='NNTP'>

<class name='protocol'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/><doc><text><p>NNTP protocol</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='sock'><doc>
</doc>
<inherit name='sock'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/><classname resolved='predef::Stdio.FILE'>Stdio.FILE</classname></inherit>
</docgroup>
<docgroup homogen-name='readreturncode' homogen-type='method'><doc><text><p>reads the server result code for last request
  used internally by command().</p>
</text></doc>
<method name='readreturncode'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_body_lines' homogen-type='method'><doc><text><p>reads the message from the server as an array of lines</p>
</text></doc>
<method name='read_body_lines'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='readreturnbody' homogen-type='method'><doc><text><p>reads the message from the server</p>
</text></doc>
<method name='readreturnbody'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='writebody' homogen-type='method'><doc><text><p>send the body of a message to the server.</p>
</text></doc>
<method name='writebody'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='command' homogen-type='method'><doc><text><p>send a command to the server</p>
</text><group><returns/><text><p>the result code sent by the server</p>
</text></group></doc>
<method name='command'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='cmd'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_response_message' homogen-type='method'><doc><text><p>gets the result message supplied by the server for the last response</p>
</text></doc>
<method name='get_response_message'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='failsafe_command' homogen-type='method'><doc><text><p>send a command and require an ok response (200 series).
 throws an error if the command result was not success.</p>
</text></doc>
<method name='failsafe_command'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='cmd'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_cmd_with_body' homogen-type='method'><doc><text><p>send a command that should return a message body.</p>
</text><group><returns/><text><p>the message body</p>
</text></group></doc>
<method name='do_cmd_with_body'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='cmd'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='client'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/><doc><text><p>An NNTP client</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='protocol'><doc>
</doc>
<inherit name='protocol'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/><classname resolved='predef::Protocols.NNTP.protocol'>protocol</classname></inherit>
</docgroup>
<docgroup homogen-name='list_groups' homogen-type='method'><doc><text><p>Returns a list of all active groups.</p>
</text></doc>
<method name='list_groups'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments/>
<returntype><array><valuetype><object>Group</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='current_group'><doc><text><p>The current news group.</p>
</text></doc>
<variable name='current_group'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/><type><object>Group</object></type></variable>
</docgroup>
<docgroup homogen-name='set_group' homogen-type='method'><doc><text><p>Sets the current news group to <ref resolved='predef::Protocols.NNTP.client.set_group.o'>o</ref>.</p>
</text></doc>
<method name='set_group'><source-position first-line='132' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='o'><type><object>Group</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='go_to_group' homogen-type='method'><doc><text><p>Sets the current group to <ref resolved='predef::Protocols.NNTP.client.go_to_group.group'>group</ref>.</p>
</text></doc>
<method name='go_to_group'><source-position first-line='141' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='group'><type><string/></type></argument></arguments>
<returntype><object>Group</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='head' homogen-type='method'><doc/>
<method name='head'><source-position first-line='152' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='x'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='body' homogen-type='method'><doc/>
<method name='body'><source-position first-line='159' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='x'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='article' homogen-type='method'><doc/>
<method name='article'><source-position first-line='166' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='x'><type><or><void/><int/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='173' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/NNTP.pmod'/>
<arguments><argument name='server'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='DNS'><doc><text><p>Domain Name System
 RFC 1035</p>
</text></doc><enum name='ResourceClass'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><doc><text><p>Resource classes</p>
</text></doc><docgroup homogen-type='constant' homogen-name='C_IN'><doc><text><p>Class Internet</p>
</text></doc>
<constant name='C_IN'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='C_CS'><doc><text><p>Class CSNET (Obsolete)</p>
</text></doc>
<constant name='C_CS'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='C_CH'><doc><text><p>Class CHAOS</p>
</text></doc>
<constant name='C_CH'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='C_HS'><doc><text><p>Class Hesiod</p>
</text></doc>
<constant name='C_HS'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='C_ANY'><doc><text><p>Class ANY</p>
</text></doc>
<constant name='C_ANY'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
</enum><enum name='EntryType'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><doc><text><p>Entry types</p>
</text></doc><docgroup homogen-type='constant' homogen-name='T_A'><doc><text><p>Type - host address</p>
</text></doc>
<constant name='T_A'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_NS'><doc><text><p>Type - authoritative name server</p>
</text></doc>
<constant name='T_NS'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MD'><doc><text><p>Type - mail destination (Obsolete - use MX)</p>
</text></doc>
<constant name='T_MD'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MF'><doc><text><p>Type - mail forwarder (Obsolete - use MX)</p>
</text></doc>
<constant name='T_MF'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_CNAME'><doc><text><p>Type - canonical name for an alias</p>
</text></doc>
<constant name='T_CNAME'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_SOA'><doc><text><p>Type - start of a zone of authority</p>
</text></doc>
<constant name='T_SOA'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MB'><doc><text><p>Type - mailbox domain name (EXPERIMENTAL)</p>
</text></doc>
<constant name='T_MB'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MG'><doc><text><p>Type - mail group member (EXPERIMENTAL)</p>
</text></doc>
<constant name='T_MG'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MR'><doc><text><p>Type - mail rename domain name (EXPERIMENTAL)</p>
</text></doc>
<constant name='T_MR'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_NULL'><doc><text><p>Type - null RR (EXPERIMENTAL)</p>
</text></doc>
<constant name='T_NULL'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_WKS'><doc><text><p>Type - well known service description</p>
</text></doc>
<constant name='T_WKS'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_PTR'><doc><text><p>Type - domain name pointer</p>
</text></doc>
<constant name='T_PTR'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_HINFO'><doc><text><p>Type - host information</p>
</text></doc>
<constant name='T_HINFO'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MINFO'><doc><text><p>Type - mailbox or mail list information</p>
</text></doc>
<constant name='T_MINFO'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_MX'><doc><text><p>Type - mail exchange</p>
</text></doc>
<constant name='T_MX'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_TXT'><doc><text><p>Type - text strings</p>
</text></doc>
<constant name='T_TXT'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_AAAA'><doc><text><p>Type - IPv6 address record (RFC 1886, deprecated)</p>
</text></doc>
<constant name='T_AAAA'><source-position first-line='89' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_LOC'><doc><text><p>Type - Location Record (RFC 1876)</p>
</text></doc>
<constant name='T_LOC'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_SRV'><doc><text><p>Type - Service location record (RFC 2782)</p>
</text></doc>
<constant name='T_SRV'><source-position first-line='95' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='T_A6'><doc><text><p>Type - IPv6 address record (RFC 2874, incomplete support)</p>
</text></doc>
<constant name='T_A6'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/></constant>
</docgroup>
</enum>

<class name='protocol'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><doc><text><p>Low level DNS protocol</p>
</text></doc><docgroup homogen-name='mkquery' homogen-type='method'><doc><text><p>create a DNS query PDU</p>
</text><group><param name='dnameorquery'/><param name='cl'/><text><p>record class such as Protocols.DNS.C_IN</p>
</text></group><group><param name='type'/><text><p>query type such Protocols.DNS.T_A</p>
</text></group><group><returns/><text><p>data suitable for use with 
  <ref resolved='predef::Protocols.DNS.client.do_sync_query'>Protocols.DNS.client.do_sync_query</ref></p>
</text></group><group><example/><text><p>// generate a query PDU for a address lookup on the hostname pike.ida.liu.se
 string q=Protocols.DNS.protocol()-&gt;mkquery("pike.ida.liu.se", Protocols.DNS.C_IN, Protocols.DNS.T_A);</p>
</text></group></doc>
<method name='mkquery'><source-position first-line='263' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/>
<arguments><argument name='dnameorquery'><type><or><string/><mapping/></or></type></argument><argument name='cl'><type><or><int/><void/></or></type></argument><argument name='type'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='server'><source-position first-line='474' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><doc><text><p>Implements a Domain Name Service (DNS) server.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='protocol'><doc>
</doc>
<inherit name='protocol'><source-position first-line='476' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><classname resolved='predef::Protocols.DNS.protocol'>protocol</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='udp'><doc>
</doc>
<inherit name='udp'><source-position first-line='477' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><classname resolved='predef::Stdio.UDP'>Stdio.UDP</classname></inherit>
</docgroup>
<docgroup homogen-name='reply_query' homogen-type='method'><doc><text><p>Reply to a query (stub).</p>
</text><group><param name='query'/><text><p>Parsed query.</p>
</text></group><group><param name='udp_data'/><text><p>Raw UDP data.</p>
<p> Overload this function to implement the proper lookup.</p>
</text></group><group><returns/><text><p>Returns <expr>0</expr> (zero) on failure, or a result mapping on success:</p>
<mapping><group><member><type><int/></type><index>"rcode"</index></member><member><type><or><array><valuetype><mapping><indextype><string/></indextype><valuetype><or><string/><int/></or></valuetype></mapping></valuetype></array><void/></or></type><index>"qd"</index></member><text><array><group><elem><type><mapping><indextype><string/></indextype><valuetype><or><string/><int/></or></valuetype></mapping></type><index>entry</index></elem><text><mapping><group><member><type><or><string/><array><valuetype><string/></valuetype></array></or></type><index>"name"</index></member><member><type><int/></type><index>"type"</index></member><member><type><int/></type><index>"cl"</index></member></group></mapping></text></group></array></text></group><group><member><type><or><array/><void/></or></type><index>"an"</index></member><member><type><or><array/><void/></or></type><index>"ns"</index></member><member><type><or><array/><void/></or></type><index>"ar"</index></member></group></mapping>
</text></group></doc>
<method name='reply_query'><source-position first-line='520' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='query'><type><mapping/></type></argument><argument name='udp_data'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
</class>

<class name='client'><source-position first-line='576' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><doc><text><p>Synchronous DNS client.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='protocol'><doc>
</doc>
<inherit name='protocol'><source-position first-line='579' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/><classname resolved='predef::Protocols.DNS.protocol'>protocol</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='server'><type><or><void/><string/><array/></or></type></argument><argument name='domain'><type><or><void/><int/><array/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_sync_query' homogen-type='method'><doc><text><p>perform a syncronous query</p>
</text><group><param name='s'/><text><p>result of <ref resolved='predef::Protocols.DNS.protocol.mkquery'>Protocols.DNS.protocol.mkquery</ref></p>
</text></group><group><returns/><text><p>mapping containing query result or 0 on failure/timeout</p>
</text></group><group><example/><text><p>// perform a hostname lookup, results stored in r-&gt;an
 object d=Protocols.DNS.client();
 mapping r=d-&gt;do_sync_query(d-&gt;mkquery("pike.ida.liu.se", C_IN, T_A));</p>
</text></group></doc>
<method name='do_sync_query'><source-position first-line='806' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyname' homogen-type='method'><doc><text><p>Queries the host name from the default or given
	DNS server. The result is an array with three elements,</p>
</text><group><returns/><text><p>An array with the requested information about the specified
   host.</p>
<array><group><elem><type><string/></type><index>hostname</index></elem><text><p>Hostname.</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>ip</index></elem><text><p>IP number(s).</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>aliases</index></elem><text><p>DNS name(s).</p>
</text></group></array>
</text></group></doc>
<method name='gethostbyname'>
<arguments><argument name='hostname'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getsrvbyname' homogen-type='method'><doc><text><p>Queries the service record (RFC 2782) from the default or given
	DNS server. The result is an array of arrays with the
   following six elements for each record. The array is
   sorted according to the priority of each record.</p>
<p>   Each element of the array returned represents a service 
   record. Each service record contains the following:</p>
</text><group><returns/><text><p>An array with the requested information about the specified
   service.</p>
<array><group><elem><type><int/></type><index>priority</index></elem><text><p>Priority</p>
</text></group><group><elem><type><int/></type><index>weight</index></elem><text><p>Weight in event of multiple records with same priority.</p>
</text></group><group><elem><type><int/></type><index>port</index></elem><text><p>port number</p>
</text></group><group><elem><type><string/></type><index>target</index></elem><text><p>target dns name</p>
</text></group></array>
</text></group></doc>
<method name='getsrvbyname'><source-position first-line='913' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/DNS.pmod'/>
<arguments><argument name='service'><type><string/></type></argument><argument name='protocol'><type><string/></type></argument><argument name='name'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyaddr' homogen-type='method'><doc><text><p>Queries the host name or ip from the default or given
	DNS server. The result is an array with three elements,</p>
</text><group><returns/><text><p>The requested data about the specified host.</p>
<array><group><elem><type><string/></type><index>hostip</index></elem><text><p>The host IP.</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>ip</index></elem><text><p>IP number(s).</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>aliases</index></elem><text><p>DNS name(s).</p>
</text></group></array>
</text></group></doc>
<method name='gethostbyaddr'>
<arguments><argument name='hostip'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_primary_mx' homogen-type='method'><doc><text><p>Queries the primary mx for the host.</p>
</text><group><returns/><text><p>Returns the hostname of the primary mail exchanger.</p>
</text></group></doc>
<method name='get_primary_mx'>
<arguments><argument name='hostname'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='async_ip_to_host' homogen-type='method'><doc/>
<method name='async_ip_to_host'>
<arguments><argument name='ip'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='cba'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_host_to_ip' homogen-type='method'><doc/>
<method name='async_host_to_ip'>
<arguments><argument name='host'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='cba'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_get_mx_all' homogen-type='method'><doc/>
<method name='async_get_mx_all'>
<arguments><argument name='host'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='cba'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='async_get_mx' homogen-type='method'><doc/>
<method name='async_get_mx'>
<arguments><argument name='host'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='cba'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyname' homogen-type='method'><doc/>
<method name='gethostbyname'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyaddr' homogen-type='method'><doc/>
<method name='gethostbyaddr'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_mx' homogen-type='method'><doc/>
<method name='get_mx'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_primary_mx' homogen-type='method'><doc/>
<method name='get_primary_mx'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='LPD'>

<class name='client'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LPD.pmod'/><doc><text><p>A client for communicating with printers and print spoolers that
 support the BSD lpd protocol (RFC 1179).</p>
</text></doc><docgroup homogen-name='set_job_type' homogen-type='method'><doc><text><p>Set the type of job to be sent to the printer to <i>type</i>.
 Valid types are: text, postscript and raw.</p>
</text></doc>
<method name='set_job_type'>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_job_name' homogen-type='method'><doc><text><p>Sets the name of the print job to <i>name</i>.</p>
</text></doc>
<method name='set_job_name'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_queue' homogen-type='method'><doc><text><p>Start the queue <i>queue</i> if not already printing.</p>
</text><group><returns/><text><p>Returns 0 if unable to connect, 1 otherwise.</p>
</text></group></doc>
<method name='start_queue'>
<arguments><argument name='queue'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_job' homogen-type='method'><doc><text><p>Send print job consisting of data <i>job</i> to printer <i>queue</i>.</p>
</text><group><returns/><text><p>Returns 1 if success, 0 otherwise.</p>
</text></group></doc>
<method name='send_job'>
<arguments><argument name='queue'><type><string/></type></argument><argument name='job'><type><string/></type></argument></arguments>
<returntype><or><string/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_job' homogen-type='method'><doc><text><p>Delete job <i>job</i> from printer <i>queue</i>.</p>
</text><group><returns/><text><p>Returns 1 on success, 0 otherwise.</p>
</text></group></doc>
<method name='delete_job'>
<arguments><argument name='queue'><type><string/></type></argument><argument name='job'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='status' homogen-type='method'><doc><text><p>Check the status of queue <i>queue</i>.</p>
</text><group><returns/><text><p>Returns 0 on failure, otherwise returns the status response from the printer.</p>
</text></group></doc>
<method name='status'>
<arguments><argument name='queue'><type><string/></type></argument></arguments>
<returntype><or><string/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new LPD client connection.</p>
</text><group><param name='hostname'/><text><p>Contains the hostname or ipaddress of the print host.
 if not provided, defaults to <i>localhost</i>.</p>
</text></group><group><param name='portnum'/><text><p>Contains the port the print host is listening on.
 if not provided, defaults to port <i>515</i>, the RFC 1179 standard.</p>
</text></group></doc>
<method name='create'><source-position first-line='234' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LPD.pmod'/>
<arguments><argument name='hostname'><type><or><string/><void/></or></type></argument><argument name='portnum'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='OBEX'><doc><text><p>The IrDA® Object Exchange Protocol.
 OBEX is a protocol for sending and receiving binary objects
 to mobile devices using transports such as IR and Bluetooth.</p>
</text></doc><enum name='Request'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><doc><text><p>A request opcode, for use with the <ref>client.do_request()</ref> function.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='REQ_CONNECT'><doc><text><p>Establish a new OBEX connection</p>
</text></doc>
<constant name='REQ_CONNECT'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_DISCONNECT'><doc><text><p>Terminate an OBEX connection</p>
</text></doc>
<constant name='REQ_DISCONNECT'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_PUT'><doc><text><p>Send an object to the mobile device</p>
</text></doc>
<constant name='REQ_PUT'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_GET'><doc><text><p>Receive an object from the mobile devuce</p>
</text></doc>
<constant name='REQ_GET'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_SETPATH'><doc><text><p>Change the working directory</p>
</text></doc>
<constant name='REQ_SETPATH'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_SESSION'><doc><text><p>Manage a session</p>
</text></doc>
<constant name='REQ_SESSION'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_ABORT'><doc><text><p>Abort the request currently being processed</p>
</text></doc>
<constant name='REQ_ABORT'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='REQ_FINAL'><doc><text><p>For <ref resolved='predef::Protocols.OBEX.Request.REQ_PUT'>REQ_PUT</ref> and <ref resolved='predef::Protocols.OBEX.Request.REQ_GET'>REQ_GET</ref> requests, REQ_FINAL must be set
 for the request block containing the last portion of the headers.
 Other requests must be sent as a single block and have the REQ_FINAL
 bit encoded in their request opcode.</p>
</text></doc>
<constant name='REQ_FINAL'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
</enum><enum name='HeaderIdentifier'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><doc><text><p>An identifier for a request or response header</p>
</text></doc><docgroup homogen-type='constant' homogen-name='HI_COUNT'><doc><text><p>Number of objects to transfer (used by <ref resolved='predef::Protocols.OBEX.Request.REQ_CONNECT'>REQ_CONNECT</ref>)</p>
</text></doc>
<constant name='HI_COUNT'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_NAME'><doc><text><p>Name of the object (string)</p>
</text></doc>
<constant name='HI_NAME'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_TYPE'><doc><text><p>Type of the object (IANA media type)</p>
</text></doc>
<constant name='HI_TYPE'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_LENGTH'><doc><text><p>Length of the object transferred, in octets</p>
</text></doc>
<constant name='HI_LENGTH'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_TIME'><doc><text><p>ISO 8601 timestamp (string)</p>
</text></doc>
<constant name='HI_TIME'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_DESCRIPTION'><doc><text><p>Text description of the object</p>
</text></doc>
<constant name='HI_DESCRIPTION'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_TARGET'><doc><text><p>Name of service that operation is targeted to</p>
</text></doc>
<constant name='HI_TARGET'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_HTTP'><doc><text><p>Any HTTP 1.x header</p>
</text></doc>
<constant name='HI_HTTP'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_BODY'><doc><text><p>A chunk of the object body</p>
</text></doc>
<constant name='HI_BODY'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_ENDOFBODY'><doc><text><p>The final chunk of the object body</p>
</text></doc>
<constant name='HI_ENDOFBODY'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_WHO'><doc><text><p>Identifies the OBEX application (string)</p>
</text></doc>
<constant name='HI_WHO'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_CONNID'><doc><text><p>An identifier used for OBEX connection multiplexing</p>
</text></doc>
<constant name='HI_CONNID'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_APPPARAM'><doc><text><p>Extended application request &amp; response information</p>
</text></doc>
<constant name='HI_APPPARAM'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_AUTHCHALL'><doc><text><p>Authentication digest-challenge</p>
</text></doc>
<constant name='HI_AUTHCHALL'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_AUTHRESP'><doc><text><p>Authentication digest-response</p>
</text></doc>
<constant name='HI_AUTHRESP'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_CREATORID'><doc><text><p>Indicates the creator of an object</p>
</text></doc>
<constant name='HI_CREATORID'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_WANUUID'><doc><text><p>Uniquely identifies the OBEX server</p>
</text></doc>
<constant name='HI_WANUUID'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_OBJCLASS'><doc><text><p>OBEX object class of object</p>
</text></doc>
<constant name='HI_OBJCLASS'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_SESSPARAM'><doc><text><p>Parameters used in session commands/responses</p>
</text></doc>
<constant name='HI_SESSPARAM'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HI_SESSSEQNR'><doc><text><p>Sequence number used in each OBEX packet for reliability</p>
</text></doc>
<constant name='HI_SESSSEQNR'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
</enum>

<class name='Client'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><doc><text><p>An OBEX client</p>
</text><group><seealso/><text><p><ref>ATclient</ref></p>
</text></group></doc><docgroup homogen-name='low_do_request' homogen-type='method'><doc><text><p>Perform a request/response exchange with the server.
 No interpretation is preformed of either the request or
 response data, they are just passed literally.</p>
</text><group><param name='r'/><text><p>Request opcode</p>
</text></group><group><param name='data'/><text><p>Raw request data</p>
</text></group><group><returns/><text><p>An array with the response information</p>
<array><group><elem><type><int/></type><index>returncode</index></elem><text><p>An HTTP response code</p>
</text></group><group><elem><type><string/></type><index>data</index></elem><text><p>Response data, if any</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='low_do_request'><source-position first-line='219' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='r'><type><object resolved='predef::Protocols.OBEX.Request'>Request</object></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_request' homogen-type='method'><doc><text><p>Perform a request/response exchange with the server,
 including processing of headers and request splitting.</p>
</text><group><param name='r'/><text><p>Request opcode</p>
</text></group><group><param name='headers'/><text><p>Request headers</p>
</text></group><group><param name='extra_req'/><text><p>Any request data that should appear before the headers,
   but after the opcode</p>
</text></group><group><returns/><text><p>An array with the response information</p>
<array><group><elem><type><int/></type><index>returncode</index></elem><text><p>An HTTP response code</p>
</text></group><group><elem><type><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></type><index>headers</index></elem><text><p>Response headers</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.low_do_request'>low_do_request()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_abort'>do_abort()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_put'>do_put()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_get'>do_get()</ref>,
   <ref resolved='predef::Protocols.OBEX.Client.do_setpath'>do_setpath()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_session'>do_session()</ref></p>
</text></group></doc>
<method name='do_request'><source-position first-line='268' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='r'><type><object resolved='predef::Protocols.OBEX.Request'>Request</object></type></argument><argument name='headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument><argument name='extra_req'><type><or><string/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_abort' homogen-type='method'><doc><text><p>Perform a <ref resolved='predef::Protocols.OBEX.Request.REQ_ABORT'>REQ_ABORT</ref> request.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='do_abort'><source-position first-line='299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_put' homogen-type='method'><doc><text><p>Perform a <ref resolved='predef::Protocols.OBEX.Request.REQ_PUT'>REQ_PUT</ref> request.</p>
</text><group><param name='data'/><text><p>Body data to send, or a stream to read the data from</p>
</text></group><group><param name='extra_headers'/><text><p>Any additional headers to send (<ref resolved='predef::Protocols.OBEX.HeaderIdentifier.HI_LENGTH'>HI_LENGTH</ref> and <ref resolved='predef::Protocols.OBEX.HeaderIdentifier.HI_BODY'>HI_BODY</ref>
   are generated by this function)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_get'>do_get()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='do_put'><source-position first-line='318' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='data'><type><or><string/><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></or></type></argument><argument name='extra_headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_get' homogen-type='method'><doc><text><p>Perform a <ref resolved='predef::Protocols.OBEX.Request.REQ_GET'>REQ_GET</ref> request.</p>
</text><group><param name='data'/><text><p>A stream to write the body data to</p>
</text></group><group><param name='headers'/><text><p>Headers for the request</p>
</text></group><group><returns/><text><p>See <ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref>.  The Headers do not contain any <ref resolved='predef::Protocols.OBEX.HeaderIdentifier.HI_BODY'>HI_BODY</ref>
   headers, they are written to the <ref resolved='predef::Protocols.OBEX.Client.do_get.data'>data</ref> stream.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_put'>do_put()</ref>, <ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='do_get'><source-position first-line='360' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='data'><type><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></type></argument><argument name='headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_setpath' homogen-type='method'><doc><text><p>Perform a <ref resolved='predef::Protocols.OBEX.Request.REQ_SETPATH'>REQ_SETPATH</ref> request.</p>
</text><group><param name='path'/><text><p>The directory to set as current working directory</p>
<string><group><value>"/"</value><text><p>Go to the root directory</p>
</text></group><group><value>".."</value><text><p>Go to the parent directory</p>
</text></group></string></text></group><group><param name='flags'/><text><p>Logical or of zero or more of <ref resolved='predef::Protocols.OBEX.SETPATH_BACKUP'>SETPATH_BACKUP</ref> and <ref resolved='predef::Protocols.OBEX.SETPATH_NOCREATE'>SETPATH_NOCREATE</ref></p>
</text></group><group><param name='extra_headers'/><text><p>Any additional request headers (the <ref resolved='predef::Protocols.OBEX.HeaderIdentifier.HI_NAME'>HI_NAME</ref> header is generated
   by this function)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='do_setpath'><source-position first-line='399' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument><argument name='extra_headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_session' homogen-type='method'><doc><text><p>Perform a <ref resolved='predef::Protocols.OBEX.Request.REQ_SESSION'>REQ_SESSION</ref> request.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.Client.do_request'>do_request()</ref></p>
</text></group></doc>
<method name='do_session'><source-position first-line='417' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='headers'><type><or><object resolved='predef::Protocols.OBEX.Headers'>Headers</object><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><int/><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='connect' homogen-type='method'><doc><text><p>Establish a new connection using the <ref resolved='predef::Protocols.OBEX.Request.REQ_CONNECT'>REQ_CONNECT</ref> opcode to
 negotiate transfer parameters</p>
</text><group><returns/><text><p>If the connection succeeds, 1 is returned.  Otherwise, 0 is returned.</p>
</text></group></doc>
<method name='connect'><source-position first-line='428' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='disconnect' homogen-type='method'><doc><text><p>Terminate a connection using the <ref resolved='predef::Protocols.OBEX.Request.REQ_DISCONNECT'>REQ_DISCONNECT</ref> opcode</p>
</text><group><returns/><text><p>If the disconnection succeeds, 1 is returned.  Otherwise, 0 is returned.</p>
</text></group></doc>
<method name='disconnect'><source-position first-line='459' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initialize the client by establishing a connection to the
 server at the other end of the provided transport stream</p>
</text><group><param name='_con'/><text><p>A stream for writing requests and reading back responses.
   Typically this is some kind of serial port.</p>
</text></group></doc>
<method name='create'><source-position first-line='490' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='_con'><type><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='ATClient'><source-position first-line='503' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><doc><text><p>An extension of the <ref>client</ref> which uses the AT*EOBEX modem command
 to enter OBEX mode.  Use together with Sony Ericsson data cables.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Client'><doc>
</doc>
<inherit name='Client'><source-position first-line='505' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><classname resolved='predef::Protocols.OBEX.Client'>Client</classname></inherit>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='SETPATH_BACKUP'><doc><text><p>A flag for the <ref resolved='predef::Protocols.OBEX.Request.REQ_SETPATH'>REQ_SETPATH</ref> command indicating that the
 parent directory should be selected</p>
</text></doc>
<constant name='SETPATH_BACKUP'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='SETPATH_NOCREATE'><doc><text><p>A flag for the <ref resolved='predef::Protocols.OBEX.Request.REQ_SETPATH'>REQ_SETPATH</ref> command indicating that the
 selected directory should not be created if it doesn't exist</p>
</text></doc>
<constant name='SETPATH_NOCREATE'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/></constant>
</docgroup>
<docgroup homogen-type='typedef' homogen-name='Headers'><doc><text><p>A set of request or response headers.  Each HI can be associated
 with either a single value (int or string, depending on the HI in
 question) or an array with multiple such values.</p>
</text></doc>
<typedef name='Headers'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/><type><mapping><indextype><object resolved='predef::Protocols.OBEX.HeaderIdentifier'>HeaderIdentifier</object></indextype><valuetype><or><string/><int/><array/></or></valuetype></mapping></type></typedef>
</docgroup>
<docgroup homogen-name='encode_headers' homogen-type='method'><doc><text><p>Serialize a set of headers to wire format</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.OBEX.split_headers'>split_headers()</ref></p>
</text></group></doc>
<method name='encode_headers'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='h'><type><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_headers' homogen-type='method'><doc><text><p>Deserialize a set of headers from wire format</p>
</text></doc>
<method name='decode_headers'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='h'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Protocols.OBEX.Headers'>Headers</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='split_headers' homogen-type='method'><doc><text><p>Given a set of headers in wire format, divide them into
 portions of no more than <ref resolved='predef::Protocols.OBEX.split_headers.chunklen'>chunklen</ref> octets each (if possible).
 No individual header definition will be split into two portions.</p>
</text></doc>
<method name='split_headers'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/OBEX.pmod'/>
<arguments><argument name='h'><type><string/></type></argument><argument name='chunklen'><type><int/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='Line'>

<class name='simple'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><doc><text><p>Simple nonblocking line-oriented I/O.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='line_separator'><doc><text><p>The sequence separating lines from eachother. "\r\n" by default.</p>
</text></doc>
<constant name='line_separator'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers></constant>
</docgroup>
<docgroup homogen-type='variable' homogen-name='handle_data'><doc><text><p>If this variable has been set, multiple lines will be accumulated,
 until a line with a single <expr>"."</expr> (period) is received.
 <ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref> will then be called with the accumulated data
 as the argument.</p>
</text><group><note/><text><p><ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref> is one-shot, ie it will be cleared when it is called.</p>
<p> The line with the single <expr>"."</expr> (period) will not be in the
 accumulated data.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_command'>handle_command()</ref></p>
</text></group></doc>
<variable name='handle_data'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><type><function><argtype><string/></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-name='handle_command' homogen-type='method'><doc><text><p>This function will be called once for every line that is received.</p>
<p> Overload this function as appropriate.</p>
</text><group><note/><text><p>It will not be called if <ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref> has been set.</p>
<p> <ref resolved='predef::Protocols.Line.simple.handle_command.line'>line</ref> will not contain the line separator.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref></p>
</text></group></doc>
<method name='handle_command'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments><argument name='line'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send' homogen-type='method'><doc><text><p>Queue some data to send.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_command'>handle_command()</ref>, <ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref>, <ref resolved='predef::Protocols.Line.simple.disconnect'>disconnect()</ref></p>
</text></group></doc>
<method name='send'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_timeout' homogen-type='method'><doc><text><p>This function is called when a timeout occurrs.</p>
<p> Overload this function as appropriate.</p>
<p> The default action is to shut down the connection immediately.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.create'>create()</ref>, <ref resolved='predef::Protocols.Line.simple.touch_time'>touch_time()</ref></p>
</text></group></doc>
<method name='do_timeout'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='touch_time' homogen-type='method'><doc><text><p>Reset the timeout timer.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.create'>create()</ref>, <ref resolved='predef::Protocols.Line.simple.do_timeout'>do_timeout()</ref></p>
</text></group></doc>
<method name='touch_time'><source-position first-line='110' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_line' homogen-type='method'><doc><text><p>Read a line from the input.</p>
</text><group><returns/><text><p>Returns <expr>0</expr> when more input is needed.
 Returns the requested line otherwise.</p>
</text></group><group><note/><text><p>The returned line will not contain the line separator.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_command'>handle_command()</ref>, <ref resolved='predef::Protocols.Line.simple.line_separator'>line_separator</ref></p>
</text></group></doc>
<method name='read_line'><source-position first-line='149' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_callback' homogen-type='method'><doc><text><p>Called when data has been received.</p>
<p> Overload as appropriate.</p>
<p> Calls the handle callbacks repeatedly until no more lines are available.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_data'>handle_data()</ref>, <ref resolved='predef::Protocols.Line.simple.handle_command'>handle_command()</ref>, <ref resolved='predef::Protocols.Line.simple.read_line'>read_line()</ref></p>
</text></group></doc>
<method name='read_callback'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='ignored'><type><mixed/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='send_q'><doc><text><p>Queue of data that is pending to send.</p>
<p> The elements in the queue are either strings with data to send,
 or <expr>0</expr> (zero) which is the end of file marker. The connection
 will be closed when the end of file marker is reached.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.send'>send()</ref>, <ref resolved='predef::Protocols.Line.simple.disconnect'>disconnect()</ref></p>
</text></group></doc>
<variable name='send_q'><source-position first-line='192' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><type><object resolved='predef::ADT.Queue'>ADT.Queue</object></type></variable>
</docgroup>
<docgroup homogen-name='disconnect' homogen-type='method'><doc><text><p>Disconnect the connection.</p>
<p> Pushes an end of file marker onto the send queue <ref resolved='predef::Protocols.Line.simple.send_q'>send_q</ref>.</p>
</text><group><note/><text><p>Note that the actual closing of the connection is delayed
 until all data in the send queue has been sent.</p>
<p> No more data will be read from the other end after this function
 has been called.</p>
</text></group></doc>
<method name='disconnect'><source-position first-line='254' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close_callback' homogen-type='method'><doc><text><p>This function is called when the connection has been closed
 at the other end.</p>
<p> Overload this function as appropriate.</p>
<p> The default action is to shut down the connection on this side
 as well.</p>
</text></doc>
<method name='close_callback'><source-position first-line='270' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a simple nonblocking line-based protocol handler.</p>
<p> <ref resolved='predef::Protocols.Line.simple.create.con'>con</ref> is the connection.</p>
<p> <ref resolved='predef::Protocols.Line.simple.create.timeout'>timeout</ref> is an optional timeout in seconds after which the connection
 will be closed if there has been no data sent or received.</p>
<p> If <ref resolved='predef::Protocols.Line.simple.create.timeout'>timeout</ref> is <expr>0</expr> (zero), no timeout will be in effect.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.touch_time'>touch_time()</ref>, <ref resolved='predef::Protocols.Line.simple.do_timeout'>do_timeout()</ref></p>
</text></group></doc>
<method name='create'><source-position first-line='292' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments><argument name='con'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument><argument name='timeout'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='smtp_style'><source-position first-line='306' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><doc><text><p>Nonblocking line-oriented I/O with support for sending SMTP-style codes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='simple'><doc>
</doc>
<inherit name='simple'><source-position first-line='308' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><classname resolved='predef::Protocols.Line.simple'>simple</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='errorcodes'><doc><text><p>Mapping from return-code to error-message.</p>
<p> Overload this constant as apropriate.</p>
</text></doc>
<variable name='errorcodes'><type><mapping><indextype><int/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='send' homogen-type='method'><doc><text><p>Send an SMTP-style return-code.</p>
<p> <ref resolved='predef::Protocols.Line.smtp_style.send.code'>code</ref> is an SMTP-style return-code.</p>
<p> If <ref resolved='predef::Protocols.Line.smtp_style.send.lines'>lines</ref> is omitted, <ref resolved='predef::Protocols.Line.smtp_style.errorcodes'>errorcodes</ref> will be used to lookup
 an appropriate error-message.</p>
<p> If <ref resolved='predef::Protocols.Line.smtp_style.send.lines'>lines</ref> is a string, it will be split on <expr>"\n"</expr>
 (newline), and the error-code interspersed as appropriate.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.smtp_style.errorcodes'>errorcodes</ref></p>
</text></group></doc>
<method name='send'><source-position first-line='332' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments><argument name='code'><type><int><min>100</min><max>999</max></int></type></argument><argument name='lines'><type><or><array><valuetype><string/></valuetype></array><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='imap_style'><source-position first-line='354' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><doc><text><p>Nonblocking line-oriented I/O with support for reading literals.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='simple'><doc>
</doc>
<inherit name='simple'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><classname resolved='predef::Protocols.Line.simple'>simple</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='literal_length'><doc><text><p>Length in bytes of the literal to read.</p>
</text></doc>
<variable name='literal_length'><source-position first-line='359' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='handle_literal'><doc><text><p>If this variable has been set, <ref resolved='predef::Protocols.Line.imap_style.literal_length'>literal_length</ref> bytes will be
 accumulated, and this function will be called with the resulting data.</p>
</text><group><note/><text><p><ref resolved='predef::Protocols.Line.imap_style.handle_literal'>handle_literal()</ref> is one-shot, ie it will be cleared when it is called.</p>
</text></group></doc>
<variable name='handle_literal'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><type><function><argtype><string/></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='handle_line'><doc><text><p>This function will be called once for every line that is received.</p>
</text><group><note/><text><p>This API is provided for backward compatibility; overload
   <ref resolved='predef::Protocols.Line.imap_style.handle_command'>handle_command()</ref> instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Protocols.Line.simple.handle_command'>Protocols.Line.simple()-&gt;handle_command()</ref></p>
</text></group></doc>
<variable name='handle_line'><source-position first-line='377' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/><type><function><argtype><string/></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-name='handle_command' homogen-type='method'><doc><text><p>Function called once for every received line.</p>
</text></doc>
<method name='handle_command'><source-position first-line='380' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments><argument name='line'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='expect_literal' homogen-type='method'><doc><text><p>Enter literal reading mode.</p>
<p> Sets <ref resolved='predef::Protocols.Line.imap_style.literal_length'>literal_length</ref> and <ref resolved='predef::Protocols.Line.imap_style.handle_literal'>handle_literal()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Protocols.Line.imap_style.literal_length'>literal_length</ref>, <ref resolved='predef::Protocols.Line.imap_style.handle_literal'>handle_literal()</ref></p>
</text></group></doc>
<method name='expect_literal'><source-position first-line='420' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Line.pmod'/>
<arguments><argument name='length'><type><int/></type></argument><argument name='callback'><type><function><argtype><string/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='LMTP'>

<class name='Server'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/LMTP.pmod'/><doc><text><p>A LMTP server. It has been fairly well tested against Postfix client.
 Actually this module is only an extention to the <ref resolved='predef::Protocols.SMTP'>SMTP</ref> server.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a receiving LMTP server. It implements RFC 2821, 2822, 2033 and 
  1854.</p>
</text><group><param name='domain'/><text><p>Domains name this server relay, you need to provide at least one
   domain (the first one will be used for MAILER-DAEMON address).
   if you want to relay everything you can put a '*' after this
   first domain.</p>
</text></group><group><param name='port'/><text><p>Port this server listen on</p>
</text></group><group><param name='listenip'/><text><p>IP on which server listen</p>
</text></group><group><param name='cb_mailfrom'/><text><p>Mailfrom callback function, this function will be called
   when a client send a mail from command. This function must take a
   string as argument (corresponding to the sender's email) and return
   int corresponding to the SMTP code to output to the client. If you
   return an array the first element is the SMTP code and the second
   is the error string to display.</p>
</text></group><group><param name='cb_rcptto'/><text><p>Same as cb_mailfrom but called when a client sends a rcpt to.</p>
</text></group><group><param name='cb_data'/><text><p>This function is called for each recipient in the "rcpt to" command
  after the client sends the "data" command
  It must have the following synopsis:
  int|array cb_data(object mime, string sender, array(string) recipients,  void|string rawdata)
  object mime : the mime data object
  string sender : sender of the mail (from the mailfrom command)
  string recipient : one recipient given by one rcpt 
     command.
 return : SMTP code to output to the client. If you return an array 
   the first element is the SMTP code and the second is the error string
   to display. Note that to comply with LMTP protocol you must output a
   code each time this function is called.</p>
</text></group><group><example/><text><p>Here is an example of silly program that does nothing except outputing
  informations to stdout.
 int cb_mailfrom(string mail)
 {
   return 250;
 }</p>
<p> int cb_rcptto(string email)
 {
   // check the user's mailbox here
   return 250;
 }</p>
<p> int cb_data(object mime, string sender, array(string) recipients)
 {
   write(sprintf("smtpd: mailfrom=%s, to=%s, headers=%O\ndata=%s\n", 
   sender, recipients * ", ", mime-&gt;headers, mime-&gt;getdata()));
   // check the data and deliver the mail here
   if(mime-&gt;body_parts)
   {
   {
     foreach(mime-&gt;body_parts, object mpart)
       write(sprintf("smtpd: mpart data = %O\n", mpart-&gt;getdata()));
   }
   return 250;
 }</p>
<p> int main(int argc, array(string) argv)
 {
   Protocols.LMTP.Server(({ "ece.fr" }), 2500, "127.0.0.1",       cb_mailfrom, cb_rcptto, cb_data);
   return -1;
 }</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='_domains'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='port'><type><or><void/><int/></or></type></argument><argument name='ip'><type><or><void/><string/></or></type></argument><argument name='_cb_mailfrom'><type><function/></type></argument><argument name='_cb_rcptto'><type><function/></type></argument><argument name='_cb_data'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='TELNET'><doc><text><p>Implements TELNET as described by RFC 764 and RFC 854</p>
<p> Also implements the Q method of TELNET option negotiation
 as specified by RFC 1143.</p>
</text></doc>

<class name='TelnetCodes'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><doc><text><p>Table of IAC-codes.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='IAC'><doc><text><p>interpret as command.</p>
</text></doc>
<constant name='IAC'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='DONT'><doc><text><p>you are not to use option</p>
</text></doc>
<constant name='DONT'><source-position first-line='27' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='DO'><doc><text><p>please, you use option</p>
</text></doc>
<constant name='DO'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='WONT'><doc><text><p>I won't use option</p>
</text></doc>
<constant name='WONT'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='WILL'><doc><text><p>I will use option</p>
</text></doc>
<constant name='WILL'><source-position first-line='30' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='SB'><doc><text><p>interpret as subnegotiation</p>
</text></doc>
<constant name='SB'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GA'><doc><text><p>you may reverse the line</p>
</text></doc>
<constant name='GA'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='EL'><doc><text><p>erase the current line</p>
</text></doc>
<constant name='EL'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='EC'><doc><text><p>erase the current character</p>
</text></doc>
<constant name='EC'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='AYT'><doc><text><p>are you there</p>
</text></doc>
<constant name='AYT'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='AO'><doc><text><p>abort output--but let prog finish</p>
</text></doc>
<constant name='AO'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='IP'><doc><text><p>interrupt process--permanently</p>
</text></doc>
<constant name='IP'><source-position first-line='37' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BREAK'><doc><text><p>break</p>
</text></doc>
<constant name='BREAK'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='DM'><doc><text><p>data mark--for connect. cleaning</p>
</text></doc>
<constant name='DM'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NOP'><doc><text><p>nop</p>
</text></doc>
<constant name='NOP'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='SE'><doc><text><p>end sub negotiation</p>
</text></doc>
<constant name='SE'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='EOR'><doc><text><p>end of record (transparent mode)</p>
</text></doc>
<constant name='EOR'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ABORT'><doc><text><p>Abort process</p>
</text></doc>
<constant name='ABORT'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='SUSP'><doc><text><p>Suspend process</p>
</text></doc>
<constant name='SUSP'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='xEOF'><doc><text><p>End of file: EOF is already used...</p>
</text></doc>
<constant name='xEOF'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='SYNCH'><doc><text><p>for telfunc calls</p>
</text></doc>
<constant name='SYNCH'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
</class>

<class name='Telopts'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><doc><text><p>Table of TELNET options.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='TELOPT_BINARY'><doc><text><p>8-bit data path</p>
</text></doc>
<constant name='TELOPT_BINARY'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_ECHO'><doc><text><p>echo</p>
</text></doc>
<constant name='TELOPT_ECHO'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_RCP'><doc><text><p>prepare to reconnect</p>
</text></doc>
<constant name='TELOPT_RCP'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_SGA'><doc><text><p>suppress go ahead</p>
</text></doc>
<constant name='TELOPT_SGA'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAMS'><doc><text><p>approximate message size</p>
</text></doc>
<constant name='TELOPT_NAMS'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_STATUS'><doc><text><p>give status</p>
</text></doc>
<constant name='TELOPT_STATUS'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_TM'><doc><text><p>timing mark</p>
</text></doc>
<constant name='TELOPT_TM'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_RCTE'><doc><text><p>remote controlled transmission and echo</p>
</text></doc>
<constant name='TELOPT_RCTE'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOL'><doc><text><p>negotiate about output line width</p>
</text></doc>
<constant name='TELOPT_NAOL'><source-position first-line='63' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOP'><doc><text><p>negotiate about output page size</p>
</text></doc>
<constant name='TELOPT_NAOP'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOCRD'><doc><text><p>negotiate about CR disposition</p>
</text></doc>
<constant name='TELOPT_NAOCRD'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOHTS'><doc><text><p>negotiate about horizontal tabstops</p>
</text></doc>
<constant name='TELOPT_NAOHTS'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOHTD'><doc><text><p>negotiate about horizontal tab disposition</p>
</text></doc>
<constant name='TELOPT_NAOHTD'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOFFD'><doc><text><p>negotiate about formfeed disposition</p>
</text></doc>
<constant name='TELOPT_NAOFFD'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOVTS'><doc><text><p>negotiate about vertical tab stops</p>
</text></doc>
<constant name='TELOPT_NAOVTS'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOVTD'><doc><text><p>negotiate about vertical tab disposition</p>
</text></doc>
<constant name='TELOPT_NAOVTD'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAOLFD'><doc><text><p>negotiate about output LF disposition</p>
</text></doc>
<constant name='TELOPT_NAOLFD'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_XASCII'><doc><text><p>extended ascic character set</p>
</text></doc>
<constant name='TELOPT_XASCII'><source-position first-line='72' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_LOGOUT'><doc><text><p>force logout</p>
</text></doc>
<constant name='TELOPT_LOGOUT'><source-position first-line='73' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_BM'><doc><text><p>byte macro</p>
</text></doc>
<constant name='TELOPT_BM'><source-position first-line='74' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_DET'><doc><text><p>data entry terminal</p>
</text></doc>
<constant name='TELOPT_DET'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_SUPDUP'><doc><text><p>supdup protocol</p>
</text></doc>
<constant name='TELOPT_SUPDUP'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_SUPDUPOUTPUT'><doc><text><p>supdup output</p>
</text></doc>
<constant name='TELOPT_SUPDUPOUTPUT'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_SNDLOC'><doc><text><p>send location</p>
</text></doc>
<constant name='TELOPT_SNDLOC'><source-position first-line='78' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_TTYPE'><doc><text><p>terminal type</p>
</text></doc>
<constant name='TELOPT_TTYPE'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_EOR'><doc><text><p>end or record</p>
</text></doc>
<constant name='TELOPT_EOR'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_TUID'><doc><text><p>TACACS user identification</p>
</text></doc>
<constant name='TELOPT_TUID'><source-position first-line='81' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_OUTMRK'><doc><text><p>output marking</p>
</text></doc>
<constant name='TELOPT_OUTMRK'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_TTYLOC'><doc><text><p>terminal location number</p>
</text></doc>
<constant name='TELOPT_TTYLOC'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_3270REGIME'><doc><text><p>3270 regime</p>
</text></doc>
<constant name='TELOPT_3270REGIME'><source-position first-line='84' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_X3PAD'><doc><text><p>X.3 PAD</p>
</text></doc>
<constant name='TELOPT_X3PAD'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NAWS'><doc><text><p>window size</p>
</text></doc>
<constant name='TELOPT_NAWS'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_TSPEED'><doc><text><p>terminal speed</p>
</text></doc>
<constant name='TELOPT_TSPEED'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_LFLOW'><doc><text><p>remote flow control</p>
</text></doc>
<constant name='TELOPT_LFLOW'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_LINEMODE'><doc><text><p>Linemode option</p>
</text></doc>
<constant name='TELOPT_LINEMODE'><source-position first-line='89' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_XDISPLOC'><doc><text><p>X Display Location</p>
</text></doc>
<constant name='TELOPT_XDISPLOC'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_OLD_ENVIRON'><doc><text><p>Old - Environment variables</p>
</text></doc>
<constant name='TELOPT_OLD_ENVIRON'><source-position first-line='91' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_AUTHENTICATION'><doc><text><p>Authenticate</p>
</text></doc>
<constant name='TELOPT_AUTHENTICATION'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_ENCRYPT'><doc><text><p>Encryption option</p>
</text></doc>
<constant name='TELOPT_ENCRYPT'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_NEW_ENVIRON'><doc><text><p>New - Environment variables</p>
</text></doc>
<constant name='TELOPT_NEW_ENVIRON'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELOPT_EXOPL'><doc><text><p>extended-options-list</p>
</text></doc>
<constant name='TELOPT_EXOPL'><source-position first-line='95' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
</class>

<class name='protocol'><source-position first-line='230' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><doc><text><p>Implementation of the TELNET protocol.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='fd'><doc><text><p>The connection.</p>
</text></doc>
<variable name='fd'><source-position first-line='233' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><object resolved='predef::Protocols.TELNET.protocol'/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='cb'><doc><text><p>Mapping containing extra callbacks.</p>
</text></doc>
<variable name='cb'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><mapping/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='id'><doc><text><p>Value to send to the callbacks.</p>
</text></doc>
<variable name='id'><source-position first-line='239' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><mixed/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='write_cb'><doc><text><p>Write callback.</p>
</text></doc>
<variable name='write_cb'><source-position first-line='242' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><function><argtype><or><mixed/><void/></or></argtype><returntype><string/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='read_cb'><doc><text><p>Read callback.</p>
</text></doc>
<variable name='read_cb'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='close_cb'><doc><text><p>Close callback.</p>
</text></doc>
<variable name='close_cb'><source-position first-line='248' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><function><argtype><or><mixed/><void/></or></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Negotiation states of all WILL/WON'T options.
 See RFC 1143 for a description of the states.</p>
</text></doc>
<variable name='remote_options'><source-position first-line='260' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><array><valuetype><int/></valuetype></array></type></variable>
<variable name='local_options'><source-position first-line='261' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><array><valuetype><int/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='to_send'><doc><text><p>Data queued to be sent.</p>
</text></doc>
<variable name='to_send'><source-position first-line='265' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='done'><doc><text><p>Indicates that connection should be closed</p>
</text></doc>
<variable name='done'><source-position first-line='268' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='nonblocking_write'><doc><text><p>Tells if we have set the nonblocking write callback or not.</p>
</text></doc>
<variable name='nonblocking_write'><source-position first-line='271' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='enable_write' homogen-type='method'><doc><text><p>Turns on the write callback if apropriate.</p>
</text></doc>
<method name='enable_write'><source-position first-line='274' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable_write' homogen-type='method'><doc><text><p>Turns off the write callback if apropriate.</p>
</text></doc>
<method name='disable_write'><source-position first-line='288' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Queues data to be sent to the other end of the connection.</p>
</text><group><param name='s'/><text><p>String to send.</p>
</text></group></doc>
<method name='write'><source-position first-line='302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_raw' homogen-type='method'><doc><text><p>Queues raw data to be sent to the other end of the connection.</p>
</text><group><param name='s'/><text><p>String with raw telnet data to send.</p>
</text></group></doc>
<method name='write_raw'><source-position first-line='313' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Closes the connetion neatly</p>
</text></doc>
<method name='close'><source-position first-line='320' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_data' homogen-type='method'><doc><text><p>Callback called when it is clear to send data over the connection.
 This function does the actual sending.</p>
</text></doc>
<method name='send_data'><source-position first-line='328' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_synch' homogen-type='method'><doc><text><p>Sends a TELNET synch command.</p>
</text></doc>
<method name='send_synch'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_DO' homogen-type='method'><doc><text><p>Starts negotiation to enable a TELNET option.</p>
</text><group><param name='option'/><text><p>The option to enable.</p>
</text></group></doc>
<method name='send_DO'>
<arguments><argument name='option'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_DONT' homogen-type='method'><doc><text><p>Starts negotiation to disable a TELNET option.</p>
</text><group><param name='option'/><text><p>The option to disable.</p>
</text></group></doc>
<method name='send_DONT'>
<arguments><argument name='option'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='synch'><doc><text><p>Indicates whether we are in synch-mode or not.</p>
</text></doc>
<variable name='synch'><source-position first-line='496' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='got_oob' homogen-type='method'><doc><text><p>Callback called when Out-Of-Band data has been received.</p>
</text><group><param name='ignored'/><text><p>The id from the connection.</p>
</text></group><group><param name='s'/><text><p>The Out-Of-Band data received.</p>
</text></group></doc>
<method name='got_oob'><source-position first-line='535' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='ignored'><type><mixed/></type></argument><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call_read_cb' homogen-type='method'><doc><text><p>Calls <ref resolved='predef::Protocols.TELNET.protocol.read_cb'>read_cb()</ref>.</p>
<p> Specifically provided for overloading</p>
</text></doc>
<method name='call_read_cb'><source-position first-line='557' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='got_data' homogen-type='method'><doc><text><p>Callback called when normal data has been received.
 This function also does most of the TELNET protocol parsing.</p>
</text><group><param name='ignored'/><text><p>The id from the connection.</p>
</text></group><group><param name='s'/><text><p>The received data.</p>
</text></group></doc>
<method name='got_data'><source-position first-line='571' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='ignored'><type><mixed/></type></argument><argument name='line'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_write_callback' homogen-type='method'><doc><text><p>Sets the callback to be called when it is clear to send.</p>
</text><group><param name='w_cb'/><text><p>The new write callback.</p>
</text></group></doc>
<method name='set_write_callback'><source-position first-line='776' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments><argument name='w_cb'><type><function><argtype><or><mixed/><void/></or></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setup' homogen-type='method'><doc><text><p>Called when the initial setup is done.</p>
<p> Created specifically for overloading</p>
</text></doc>
<method name='setup'><source-position first-line='791' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a TELNET protocol handler, and sets its callbacks.</p>
</text><group><param name='f'/><text><p>File to use for the connection.</p>
</text></group><group><param name='r_cb'/><text><p>Function to call when data has arrived.</p>
</text></group><group><param name='w_cb'/><text><p>Function to call when data can be sent.</p>
</text></group><group><param name='c_cb'/><text><p>Function to call when the connection is closed.</p>
</text></group><group><param name='callbacks'/><text><p>Mapping with callbacks for the various TELNET commands.</p>
</text></group><group><param name='new_id'/><text><p>Value to send to the various callbacks.</p>
</text></group></doc>
<method name='create'><source-position first-line='810' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Protocols.TELNET.protocol.create'/></type></argument><argument name='r_cb'><type><function><argtype><mixed/></argtype><argtype><string/></argtype><returntype><void/></returntype></function></type></argument><argument name='w_cb'><type><function><argtype><or><mixed/><void/></or></argtype><returntype><string/></returntype></function></type></argument><argument name='c_cb'><type><function><argtype><or><mixed/><void/></or></argtype><returntype><void/></returntype></function></type></argument><argument name='callbacks'><type><mapping/></type></argument><argument name='new_id'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='LineMode'><source-position first-line='856' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><doc><text><p>Line-oriented TELNET protocol handler.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='protocol'><doc>
</doc>
<inherit name='protocol'><source-position first-line='858' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><classname resolved='predef::Protocols.TELNET.protocol'>protocol</classname></inherit>
</docgroup>
</class>

<class name='Readline'><source-position first-line='887' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><doc><text><p>Line-oriented TELNET protocol handler with <ref resolved='predef::Stdio.Readline'>Stdio.Readline</ref> support.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='LineMode'><doc>
</doc>
<inherit name='LineMode'><source-position first-line='889' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><classname resolved='predef::Protocols.TELNET.LineMode'>LineMode</classname></inherit>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='TelnetCodes'><doc>
</doc>
<inherit name='TelnetCodes'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><classname resolved='predef::Protocols.TELNET.TelnetCodes'>TelnetCodes</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Telopts'><doc>
</doc>
<inherit name='Telopts'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/><classname resolved='predef::Protocols.TELNET.Telopts'>Telopts</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELQUAL_IS'><doc><text><p>option is...</p>
</text></doc>
<constant name='TELQUAL_IS'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELQUAL_SEND'><doc><text><p>send option</p>
</text></doc>
<constant name='TELQUAL_SEND'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELQUAL_INFO'><doc><text><p>ENVIRON: informational version of IS</p>
</text></doc>
<constant name='TELQUAL_INFO'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELQUAL_REPLY'><doc><text><p>AUTHENTICATION: client version of IS</p>
</text></doc>
<constant name='TELQUAL_REPLY'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TELQUAL_NAME'><doc><text><p>AUTHENTICATION: client version of IS</p>
</text></doc>
<constant name='TELQUAL_NAME'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LFLOW_OFF'><doc><text><p>Disable remote flow control</p>
</text></doc>
<constant name='LFLOW_OFF'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LFLOW_ON'><doc><text><p>Enable remote flow control</p>
</text></doc>
<constant name='LFLOW_ON'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LFLOW_RESTART_ANY'><doc><text><p>Restart output on any char</p>
</text></doc>
<constant name='LFLOW_RESTART_ANY'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LFLOW_RESTART_XON'><doc><text><p>Restart output only on XON</p>
</text></doc>
<constant name='LFLOW_RESTART_XON'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='AUTH_WHO_CLIENT'><doc><text><p>Client authenticating server</p>
</text></doc>
<constant name='AUTH_WHO_CLIENT'><source-position first-line='185' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='AUTH_WHO_SERVER'><doc><text><p>Server authenticating client</p>
</text></doc>
<constant name='AUTH_WHO_SERVER'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/TELNET.pmod'/></constant>
</docgroup>
</module>

<module name='Ident'><doc><text><p>An implementation of the IDENT protocol, specified in RFC 931.</p>
</text></doc>

<class name='AsyncLookup'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Ident.pmod'/><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Ident.pmod'/>
<arguments><argument name='fd'><type><object resolved='predef::Protocols.Ident.AsyncLookup.create'/></type></argument><argument name='cb'><type><function><argtype><array><valuetype><string/></valuetype></array></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='lookup' homogen-type='method'><doc><group><throws/><text><p>Throws exception upon any error.</p>
</text></group></doc>
<method name='lookup'><source-position first-line='148' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Protocols.pmod/Ident.pmod'/>
<arguments><argument name='fd'><type><object resolved='predef::Protocols.Ident.lookup'/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module></module>





































































<module name='Audio'>

<module name='Format'>

<class name='MP3'><doc><text><p>A MP3 file parser with ID3 tag support.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='ANY'><doc>
</doc>
<inherit name='ANY'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/MP3.pike'/><classname resolved='predef::Audio.Format.ANY'>.module.ANY</classname></inherit>
</docgroup>
<docgroup homogen-name='get_frame' homogen-type='method'><doc><text><p>Gets next frame from file</p>
<p> Frame is represented by the following mapping.
 It contains from parsed frame headers and frame
 data itself.</p>
<p>  ([ "bitrate": int
	  "copyright": int(0..1),
	  "data": frame_data,
	  "emphasis": emphasis,
	  "extension": 
	  "channels":0,
	  "id":1,
	  "layer":3,
	  "original": int(0..1),
	  "padding": int(0..1),
	  "private": int(0..1),
	  "sampling": int
   ])</p>
</text></doc>
<method name='get_frame'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/MP3.pike'/>
<arguments/>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
</class><doc><text><p>Audio data format handling</p>
</text><group><note/><text><p>API remains marked "unstable".</p>
</text></group></doc>

<class name='ANY'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/><docgroup homogen-name='read_file' homogen-type='method'><doc><text><p>Reads data from file</p>
</text><group><seealso/><text><p><ref resolved='predef::Audio.Format.ANY.read_streamed'>read_streamed</ref></p>
</text></group></doc>
<method name='read_file'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='nocheck'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Audio.Format.ANY'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_streamed' homogen-type='method'><doc><text><p>Reads data from stream</p>
<p> Ie. for packetized data source the beggining
 of data is searched.</p>
</text><group><seealso/><text><p><ref resolved='predef::Audio.Format.ANY.read_file'>read_file</ref></p>
</text></group></doc>
<method name='read_streamed'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='nocheck'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Audio.Format.ANY'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_string' homogen-type='method'><doc><text><p>Reads data from string</p>
</text></doc>
<method name='read_string'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='nocheck'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Audio.Format.ANY'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_frame' homogen-type='method'><doc><text><p>Returns frame for current position and moves cursor forward.</p>
</text><group><note/><text><p>The operation is destructive. Ie. current data cursor is moved over.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Audio.Format.ANY.get_data'>get_data</ref>, <ref resolved='predef::Audio.Format.ANY.get_sample'>get_sample</ref></p>
</text></group></doc>
<method name='get_frame'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_sample' homogen-type='method'><doc><text><p>Returns sample for current position and moves cursor forward.</p>
</text><group><note/><text><p>The operation is destructive. Ie. current data cursor is moved over.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Audio.Format.ANY.get_frame'>get_frame</ref>, <ref resolved='predef::Audio.Format.ANY.get_data'>get_data</ref></p>
</text></group></doc>
<method name='get_sample'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_data' homogen-type='method'><doc><text><p>Returns data only.</p>
</text><group><note/><text><p>The operation is destructive. Ie. current data cursor is moved over.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Audio.Format.ANY.get_frame'>get_frame</ref>, <ref resolved='predef::Audio.Format.ANY.get_sample'>get_sample</ref></p>
</text></group></doc>
<method name='get_data'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='check_format' homogen-type='method'><doc><text><p>Check if data are correctly formated.</p>
</text></doc>
<method name='check_format'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_map' homogen-type='method'><doc/>
<method name='get_map'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Format.pmod/module.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
</class></module>



<module name='Codec'>

<class name='decoder'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Codec.pmod'/><doc><text><p>Decoder object.</p>
</text><group><note/><text><p>It needs <ref resolved='predef::_Ffmpeg.ffmpeg'>_Ffmpeg.ffmpeg</ref> module for real work.</p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates decoder object</p>
</text><group><param name='codecnum'/><text><p>Some of supported codec, like _Ffmpeg.CODEC_ID_*</p>
</text></group><group><param name='_codec'/><text><p>The low level object will be used for decoder.
  By default <ref resolved='predef::_Ffmpeg.ffmpeg'>_Ffmpeg.ffmpeg</ref> object will be used.</p>
</text></group><group><note/><text><p>Until additional library is implemented the second
   parameter <ref resolved='predef::Audio.Codec.decoder.create._codec'>_codec</ref> hasn't effect.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::_Ffmpeg.ffmpeg'>_Ffmpeg.ffmpeg</ref>, <ref resolved='predef::_Ffmpeg.CODEC_ID_MP2'>_Ffmpeg.CODEC_ID_MP2</ref></p>
</text></group></doc>
<method name='create'><source-position first-line='51' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Codec.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='codecname'><type><or><string/><void/></or></type></argument><argument name='_codec'><type><or><object resolved='predef::Audio.Codec.decoder.create'/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='from_file' homogen-type='method'><doc><text><p>Set codec type from file</p>
<p> It uses <ref resolved='predef::Audio.Format.ANY'>Audio.Format.ANY</ref>'s method get_map()
 to determine which codec should be used.</p>
</text><group><param name='file'/><text><p>The object <ref resolved='predef::Audio.Format.ANY'>Audio.Format.ANY</ref>.</p>
</text></group></doc>
<method name='from_file'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Codec.pmod'/>
<arguments><argument name='file'><type><object resolved='predef::Audio.Format.ANY'>Audio.Format.ANY</object></type></argument></arguments>
<returntype><object resolved='predef::Audio.Codec.decoder'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes audio data</p>
</text><group><param name='partial'/><text><p>Only one frame will be decoded per call.</p>
</text></group><group><returns/><text><p>If successfull a mapping with decoded data and byte number
   of used input data is returned, <tt>0</tt> otherwise.</p>
</text></group></doc>
<method name='decode'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Codec.pmod'/>
<arguments><argument name='partial'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_status' homogen-type='method'><doc><text><p>Returns decoder status</p>
</text></doc>
<method name='get_status'><source-position first-line='115' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Audio.pmod/Codec.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
</class></module></module>





<module name='ADT'>

<module name='Relation'>

<class name='Binary'>

<class name='_get_iterator'><source-position first-line='262' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/><modifiers><static/></modifiers><doc><text><p>An iterator which makes all the left/right entities in the relation
 available as index/value pairs.</p>
</text></doc></class><docgroup homogen-name='contains' homogen-type='method'><doc><text><p>Return true/false: does the relation "<ref resolved='predef::ADT.Relation.Binary.contains.left'>left</ref> R <ref resolved='predef::ADT.Relation.Binary.contains.right'>right</ref>" exist?</p>
</text></doc>
<method name='contains'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='left'><type><mixed/></type></argument><argument name='right'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Does the same as the <ref resolved='predef::ADT.Relation.Binary.contains'>contains</ref> function: returns true if the
 relation "<ref resolved='predef::ADT.Relation.Binary.`().left'>left</ref> R <ref resolved='predef::ADT.Relation.Binary.`().right'>right</ref>" exists, and otherwise false.</p>
</text></doc>
<method name='`()'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='left'><type><mixed/></type></argument><argument name='right'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Adds "<ref resolved='predef::ADT.Relation.Binary.add.left'>left</ref> R <ref resolved='predef::ADT.Relation.Binary.add.right'>right</ref>" as a member of the relation. Returns
 the same relation.</p>
</text></doc>
<method name='add'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='left'><type><mixed/></type></argument><argument name='right'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Relation.Binary'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Removes "<ref resolved='predef::ADT.Relation.Binary.remove.left'>left</ref> R <ref resolved='predef::ADT.Relation.Binary.remove.right'>right</ref>" as a member of the relation. Returns
 the same relation.</p>
</text></doc>
<method name='remove'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='left'><type><mixed/></type></argument><argument name='right'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Relation.Binary'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='map' homogen-type='method'><doc><text><p>Maps every entry in the relation. The function f gets two
 arguments: the left and the right relation value. Returns
 an array with the return values of f for each and every
 mapped entry.</p>
<p> Note: since the entries in the relation are not ordered,
 the returned array will have its elements in no particular
 order. If you need to know which relation entry produced which
 result in the array, you have to make that information part
 of the value that <ref resolved='predef::ADT.Relation.Binary.map.f'>f</ref> returns.</p>
</text></doc>
<method name='map'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='filter' homogen-type='method'><doc><text><p>Filters the entries in the relation, and returns a relation with
 all those entries for which the filtering function <ref resolved='predef::ADT.Relation.Binary.filter.f'>f</ref> returned
 true. The function <ref resolved='predef::ADT.Relation.Binary.filter.f'>f</ref> gets two arguments: the left and the right
 value for every entry in the relation.</p>
</text></doc>
<method name='filter'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Relation.Binary.filter'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='filter_destructively' homogen-type='method'><doc><text><p>Filters the entries in the relation destructively, removing all
 entries for which the filtering function <ref resolved='predef::ADT.Relation.Binary.filter_destructively.f'>f</ref> returns false.
 The function <ref resolved='predef::ADT.Relation.Binary.filter_destructively.f'>f</ref> gets two arguments: the left and the right value
 for each entry in the relation.</p>
</text></doc>
<method name='filter_destructively'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Relation.Binary'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Returns the number of relation entries in the relation. (Or with
 other words: the number of relations in the relation set.)</p>
</text></doc>
<method name='_sizeof'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;=' homogen-type='method'><doc><text><p>The expression `rel1 &lt;= rel2' returns true if every relation entry
 in rel1 is also present in rel2.</p>
</text></doc>
<method name='`&lt;='><source-position first-line='115' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='rel'><type><object resolved='predef::ADT.Relation.Binary.`&lt;='/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&amp;' homogen-type='method'><doc><text><p>The expression `rel1 &amp; rel2' returns a new relation which has
 those and only those relation entries that are present in both
 rel1 and rel2.</p>
</text></doc>
<method name='`&amp;'><source-position first-line='145' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='rel'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>The expression `rel1 | rel2' and `rel1 + rel2' returns a new
 relation which has all the relation entries present in rel1,
 or rel2, or both.</p>
</text></doc>
<method name='`+'>
<arguments><argument name='rel'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`|'>
<arguments><argument name='rel'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc><text><p>The expression `rel1 - rel2' returns a new relation which has
 those and only those relation entries that are present in rel1
 and not present in rel2.</p>
</text></doc>
<method name='`-'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='rel'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_symmetric' homogen-type='method'><doc><text><p>Makes the relation symmetric, i.e. makes sure that if xRy is part
 of the relation set, then yRx should also be a part of the relation
 set.</p>
</text></doc>
<method name='make_symmetric'><source-position first-line='180' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments/>
<returntype><object resolved='predef::ADT.Relation.Binary'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_shortest_path' homogen-type='method'><doc><text><p>Assuming the relation's domain and range sets are equal, and that
 the relation xRy means "there is a path from node x to node y",
 <ref resolved='predef::ADT.Relation.Binary.find_shortest_path'>find_shortest_path</ref> attempts to find a path with a minimum number
 of steps from one given node to another. The path is returned as an
 array of nodes (including the starting and ending node), or 0 if no
 path was found. If several equally short paths exist, one of them
 will be chosen pseudorandomly.</p>
<p> Trying to find a path from a node to itself will always succeed,
 returning an array of one element: the node itself. (Or in other
 words, a path with no steps, only a starting/ending point).</p>
<p> The argument <ref resolved='predef::ADT.Relation.Binary.find_shortest_path.avoiding'>avoiding</ref> is either 0 (or omitted), or a multiset of
 nodes that must not be part of the path.</p>
</text></doc>
<method name='find_shortest_path'><source-position first-line='202' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments><argument name='from'><type><mixed/></type></argument><argument name='to'><type><mixed/></type></argument><argument name='avoiding'><type><or><void/><multiset/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_id' homogen-type='method'><doc><text><p>Return the ID value which was given as first argument to create().</p>
</text></doc>
<method name='get_id'><source-position first-line='243' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Relation.pmod/Binary.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class></module>

<class name='Priority_queue'><doc><text><p>This class implements a priority queue. Each element in the priority
 queue is assigned a priority value, and the priority queue always
 remains sorted in increasing order of the priority values. The top of
 the priority queue always holds the element with the smallest priority.
 The priority queue is realized as a (min-)heap.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Heap'><doc>
</doc>
<inherit name='Heap'><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Priority_queue.pike'/><classname resolved='predef::ADT.Heap'>.Heap</classname></inherit>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push an element <ref resolved='predef::ADT.Priority_queue.push.val'>val</ref> into the priority queue and assign a priority value
 <ref resolved='predef::ADT.Priority_queue.push.pri'>pri</ref> to it. The priority queue will automatically sort itself so that
 the element with the smallest priority will be at the top.</p>
</text></doc>
<method name='push'><source-position first-line='33' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Priority_queue.pike'/>
<arguments><argument name='pri'><type><int/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='adjust_pri' homogen-type='method'><doc><text><p>Adjust the priority value <ref resolved='predef::ADT.Priority_queue.adjust_pri.new_pri'>new_pri</ref> of an element <ref resolved='predef::ADT.Priority_queue.adjust_pri.handle'>handle</ref> in the
 priority queue. The priority queue will automatically sort itself so
 that the element with the smallest priority value will be at the top.</p>
</text></doc>
<method name='adjust_pri'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Priority_queue.pike'/>
<arguments><argument name='handle'><type><mixed/></type></argument><argument name='new_pri'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop' homogen-type='method'><doc><text><p>Removes and returns the item on top of the heap,
 which also is the smallest value in the heap.</p>
</text></doc>
<method name='pop'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Priority_queue.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><text><p>Returns the item on top of the priority queue (which is also the element
 with the smallest priority value) without removing it.</p>
</text></doc>
<method name='peek'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Priority_queue.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='Struct'><doc><text><p>Implements a struct which can be used for serialization and
 deserialization of data.</p>
</text><group><example/><text><p>class ID3 {
     inherit ADT.Struct;
     Item head = Chars(3);
     Item title = Chars(30);
     Item artist = Chars(30);
     Item album = Chars(30);
     Item year = Chars(4);
     Item comment = Chars(30);
     Item genre = Byte();
   }</p>
<p>   Stdio.File f = Stdio.File("foo.mp3");
   f-&gt;seek(-128);
   ADT.Struct tag = ID3(f);
   if(tag-&gt;head=="TAG") {
     write("Title: %s\n", tag-&gt;title);
     tag-&gt;title = "A new title" + "\0"*19;
     f-&gt;seek(-128);
     f-&gt;write( (string)tag );
   }</p>
</text></group></doc>

<class name='Item'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>Interface class for struct items.</p>
</text></doc></class>

<class name='Byte'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>One byte, integer value between 0 and 255.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Item'><doc>
</doc>
<inherit name='Item'><source-position first-line='155' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Item'>Item</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The byte can be initialized with an optional value.</p>
</text></doc>
<method name='create'><source-position first-line='160' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/>
<arguments><argument name='initial_value'><type><or><void/><int><min>0</min><max>255</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Word'><source-position first-line='180' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>One word (2 bytes) in network order, integer value between 0 and 65535.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Struct.Drow'>Drow</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Item'><doc>
</doc>
<inherit name='Item'><source-position first-line='181' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Item'>Item</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The byte can be initialized with an optional value.</p>
</text></doc>
<method name='create'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/>
<arguments><argument name='initial_value'><type><or><void/><int><min>0</min><max/></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Drow'><source-position first-line='207' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>One word (2 bytes) in intel order, integer value between 0 and 65535.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Struct.Word'>Word</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Word'><doc>
</doc>
<inherit name='Word'><source-position first-line='208' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Word'>Word</classname></inherit>
</docgroup>
</class>

<class name='Long'><source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>One longword (4 bytes) in network order, integer value between 0 and 2^32.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Struct.Gnol'>Gnol</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Word'><doc>
</doc>
<inherit name='Word'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Word'>Word</classname></inherit>
</docgroup>
</class>

<class name='Gnol'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>One longword (4 bytes) in intel order, integer value between 0 and 2^32.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Struct.Long'>Long</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='Drow'><doc>
</doc>
<inherit name='Drow'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Drow'>Drow</classname></inherit>
</docgroup>
</class>

<class name='Chars'><source-position first-line='231' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><doc><text><p>A string of bytes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Item'><doc>
</doc>
<inherit name='Item'><source-position first-line='232' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><classname resolved='predef::ADT.Struct.Item'>Item</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The number of bytes that are part of this struct item.
 The initial value of the char string is <ref resolved='predef::ADT.Struct.Chars.create.value'>value</ref> or,
 if not provided, a string of zero bytes.</p>
</text></doc>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='size'><type><int/></type></argument><argument name='value'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='data'/><text><p>Data to be decoded and populate the struct. Can
   either be a file object or a string.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='data'><type><or><void/><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes <ref resolved='predef::ADT.Struct.decode.data'>data</ref> according to the struct and populates
 the struct variables. The <ref resolved='predef::ADT.Struct.decode.data'>data</ref> can either be a file
 object or a string.</p>
</text></doc>
<method name='decode'>
<arguments><argument name='data'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Serializes the struct into a string. This string is equal
 to the string fed to <ref resolved='predef::ADT.Struct.decode'>decode</ref> if nothing in the struct
 has been altered.</p>
</text></doc>
<method name='encode'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>The struct can be indexed by item name to get the
 associated value.</p>
</text></doc>
<method name='`[]'><modifiers><static/></modifiers>
<arguments><argument name='item'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'><modifiers><static/></modifiers>
<arguments><argument name='item'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>It is possible to assign a new value to a struct
 item by indexing it by name and assign a value.</p>
</text></doc>
<method name='`[]='><modifiers><static/></modifiers>
<arguments><argument name='item'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;='><modifiers><static/></modifiers>
<arguments><argument name='item'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>The indices of a struct is the name of the struct items.</p>
</text></doc>
<method name='_indices'><source-position first-line='97' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><text><p>The values of a struct is the values of the struct items.</p>
</text></doc>
<method name='_values'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>The size of the struct object is the number of bytes
 allocated for the struct.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>The struct can be casted into a string, which is eqivivalent
 to running <ref resolved='predef::ADT.Struct.encode'>encode</ref>, or into an array. When casted into an
 array each array element is the encoded value of that struct
 item.</p>
</text></doc>
<method name='cast'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Struct.pike'/><modifiers><static/></modifiers>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='Queue'><doc><text><p>A simple FIFO queue.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a queue with the initial items <ref resolved='predef::ADT.Queue.create.args'>args</ref> in it.</p>
</text></doc>
<method name='create'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Queue.pike'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Adds the <ref resolved='predef::ADT.Queue.write.item'>item</ref> to the queue.</p>
</text></doc>
<method name='write'>
<arguments><argument name='item'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='put'>
<arguments><argument name='item'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the next element from the queue.</p>
</text></doc>
<method name='read'>
<arguments/>
<returntype><mixed/></returntype>
</method>
<method name='get'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><text><p>Returns the next element from the queue
 without removing it from the queue.</p>
</text></doc>
<method name='peek'><source-position first-line='64' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Queue.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_empty' homogen-type='method'><doc><text><p>Returns true if the queue is empty,
 otherwise zero.</p>
</text></doc>
<method name='is_empty'><source-position first-line='71' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Queue.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Empties the queue.</p>
</text></doc>
<method name='flush'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Queue.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast ADT.Queue to an array.</p>
</text></doc>
<method name='cast'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Queue.pike'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><doc><text><p>Various Abstract Data Types.</p>
</text></doc>

<class name='struct'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/><doc><text><p>String buffer with the possibility to read and write data
 as they would be formatted in structs.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new buffer, optionally initialized with the
 value <ref resolved='predef::ADT.struct.create.s'>s</ref>.</p>
</text></doc>
<method name='create'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='s'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='contents' homogen-type='method'><doc><text><p>Trims the buffer to only contain the data after the
 read pointer and returns the contents of the buffer.</p>
</text></doc>
<method name='contents'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_data' homogen-type='method'><doc><text><p>Adds the data <ref resolved='predef::ADT.struct.add_data.s'>s</ref> verbatim to the end of the buffer.</p>
</text></doc>
<method name='add_data'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop_data' homogen-type='method'><doc><text><p>Return all the data in the buffer and empties it.</p>
</text></doc>
<method name='pop_data'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_uint' homogen-type='method'><doc><text><p>Appends an unsigned integer in network order to the buffer.</p>
</text><group><param name='i'/><text><p>Unsigned integer to append.</p>
</text></group><group><param name='len'/><text><p>Length of integer in bytes.</p>
</text></group></doc>
<method name='put_uint'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='i'><type><int/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_var_string' homogen-type='method'><doc><text><p>Appends a variable string <ref resolved='predef::ADT.struct.put_var_string.s'>s</ref> preceded with an unsigned integer
 of the size <ref resolved='predef::ADT.struct.put_var_string.len_width'>len_width</ref> declaring the length of the string. The
 string <ref resolved='predef::ADT.struct.put_var_string.s'>s</ref> should be 8 bits wide.</p>
</text></doc>
<method name='put_var_string'><source-position first-line='63' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='len_width'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_bignum' homogen-type='method'><doc><text><p>Appends a bignum <ref resolved='predef::ADT.struct.put_bignum.i'>i</ref> as a variable string preceded with an
 unsigned integer of the size <ref resolved='predef::ADT.struct.put_bignum.len_width'>len_width</ref> declaring the length
 of the string. <ref resolved='predef::ADT.struct.put_bignum.len_width'>len_width</ref> defaults to 2.</p>
</text></doc>
<method name='put_bignum'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></type></argument><argument name='len_width'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_fix_string' homogen-type='method'><doc><text><p>Appends the fix sized string <ref resolved='predef::ADT.struct.put_fix_string.s'>s</ref> to the buffer.</p>
</text></doc>
<method name='put_fix_string'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_fix_uint_array' homogen-type='method'><doc><text><p>Appends an array of unsigned integers of width <ref resolved='predef::ADT.struct.put_fix_uint_array.item_size'>item_size</ref>
 to the buffer.</p>
</text></doc>
<method name='put_fix_uint_array'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='data'><type><array><valuetype><int/></valuetype></array></type></argument><argument name='item_size'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put_var_uint_array' homogen-type='method'><doc><text><p>Appends an array of unsigned integers of width <ref resolved='predef::ADT.struct.put_var_uint_array.item_size'>item_size</ref>
 to the buffer, preceded with an unsigned integer <ref resolved='predef::ADT.struct.put_var_uint_array.len'>len</ref> declaring
 the size of the array.</p>
</text></doc>
<method name='put_var_uint_array'><source-position first-line='101' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='data'><type><array><valuetype><int/></valuetype></array></type></argument><argument name='item_size'><type><int/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_uint' homogen-type='method'><doc><text><p>Reads an unsigned integer from the buffer.</p>
</text></doc>
<method name='get_uint'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fix_string' homogen-type='method'><doc><text><p>Reads a fixed sized string of length <ref resolved='predef::ADT.struct.get_fix_string.len'>len</ref> from the buffer.</p>
</text></doc>
<method name='get_fix_string'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_var_string' homogen-type='method'><doc><text><p>Reads a string written by <ref resolved='predef::ADT.struct.put_var_string'>put_var_string</ref> from the buffer.</p>
</text></doc>
<method name='get_var_string'><source-position first-line='130' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bignum' homogen-type='method'><doc><text><p>Reads a bignum written by <ref resolved='predef::ADT.struct.put_bignum'>put_bignum</ref> from the buffer.</p>
</text></doc>
<method name='get_bignum'><source-position first-line='137' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='len'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_rest' homogen-type='method'><doc><text><p>Get the remaining data from the buffer and clears the buffer.</p>
</text></doc>
<method name='get_rest'><source-position first-line='144' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fix_uint_array' homogen-type='method'><doc><text><p>Reads an array of integers as written by <ref resolved='predef::ADT.struct.put_fix_uint_array'>put_fix_uint_array</ref>
 from the buffer.</p>
</text></doc>
<method name='get_fix_uint_array'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='item_size'><type><int/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_var_uint_array' homogen-type='method'><doc><text><p>Reads an array of integers as written by <ref resolved='predef::ADT.struct.put_var_uint_array'>put_var_uint_array</ref>
 from the buffer.</p>
</text></doc>
<method name='get_var_uint_array'><source-position first-line='163' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments><argument name='item_size'><type><int/></type></argument><argument name='len'><type><int/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_empty' homogen-type='method'><doc><text><p>Returns one of there is any more data to read.</p>
</text></doc>
<method name='is_empty'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='_ADT'><doc>
</doc>
<inherit name='_ADT'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/module.pmod'/><classname>_ADT</classname></inherit>
</docgroup>


<class name='History'><doc><text><p>A history is a stack where you can only push entries. When the stack has
 reached a certain size the oldest entries are removed on every push.
 Other proposed names for this data type is leaking stack and table
 (where you push objects onto the table in one end and objects are falling
 off the table in the other.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p><ref resolved='predef::ADT.History.create.max_size'>max_size</ref> is the maximum number of entries that can reside in the
 history at the same time.</p>
</text></doc>
<method name='create'>
<arguments><argument name='max_size'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_no_adjacent_duplicates' homogen-type='method'><doc><text><p>Change how the History object should treat two
 identical values in a row. If 1 than only unique
 values are allowed after each other.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.History.query_no_adjacent_duplicates'>query_no_adjacent_duplicates</ref></p>
</text></group></doc>
<method name='set_no_adjacent_duplicates'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments><argument name='i'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_no_adjacent_duplicates' homogen-type='method'><doc><text><p>Tells if the History object allows adjacent equal
 values. 1 means that only uniqe values are allowed
 adter each other.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.History.set_no_adjacent_duplicates'>set_no_adjacent_duplicates</ref></p>
</text></group></doc>
<method name='query_no_adjacent_duplicates'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push a new value into the history.</p>
</text></doc>
<method name='push'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>A <ref resolved='predef::sizeof'>sizeof</ref> operation on this object returns the number
 of elements currently in the history, e.g. &lt;= the current
 max size.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_maxsize' homogen-type='method'><doc><text><p>Returns the maximum number of values in the history</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.History.set_maxsize'>set_maxsize</ref></p>
</text></group></doc>
<method name='get_maxsize'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_latest_entry_num' homogen-type='method'><doc><text><p>Returns the absolute sequence number of the latest
 result inserted into the history.</p>
</text></doc>
<method name='get_latest_entry_num'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_first_entry_num' homogen-type='method'><doc><text><p>Returns the absolute sequence number of the
 oldest result still in the history. Returns 0
 if there are no results in the history.</p>
</text></doc>
<method name='get_first_entry_num'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Get a value from the history as if it was an array, e.g.
 both positive and negative numbers may be used. The positive
 numbers are however offset with 1, so [1] is the first entry
 in the history and [-1] is the last.</p>
</text></doc>
<method name='`[]'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Overwrite one value in the history. The history position may be
 identified either by positive or negative offset, like <ref resolved='predef::ADT.History.`[]'>`[]</ref>.</p>
</text></doc>
<method name='`[]='><source-position first-line='123' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments><argument name='i'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_maxsize' homogen-type='method'><doc><text><p>Set the maximume number of entries that can be
 stored in the history simultaneous.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.History.get_maxsize'>get_maxsize</ref></p>
</text></group></doc>
<method name='set_maxsize'><source-position first-line='131' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments><argument name='_maxsize'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Empties the history. All entries in the history are
 removed, to allow garbage collect to remove them.
 The entry sequence counter is not reset.</p>
</text></doc>
<method name='flush'><source-position first-line='156' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Returns the index numbers of the history entries
 available.</p>
</text></doc>
<method name='_indices'><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Returns the values of the available history entries.</p>
</text></doc>
<method name='_values'><source-position first-line='169' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/History.pike'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<module name='Table'><doc><text><p>ADT.Table is a generic module for manipulating tables.</p>
<p> Each table contains one or several columns.
 Each column is associated with a name, the column name.
 Optionally, one can provide a column type. The Table module can do a number
 of operations on a given table, like computing the sum of a column,
 grouping, sorting etc.</p>
<p> All column references are case insensitive. A column can be referred to by
 its position (starting from zero). All operations are non-destructive. That
 means that a new table object will be returned after, for example, a sort.</p>
</text></doc>

<class name='table'><source-position first-line='20' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/><doc><text><p>The table base-class.</p>
</text></doc><docgroup homogen-name='encode' homogen-type='method'><doc><text><p>This method returns a binary string representation of the table. It is
 useful when one wants to store a the table, for example in a file.</p>
</text></doc>
<method name='encode'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>This method returns a table object from a binary string
 representation of a table, as returned by <ref resolved='predef::ADT.Table.table.encode'>encode()</ref>.</p>
</text></doc>
<method name='decode'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.decode'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>This method returns the column names for the table. The case used when
 the table was created will be returned.</p>
</text></doc>
<method name='_indices'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><text><p>This method returns the contents of a table as a two dimensional array.
 The format is an array of rows. Each row is an array of columns.</p>
</text></doc>
<method name='_values'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments/>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>This method returns the number of rows in the table.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reverse' homogen-type='method'><doc><text><p>This method reverses the rows of the table and returns a
 new table object.</p>
</text></doc>
<method name='reverse'><source-position first-line='90' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments/>
<returntype><object resolved='predef::ADT.Table.table.reverse'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='col' homogen-type='method'><doc><text><p>This method returns the contents of a given column as an array.</p>
</text></doc>
<method name='col'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='column'><type><or><int/><string/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='row' homogen-type='method'><doc><text><p>This method returns the contents of a given row as an array.</p>
</text></doc>
<method name='row'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='row_number'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Same as <ref resolved='predef::ADT.Table.table.col'>col()</ref>.</p>
</text></doc>
<method name='`[]'><source-position first-line='108' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='column'><type><or><int/><string/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc><text><p>This method compares two tables. They are equal if the contents
 of the tables and the column names are equal. The column name
 comparison is case insensitive.</p>
</text></doc>
<method name='`=='><source-position first-line='116' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='table'><type><object resolved='predef::ADT.Table.table.`=='/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_bottom' homogen-type='method'><doc><text><p>This method appends two tables. The table given as an argument will be
 added at the bottom of the current table. Note, the column names must
 be equal. The column name comparison is case insensitive.</p>
</text></doc>
<method name='append_bottom'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='table'><type><object resolved='predef::ADT.Table.table.append_bottom'/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.append_bottom'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_right' homogen-type='method'><doc><text><p>This method appends two tables. The table given as an argument will be
 added on the right side of the current table. Note that the number of
 rows in both tables must be equal.</p>
</text></doc>
<method name='append_right'><source-position first-line='137' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='table'><type><object resolved='predef::ADT.Table.table.append_right'/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.append_right'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='select' homogen-type='method'><doc><text><p>This method returns a new table object with the selected columns only.</p>
</text></doc>
<method name='select'><source-position first-line='177' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.select'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Like <ref resolved='predef::ADT.Table.table.select'>select()</ref>, but the given <ref resolved='predef::ADT.Table.table.remove.columns'>columns</ref> will not be in the
 resulting table.</p>
</text></doc>
<method name='remove'><source-position first-line='188' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.remove'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='where' homogen-type='method'><doc><text><p>This method calls the function for each row. If the function
 returns zero, the row will be thrown away. If the function
 returns something non-zero, the row will be kept. The result
 will be returned as a new table object.</p>
</text></doc>
<method name='where'><source-position first-line='197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><or><array><valuetype><or><int/><string/></or></valuetype></array><int/><string/></or></type></argument><argument name='f'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.where'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='group' homogen-type='method'><doc><text><p>This method calls the function <ref resolved='predef::ADT.Table.table.group.f'>f</ref> for each column each time a
 non uniqe row will be joined. The table will be grouped by the
 columns not listed. The result will be returned as a new table object.</p>
</text></doc>
<method name='group'><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='f'><type><or><mapping><indextype><or><int/><string/></or></indextype><valuetype><function/></valuetype></mapping><function/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sum' homogen-type='method'><doc><text><p>This method sums all equal rows. The table will be grouped by the
 columns not listed. The result will be returned as a new table object.</p>
</text></doc>
<method name='sum'><source-position first-line='241' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='distinct' homogen-type='method'><doc><text><p>This method groups by the given columns and returns a table with only
 unique rows. When no columns are given, all rows will be unique. A new
 table object will be returned.</p>
</text></doc>
<method name='distinct'><source-position first-line='249' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='map' homogen-type='method'><doc><text><p>This method calls the function <ref resolved='predef::ADT.Table.table.map.f'>f</ref> for all rows in the table.
 The value returned will replace the values in the columns given
 as argument to map. If the function returns an array, several
 columns will be replaced. Otherwise the first column will be
 replaced. The result will be returned as a new table object.</p>
</text></doc>
<method name='map'><source-position first-line='266' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='f'><type><function/></type></argument><argument name='columns'><type><or><array><valuetype><or><int/><string/></or></valuetype></array><int/><string/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.map'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sort' homogen-type='method'><doc><text><p>This method sorts the table in ascendent order on one or several columns
 and returns a new table object. The left most column is sorted last. Note
 that the sort is stable.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Table.table.rsort'>rsort()</ref></p>
</text></group></doc>
<method name='sort'><source-position first-line='316' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.sort'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rsort' homogen-type='method'><doc><text><p>Like <ref resolved='predef::ADT.Table.table.sort'>sort()</ref>, but in descending order.</p>
</text></doc>
<method name='rsort'><source-position first-line='322' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='columns'><type><varargs><or><int/><string/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.rsort'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='limit' homogen-type='method'><doc><text><p>This method truncates the table to the first <ref resolved='predef::ADT.Table.table.limit.n'>n</ref> rows and returns
 a new object.</p>
</text></doc>
<method name='limit'><source-position first-line='329' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.limit'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rename' homogen-type='method'><doc><text><p>This method renames the column named <ref resolved='predef::ADT.Table.table.rename.from'>from</ref> to <ref resolved='predef::ADT.Table.table.rename.to'>to</ref> and
 returns a new table object. Note that <ref resolved='predef::ADT.Table.table.rename.from'>from</ref> can be the column
 position.</p>
</text></doc>
<method name='rename'><source-position first-line='337' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='from'><type><or><string/><int/></or></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Table.table.rename'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='type' homogen-type='method'><doc><text><p>This method gives the type for the given <ref resolved='predef::ADT.Table.table.type.column'>column</ref>.</p>
<p> If a second argument is given, the old type will be replaced
 with <ref resolved='predef::ADT.Table.table.type.type'>type</ref>. The column type is only used when the table is displayed.
 The format is as specified in <ref resolved='predef::ADT.Table.table.create'>create()</ref>.</p>
</text></doc>
<method name='type'><source-position first-line='349' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='column'><type><or><int/><string/></or></type></argument><argument name='type'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The <ref resolved='predef::ADT.Table.table'>ADT.Table.table</ref> class takes two or three arguments:</p>
</text><group><param name='table'/><text><p>The first argument is a two-dimensional array consisting of
   one array of columns per row. All rows must have the same
   number of columns as specified in <ref resolved='predef::ADT.Table.table.create.column_names'>column_names</ref>.</p>
</text></group><group><param name='column_names'/><text><p>This argument is an array of column names associated with each
   column in the table. References by column name are case insensitive.
   The case used in <ref resolved='predef::ADT.Table.table.create.column_names'>column_names</ref> will be used when the table is
   displayed. A column can also be referred to by its position,
   starting from zero.</p>
</text></group><group><param name='column_types'/><text><p>This is an optional array of mappings. The column type
   information is only used when displaying the table. Currently, only the
   keyword <expr>"type"</expr> is recognized. The type can be specified as
   <expr>"text"</expr> or <expr>"num"</expr> (numerical). Text columns are left
   adjusted, whereas numerical columns are right adjusted. If a mapping
   in the array is 0 (zero), it will be assumed to be a text column.
   If <ref resolved='predef::ADT.Table.table.create.column_types'>column_types</ref> is omitted, all columns will displayed as text.</p>
<p>   See <ref resolved='predef::ADT.Table.ASCII.encode'>ADT.Table.ASCII.encode()</ref> on how to display a table.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::ADT.Table.ASCII.encode'>ADT.Table.ASCII.encode()</ref></p>
</text></group></doc>
<method name='create'><source-position first-line='389' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Table.pmod'/>
<arguments><argument name='table'><type><array><valuetype><array/></valuetype></array></type></argument><argument name='column_names'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='column_types'><type><or><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='ASCII'><docgroup homogen-name='encode' homogen-type='method'><doc><text><p>This method returns a table represented in ASCII suitable for
 human eyes.  <ref resolved='predef::ADT.Table.ASCII.encode.options'>options</ref> is an optional mapping. If the keyword
 <expr>"indent"</expr> is used with a number, the table will be
 indented with that number of space characters.</p>
</text></doc>
<method name='encode'>
<arguments><argument name='table'><type><object resolved='predef::ADT.Table.ASCII.encode'/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module></module>

<class name='Heap'><doc><text><p>This class implements a (min-)heap. The value of a child node will
 always be greater than or equal to the value of its parent node.
 Thus, the top node of the heap will always hold the smallest value.</p>
</text></doc><docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push an element onto the heap. The heap will automatically sort itself
 so that the smallest value will be at the top.</p>
</text></doc>
<method name='push'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='adjust' homogen-type='method'><doc><text><p>Takes a value in the heap and sorts it through the heap to maintain
 its sort criteria (increasing order).</p>
</text></doc>
<method name='adjust'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop' homogen-type='method'><doc><text><p>Removes and returns the item on top of the heap,
 which also is the smallest value in the heap.</p>
</text></doc>
<method name='pop'><source-position first-line='98' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Returns the number of elements in the heap.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='top' homogen-type='method'><doc><text><p>Removes and returns the item on top of the heap,
 which also is the smallest value in the heap.</p>
</text></doc>
<method name='top'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='size' homogen-type='method'><doc><text><p>Returns the number of elements in the heap.</p>
</text></doc>
<method name='size'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek' homogen-type='method'><doc><text><p>Returns the item on top of the heap (which is also the smallest value
 in the heap) without removing it.</p>
</text></doc>
<method name='peek'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='BitBuffer'><doc><text><p>Implements a FIFO bit buffer, i.e. a buffer that operates on bits
 instead of bytes. It is not designed for performance, but as a way
 to handle complicated file formats and other standards where you
 may need to work on unaligned data units of sub byte size, without
 having to fry your brain while keeping track of all the bits
 yourself.</p>
</text><group><example/><text><p>&gt; ADT.BitBuffer b=ADT.BitBuffer();
   &gt; b-&gt;put1(2);
   (1) Result: ADT.BitBuffer(11)
   &gt; b-&gt;put0(15);
   (2) Result: ADT.BitBuffer("À\0"0)
   &gt; b-&gt;drain();
   (3) Result: "À\0"
   &gt; sizeof(b);
   (4) Result: 1</p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>The buffer can be initialized with initial data during creation.</p>
</text></doc>
<method name='create'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='_data'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='feed' homogen-type='method'><doc><text><p>Adds full bytes to the buffer.</p>
</text></doc>
<method name='feed'><source-position first-line='34' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='x'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::ADT.BitBuffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drain' homogen-type='method'><doc><text><p>Drains the buffer of all full (8-bits wide) bytes.</p>
</text></doc>
<method name='drain'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Get <ref resolved='predef::ADT.BitBuffer.get.bits'>bits</ref> from the buffer.</p>
</text><group><throws/><text><p>Throws an error in case of data underflow.</p>
</text></group></doc>
<method name='get'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='bits'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='put' homogen-type='method'><doc><text><p>Put <ref resolved='predef::ADT.BitBuffer.put.bits'>bits</ref> number of bits with the value <ref resolved='predef::ADT.BitBuffer.put.value'>value</ref> into the
 buffer.</p>
</text><group><note/><text><p><ref resolved='predef::ADT.BitBuffer.put.value'>value</ref> must not be larger than what can be stored with the
   number of bits given in <ref resolved='predef::ADT.BitBuffer.put.bits'>bits</ref>.</p>
</text></group></doc>
<method name='put'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='value'><type><int/></type></argument><argument name='bits'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.BitBuffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='put0' homogen-type='method'><doc><text><p>Put <ref resolved='predef::ADT.BitBuffer.put0.bits'>bits</ref> number of 0 bits into the buffer.</p>
</text></doc>
<method name='put0'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='bits'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.BitBuffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='put1' homogen-type='method'><doc><text><p>Put <ref resolved='predef::ADT.BitBuffer.put1.bits'>bits</ref> number of 1 bits into the buffer.</p>
</text></doc>
<method name='put1'><source-position first-line='141' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments><argument name='bits'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.BitBuffer'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p><ref resolved='predef::sizeof'>sizeof()</ref> will return the number of bits in the buffer.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='165' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/BitBuffer.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Stack'><doc><text><p>This class implements a simple stack. Instead of adding and removing
 elements to an array, and thus making it vary in size for every push
 and pop operation, this stack tries to keep the stack size constant.
 If however the stack risks to overflow, it will allocate double its
 current size, i.e. pushing an element on an full 32 slot stack will
 result in a 64 slot stack with 33 elements.</p>
</text></doc><docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push an element on the top of the stack.</p>
</text></doc>
<method name='push'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='top' homogen-type='method'><doc><text><p>Returns the top element from the stack, without
 popping it.</p>
</text><group><throws/><text><p>Throws an error if called on an empty stack.</p>
</text></group></doc>
<method name='top'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='quick_pop' homogen-type='method'><doc><text><p>Pops <ref resolved='predef::ADT.Stack.quick_pop.val'>val</ref> entries from the stack, or one entry
 if no value is given. The popped entries are not
 actually freed, only the stack pointer is moved.</p>
</text></doc>
<method name='quick_pop'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='val'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop' homogen-type='method'><doc><text><p>Pops and returns entry <ref resolved='predef::ADT.Stack.pop.val'>val</ref> from the stack, counting
 from the top. If no value is given the top element is
 popped and returned. All popped entries are freed from
 the stack.</p>
</text></doc>
<method name='pop'><source-position first-line='58' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='val'><type><or><void/><int/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reset' homogen-type='method'><doc><text><p>Empties the stack, resets the stack pointer
 and shrinks the stack size to the given value
 or 32 if none is given.</p>
</text><group><seealso/><text><p><ref resolved='predef::ADT.Stack.create'>create</ref></p>
</text></group></doc>
<method name='reset'><source-position first-line='91' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='initial_size'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>An initial stack size can be given when
 a stack is cloned. The default value is
 32.</p>
</text></doc>
<method name='create'><source-position first-line='100' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='initial_size'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_stack' homogen-type='method'><doc><text><p>Sets the stacks content to the provided array.</p>
</text></doc>
<method name='set_stack'><source-position first-line='106' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='stack'><type><array/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p><ref resolved='predef::sizeof'>sizeof</ref> on a stack returns the number of entries
 in the stack.</p>
</text></doc>
<method name='_sizeof'><source-position first-line='113' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><text><p><ref resolved='predef::values'>values</ref> on a stack returns all the entries in
 the stack, in order.</p>
</text></doc>
<method name='_values'><source-position first-line='119' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>A stack added with another stack yields a third
 a third stack will all the stack elements from
 the two first stacks.</p>
</text></doc>
<method name='`+'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/ADT.pmod/Stack.pike'/>
<arguments><argument name='s'><type><object resolved='predef::ADT.Stack'>this_program</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Stack'>this_program</object></returntype>
</method>
</docgroup>
</class>

<class name='Sequence'><doc><text><p>The sequence work similar to an array but has the possibilities to 
 insert and remove elements. It also has a more powerful iterator.</p>
</text></doc>

<class name='SequenceIterator'><doc><text><p>This is the iterator for the Sequence. It implements the 
    IndexIterator and the OutputIterator</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new iterator for the sequence <ref resolved='predef::ADT.Sequence.SequenceIterator.create.sequence'>sequence</ref>. If start is
   supplied it will try to position the iterator at <ref resolved='predef::ADT.Sequence.SequenceIterator.create.start'>start</ref>.</p>
</text></doc>
<method name='create'>
<arguments><argument name='sequence'><type><object resolved='predef::ADT.Sequence.SequenceIterator.create'/></type></argument><argument name='start'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='index' homogen-type='method'><doc><group><returns/><text><p>The index at the current position.</p>
</text></group></doc>
<method name='index'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='value' homogen-type='method'><doc><group><returns/><text><p>The value at the current position.</p>
</text></group></doc>
<method name='value'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Move the iterator <ref resolved='predef::ADT.Sequence.SequenceIterator.`+.steps'>steps</ref> steps forward (negative value on <ref resolved='predef::ADT.Sequence.SequenceIterator.`+.steps'>steps</ref>
   will cause the iterator to move backwards) and return the result
   as a new iterator.</p>
</text><group><returns/><text><p>A new iterator positioned <ref resolved='predef::ADT.Sequence.SequenceIterator.`+.steps'>steps</ref> steps forward.</p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Move this iterator <ref resolved='predef::ADT.Sequence.SequenceIterator.`+=.steps'>steps</ref> steps forward (negative value on <ref resolved='predef::ADT.Sequence.SequenceIterator.`+=.steps'>steps</ref>
   will cause the iterator to move backwards) and return the result.</p>
</text><group><returns/><text><p>This iterator positioned <ref resolved='predef::ADT.Sequence.SequenceIterator.`+=.steps'>steps</ref> steps forward.</p>
</text></group></doc>
<method name='`+='>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Move the iterator <ref resolved='predef::ADT.Sequence.SequenceIterator.`-.steps'>steps</ref> steps backwards (negative value on 
   <ref resolved='predef::ADT.Sequence.SequenceIterator.`-.steps'>steps</ref> will cause the iterator to move forwards) and return 
   the result as a new iterator.</p>
</text><group><returns/><text><p>A new iterator positioned <ref resolved='predef::ADT.Sequence.SequenceIterator.`-.steps'>steps</ref> steps backwards.</p>
</text></group></doc>
<method name='`-'>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_next' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if it is possible to move <ref resolved='predef::ADT.Sequence.SequenceIterator.has_next.steps'>steps</ref> steps
    forwards, if <ref resolved='predef::ADT.Sequence.SequenceIterator.has_next.steps'>steps</ref> weren't supplied it check if it is
    possible to move one step forward.</p>
</text></group></doc>
<method name='has_next'>
<arguments><argument name='steps'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_previous' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if it is possible to move <ref resolved='predef::ADT.Sequence.SequenceIterator.has_previous.steps'>steps</ref> steps
    backwards, if <ref resolved='predef::ADT.Sequence.SequenceIterator.has_previous.steps'>steps</ref> weren't supplied it check if it is
    possible to move one step backward.</p>
</text></group></doc>
<method name='has_previous'>
<arguments><argument name='steps'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>false</tt> if the iterator has reached the end.</p>
</text></group></doc>
<method name='`!'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='_equal' homogen-type='method'><doc><text><p>Compare this iterator with another iterator.</p>
</text><group><param name='iter'/><text><p>The iterator to compare with.</p>
</text></group><group><returns/><text><p>Returns <tt>true</tt> if both iterators iterates over the same
    objects and are positioned at the same spot.</p>
</text></group></doc>
<method name='_equal'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc><text><p>Less then operator.</p>
</text><group><returns/><text><p>Returns <tt>true</tt> if this iterator has a lower index
    then <ref resolved='predef::ADT.Sequence.SequenceIterator.`&lt;.iter'>iter</ref>.</p>
</text></group></doc>
<method name='`&lt;'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p>Greater then operator.</p>
</text><group><returns/><text><p>Returns <tt>true</tt> if this iterator has a higher index
    then <ref resolved='predef::ADT.Sequence.SequenceIterator.`&gt;.iter'>iter</ref>.</p>
</text></group></doc>
<method name='`&gt;'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='distance' homogen-type='method'><doc><group><param name='iter'/><text><p>The iterator to measure the distance to.</p>
</text></group><group><returns/><text><p>Returns distance between this iterator and <ref resolved='predef::ADT.Sequence.SequenceIterator.distance.iter'>iter</ref>.</p>
</text></group><group><throws/><text><p>An error if the two iterator could not be compared.</p>
</text></group></doc>
<method name='distance'>
<arguments><argument name='iter'><type><object resolved='predef::ADT.Sequence.SequenceIterator.distance'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_collection' homogen-type='method'><doc><group><returns/><text><p>Returns the Sequence this iterator currently iterates over.</p>
</text></group></doc>
<method name='get_collection'>
<arguments/>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Set the value at the current position.</p>
</text><group><param name='val'/><text><p>The new value.</p>
</text></group><group><returns/><text><p>Returns the old value.</p>
</text></group></doc>
<method name='set_value'>
<arguments><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Index operator.</p>
</text><group><param name='index'/><text><p>The index to get the value for, could be negative to index from the end.</p>
</text></group><group><returns/><text><p>The value at the index <ref resolved='predef::ADT.Sequence.`[].index'>index</ref>.</p>
</text></group><group><throws/><text><p>An error if the index is out of range.</p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Index assign operator.
 Set the value at the index <ref resolved='predef::ADT.Sequence.`[]=.index'>index</ref> to be <ref resolved='predef::ADT.Sequence.`[]=.value'>value</ref>.</p>
</text><group><param name='index'/><text><p>The index to set.</p>
</text></group><group><param name='value'/><text><p>The new value.</p>
</text></group><group><returns/><text><p>The new value at the index <ref resolved='predef::ADT.Sequence.`[]=.index'>index</ref>.</p>
</text></group></doc>
<method name='`[]='>
<arguments><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Addition operator
 Append the content of <ref resolved='predef::ADT.Sequence.`+.coll'>coll</ref> to thies sequence and return the results 
 as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text><group><param name='coll'/><text><p>The sequence to append to his sequence.</p>
</text></group><group><returns/><text><p>The result of the append as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.Sequence'>Sequence</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Subtraction operator
 Removes those values in this sequence that also are present in <ref resolved='predef::ADT.Sequence.`-.coll'>coll</ref> 
 and return the results as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text><group><param name='coll'/><text><p>The sequence to subtract from this sequence.</p>
</text></group><group><returns/><text><p>The result of the subtraction as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text></group></doc>
<method name='`-'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.Sequence'>Sequence</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&amp;' homogen-type='method'><doc><text><p>And operator
 Perform an and on this sequence and the <ref resolved='predef::ADT.Sequence.`&amp;.coll'>coll</ref> sequence by only returning 
 those values that is present in both sequences as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.
 The remaining values is in the same order as they are in this sequence and
 the values are compared using `==.</p>
</text><group><param name='coll'/><text><p>The sequence to and to this sequence.</p>
</text></group><group><returns/><text><p>The result of the and as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text></group></doc>
<method name='`&amp;'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.Sequence'>Sequence</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`|' homogen-type='method'><doc><text><p>Or operator
 Perform an or on this sequence and the <ref resolved='predef::ADT.Sequence.`|.coll'>coll</ref> sequence by returning 
 those values that is present in both sequences as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.
 The values are compared using `==.</p>
</text><group><param name='coll'/><text><p>The sequence to or with this sequence.</p>
</text></group><group><returns/><text><p>The result of the or as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text></group></doc>
<method name='`|'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.Sequence'>Sequence</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`^' homogen-type='method'><doc><text><p>Xor operator
 Perform a xor on this sequence and the <ref resolved='predef::ADT.Sequence.`^.coll'>coll</ref> sequence by returning 
 those values that is present in one of the sequences but not in both 
 adapters as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.
 The values are compared using `==.</p>
</text><group><param name='coll'/><text><p>The sequence to xor with this sequence.</p>
</text></group><group><returns/><text><p>The result of the xor as a new <ref resolved='predef::ADT.Sequence'>Sequence</ref>.</p>
</text></group></doc>
<method name='`^'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.Sequence'>Sequence</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence'>Sequence</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='_equal' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if the object <ref resolved='predef::ADT.Sequence._equal.coll'>coll</ref> is a <ref resolved='predef::ADT.Sequence'>Sequence</ref>
   and contains the same values in the same order.</p>
</text></group></doc>
<method name='_equal'>
<arguments><argument name='coll'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><group><returns/><text><p>The indices in this adapter as an array.</p>
</text></group></doc>
<method name='_indices'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_insert_element' homogen-type='method'><doc><text><p>Insert an element in the sequence at the position <ref resolved='predef::ADT.Sequence._insert_element.index'>index</ref>, the value
 at the position <ref resolved='predef::ADT.Sequence._insert_element.index'>index</ref> and all above will have their index increased 
 with one.</p>
</text><group><param name='index'/><text><p>The index to insert the value at.</p>
</text></group><group><param name='value'/><text><p>The new value.</p>
</text></group></doc>
<method name='_insert_element'>
<arguments><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_remove_element' homogen-type='method'><doc><text><p>Remove the values at index <ref resolved='predef::ADT.Sequence._remove_element.index'>index</ref> from the sequence.</p>
</text><group><param name='index'/><text><p>The index to remove.</p>
</text></group><group><returns/><text><p>The removed value.</p>
</text></group></doc>
<method name='_remove_element'>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_search' homogen-type='method'><doc><text><p>Search the sequence for a specific value. Return the index of the first 
   value that is equal to <ref resolved='predef::ADT.Sequence._search.value'>value</ref>. If no value was found <expr>UNDEFINED</expr> 
   is returned instead.</p>
</text><group><param name='value'/><text><p>The value to find.</p>
</text></group><group><param name='start'/><text><p>If a start value is supplied it will start searching at the index 
   <ref resolved='predef::ADT.Sequence._search.start'>start</ref>.</p>
</text></group><group><returns/><text><p>Returns the index of the found value or <expr>UNDEFINED</expr>.</p>
</text></group></doc>
<method name='_search'>
<arguments><argument name='value'><type><mixed/></type></argument><argument name='start'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><group><returns/><text><p>The number of elements in this adapter.</p>
</text></group></doc>
<method name='_sizeof'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><group><returns/><text><p>The values in this adapter as an array.</p>
</text></group></doc>
<method name='_values'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a value at the end of the sequence.</p>
</text><group><param name='value'/><text><p>The value to add.</p>
</text></group></doc>
<method name='add'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Cast operator.</p>
</text><group><param name='type'/><text><p>Casts to this type.</p>
<p>   Casts to the following types are supported:</p>
<string><group><value>"array"</value><text><p>Cast the content of this sequence to an array.</p>
</text></group></string>
</text></group><group><returns/><text><p>An array with the contents of this sequence.</p>
</text></group></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>Clear the contents of the sequence.</p>
</text></doc>
<method name='clear'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_value' homogen-type='method'><doc><text><p>Remove the first occurrence of the value <ref resolved='predef::ADT.Sequence.delete_value.value'>value</ref> from the sequence.</p>
</text><group><param name='value'/><text><p>The value to remove from the sequence.</p>
</text></group><group><returns/><text><p>The index of the removed element or -1 if there was no value to 
   remove.</p>
</text></group></doc>
<method name='delete_value'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_empty' homogen-type='method'><doc><group><returns/><text><p>Returns <expr>1</expr> if the sequence is empty otherwise <expr>0</expr>.</p>
</text></group></doc>
<method name='is_empty'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='max_size' homogen-type='method'><doc><group><returns/><text><p>Returns -1.</p>
</text></group></doc>
<method name='max_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new <ref resolved='predef::ADT.Sequence'>Sequence</ref> around the array arg or a new
   <ref resolved='predef::ADT.Sequence'>Sequence</ref> with the size of arg.</p>
</text></doc>
<method name='create'>
<arguments><argument name='arg'><type><or><array/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_get_iterator' homogen-type='method'><doc><text><p>Create and initiate a new SequenceIterator that could be used
   to iterate over this sequence.</p>
</text><group><param name='ind'/><text><p>If an <ref resolved='predef::ADT.Sequence._get_iterator.ind'>ind</ref> value is supplied the iterator will be positioned at
   that index.</p>
</text></group><group><returns/><text><p>An iterator.</p>
</text></group></doc>
<method name='_get_iterator'>
<arguments><argument name='ind'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='first' homogen-type='method'><doc><text><p>Create and initiate a new SequenceIterator that could be used
   to iterate over this sequence.</p>
</text><group><returns/><text><p>An iterator positioned at the first element in the sequence.</p>
</text></group></doc>
<method name='first'>
<arguments/>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='last' homogen-type='method'><doc><text><p>Create and initiate a new SequenceIterator that could be used
   to iterate over this sequence.</p>
</text><group><returns/><text><p>An iterator positioned after the last element in the sequence.</p>
</text></group></doc>
<method name='last'>
<arguments/>
<returntype><object resolved='predef::ADT.Sequence.SequenceIterator'>SequenceIterator</object></returntype>
</method>
</docgroup>
</class>

<class name='CircularList'><doc><text><p>This is an circular list implemented by an array. It has a constant time 
 complexity for pop and push. It has a limited max size but it can be 
 increased with the method allocate.</p>
</text></doc>

<class name='CircularListIterator'><doc><text><p>This is the iterator for the CircularList. It implements the 
    IndexIterator and the OutputIterator.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new iterator for the CircularList <ref resolved='predef::ADT.CircularList.CircularListIterator.create.list'>list</ref>. If <ref resolved='predef::ADT.CircularList.CircularListIterator.create.start'>start</ref> is
   supplied it will try to position the iterator at <ref resolved='predef::ADT.CircularList.CircularListIterator.create.start'>start</ref>.</p>
</text></doc>
<method name='create'>
<arguments><argument name='list'><type><object resolved='predef::ADT.CircularList.CircularListIterator.create'/></type></argument><argument name='start'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='index' homogen-type='method'><doc><group><returns/><text><p>The index at the current position.</p>
</text></group></doc>
<method name='index'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='value' homogen-type='method'><doc><group><returns/><text><p>The value at the current position.</p>
</text></group></doc>
<method name='value'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Move the iterator <ref resolved='predef::ADT.CircularList.CircularListIterator.`+.steps'>steps</ref> steps forward (negative value on <ref resolved='predef::ADT.CircularList.CircularListIterator.`+.steps'>steps</ref>
   will cause the iterator to move backwards) and return the result
   as a new iterator.</p>
</text><group><returns/><text><p>A new iterator positioned <ref resolved='predef::ADT.CircularList.CircularListIterator.`+.steps'>steps</ref> steps forward.</p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Move this iterator <ref resolved='predef::ADT.CircularList.CircularListIterator.`+=.steps'>steps</ref> steps forward (negative value on <ref resolved='predef::ADT.CircularList.CircularListIterator.`+=.steps'>steps</ref>
   will cause the iterator to move backwards) and return the result.</p>
</text><group><returns/><text><p>This iterator positioned <ref resolved='predef::ADT.CircularList.CircularListIterator.`+=.steps'>steps</ref> steps forward.</p>
</text></group></doc>
<method name='`+='>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Move the iterator <ref resolved='predef::ADT.CircularList.CircularListIterator.`-.steps'>steps</ref> steps backwards (negative value on 
   <ref resolved='predef::ADT.CircularList.CircularListIterator.`-.steps'>steps</ref> will cause the iterator to move forwards) and return 
   the result as a new iterator.</p>
</text><group><returns/><text><p>A new iterator positioned <ref resolved='predef::ADT.CircularList.CircularListIterator.`-.steps'>steps</ref> steps backwards.</p>
</text></group></doc>
<method name='`-'>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_next' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if it is possible to move <ref resolved='predef::ADT.CircularList.CircularListIterator.has_next.steps'>steps</ref> steps
    forwards, if <ref resolved='predef::ADT.CircularList.CircularListIterator.has_next.steps'>steps</ref> weren't supplied it check if it is
    possible to move one step forward.</p>
</text></group></doc>
<method name='has_next'>
<arguments><argument name='steps'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_previous' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if it is possible to move <ref resolved='predef::ADT.CircularList.CircularListIterator.has_previous.steps'>steps</ref> steps
    backwards, if <ref resolved='predef::ADT.CircularList.CircularListIterator.has_previous.steps'>steps</ref> weren't supplied it check if it is
    possible to move one step backward.</p>
</text></group></doc>
<method name='has_previous'>
<arguments><argument name='steps'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>false</tt> if the iterator has reached the end.</p>
</text></group></doc>
<method name='`!'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='_equal' homogen-type='method'><doc><text><p>Compare this iterator with another iterator.</p>
</text><group><param name='iter'/><text><p>The iterator to compare with</p>
</text></group><group><returns/><text><p>Returns <tt>true</tt> if both iterators iterates over the same
    objects and are positioned at the same spot.</p>
</text></group></doc>
<method name='_equal'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc><text><p>Less then operator</p>
</text><group><returns/><text><p>Returns <tt>true</tt> if this iterator has a lower index
    then <ref resolved='predef::ADT.CircularList.CircularListIterator.`&lt;.iter'>iter</ref>.</p>
</text></group></doc>
<method name='`&lt;'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p>Greater then operator</p>
</text><group><returns/><text><p>Returns <tt>true</tt> if this iterator has a higher index
    then <ref resolved='predef::ADT.CircularList.CircularListIterator.`&gt;.iter'>iter</ref>.</p>
</text></group></doc>
<method name='`&gt;'>
<arguments><argument name='iter'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='distance' homogen-type='method'><doc><group><param name='iter'/><text><p>The iterator to measure the distance to.</p>
</text></group><group><returns/><text><p>Returns distance between this iterator and <ref resolved='predef::ADT.CircularList.CircularListIterator.distance.iter'>iter</ref>.</p>
</text></group><group><throws/><text><p>An error if the two iterator could not be compared.</p>
</text></group></doc>
<method name='distance'>
<arguments><argument name='iter'><type><object resolved='predef::ADT.CircularList.CircularListIterator.distance'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_collection' homogen-type='method'><doc><group><returns/><text><p>Returns the CircularList this iterator currently iterates over.</p>
</text></group></doc>
<method name='get_collection'>
<arguments/>
<returntype><object resolved='predef::ADT.CircularList'>CircularList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Set the value at the current position.</p>
</text><group><param name='val'/><text><p>The new value</p>
</text></group><group><returns/><text><p>Returns the old value</p>
</text></group></doc>
<method name='set_value'>
<arguments><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Index operator</p>
</text><group><param name='index'/><text><p>The index to get the value for, could be negative to index from the end.</p>
</text></group><group><returns/><text><p>The value at the index <ref resolved='predef::ADT.CircularList.`[].index'>index</ref></p>
</text></group><group><throws/><text><p>An error if the index is out of range.</p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Index assign operator.
 Set the value at the index <ref resolved='predef::ADT.CircularList.`[]=.index'>index</ref> to be <ref resolved='predef::ADT.CircularList.`[]=.value'>value</ref></p>
</text><group><param name='index'/><text><p>The index to set</p>
</text></group><group><param name='value'/><text><p>The new value</p>
</text></group><group><returns/><text><p>The new value at the index <ref resolved='predef::ADT.CircularList.`[]=.index'>index</ref></p>
</text></group><group><throws/><text><p>An error if the index is out of range.</p>
</text></group></doc>
<method name='`[]='>
<arguments><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Addition operator
 Append the content of this CircularList and <ref resolved='predef::ADT.CircularList.`+.coll'>coll</ref> and return the results 
 as a new <ref resolved='predef::ADT.CircularList'>CircularList</ref>.</p>
</text><group><param name='coll'/><text><p>The list to append to his list</p>
</text></group><group><returns/><text><p>The result of the append as a new <ref resolved='predef::ADT.CircularList'>CircularList</ref>.</p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='coll'><type><object resolved='predef::ADT.CircularList'>CircularList</object></type></argument></arguments>
<returntype><object resolved='predef::ADT.CircularList'>CircularList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='_equal' homogen-type='method'><doc><group><returns/><text><p>Returns <tt>true</tt> if the object <ref resolved='predef::ADT.CircularList._equal.coll'>coll</ref> is a <ref resolved='predef::ADT.CircularList'>CircularList</ref>
   and contains the same values in the same order.</p>
</text></group></doc>
<method name='_equal'>
<arguments><argument name='coll'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><group><returns/><text><p>The indices in this list as an array.</p>
</text></group></doc>
<method name='_indices'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_insert_element' homogen-type='method'><doc><text><p>Insert an element in the list at the position <ref resolved='predef::ADT.CircularList._insert_element.index'>index</ref>, the value
 at the position <ref resolved='predef::ADT.CircularList._insert_element.index'>index</ref> and all above will have thier index increased 
 with one.</p>
</text><group><param name='index'/><text><p>The index to insert the value at.</p>
</text></group><group><param name='value'/><text><p>The new value.</p>
</text></group><group><throws/><text><p>An error if the index is out of range.</p>
</text></group></doc>
<method name='_insert_element'>
<arguments><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_remove_element' homogen-type='method'><doc><text><p>Remove the values at index <ref resolved='predef::ADT.CircularList._remove_element.index'>index</ref> from the list.</p>
</text><group><param name='index'/><text><p>The index to remove.</p>
</text></group><group><returns/><text><p>The removed value.</p>
</text></group><group><throws/><text><p>An error if the index is out of range.</p>
</text></group></doc>
<method name='_remove_element'>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_search' homogen-type='method'><doc><text><p>Search the list for a specific value. Return the index of the first 
   value that is equal to <ref resolved='predef::ADT.CircularList._search.value'>value</ref>. If no value was found <expr>UNDEFINED</expr> 
   is returned instead</p>
</text><group><param name='value'/><text><p>The value to find</p>
</text></group><group><param name='start'/><text><p>If a start value is supplied it will start searching at the index 
   <ref resolved='predef::ADT.CircularList._search.start'>start</ref>.</p>
</text></group><group><returns/><text><p>Returns the index of the found value or <expr>UNDEFINED</expr>.</p>
</text></group><group><throws/><text><p>An error if the start is out of range.</p>
</text></group></doc>
<method name='_search'>
<arguments><argument name='value'><type><mixed/></type></argument><argument name='start'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><group><returns/><text><p>The number of elements in this list.</p>
</text></group></doc>
<method name='_sizeof'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_values' homogen-type='method'><doc><group><returns/><text><p>The values in this list as an array.</p>
</text></group></doc>
<method name='_values'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a value at the front of the list</p>
</text><group><param name='value'/><text><p>The value to add.</p>
</text></group><group><throws/><text><p>An error if the list is full.</p>
</text></group></doc>
<method name='add'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='allocate' homogen-type='method'><doc><text><p>Increase the maxsize of the CircularlList.</p>
</text><group><param name='elements'/><text><p>Add this number of new elements to the list.</p>
</text></group></doc>
<method name='allocate'>
<arguments><argument name='elements'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Cast operator.</p>
</text><group><param name='type'/><text><p>Casts to this type.</p>
<p>   Casts to the following types are supported:</p>
<string><group><value>"array"</value><text><p>Cast the content of this list to an array.</p>
</text></group></string>
</text></group><group><returns/><text><p>An array with the contents of this list.</p>
</text></group></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>Clear the contents of the list.</p>
</text></doc>
<method name='clear'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_value' homogen-type='method'><doc><text><p>Remove the first occurrence of the value <ref resolved='predef::ADT.CircularList.delete_value.value'>value</ref> from the list.</p>
</text><group><param name='value'/><text><p>The value to remove from the list.</p>
</text></group><group><returns/><text><p>The index of the removed element or -1 if there was no value to 
   remove.</p>
</text></group></doc>
<method name='delete_value'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_empty' homogen-type='method'><doc><group><returns/><text><p>Returns <expr>1</expr> if the list is empty otherwise <expr>0</expr>.</p>
</text></group></doc>
<method name='is_empty'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='max_size' homogen-type='method'><doc><group><returns/><text><p>Returns the maximal size of this list.</p>
</text></group></doc>
<method name='max_size'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek_back' homogen-type='method'><doc><group><returns/><text><p>The value at the back of the list but do not remove it from the list.</p>
</text></group></doc>
<method name='peek_back'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='peek_front' homogen-type='method'><doc><group><returns/><text><p>The value at the front of the list but do not remove it from the list.</p>
</text></group></doc>
<method name='peek_front'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop_back' homogen-type='method'><doc><text><p>Remove the value at the back of the list and return it.</p>
</text><group><returns/><text><p>The value at the back of the list.</p>
</text></group></doc>
<method name='pop_back'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop_front' homogen-type='method'><doc><text><p>Remove the value at the front of the list and return it.</p>
</text><group><returns/><text><p>The value at the front of the list.</p>
</text></group></doc>
<method name='pop_front'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='push_back' homogen-type='method'><doc><text><p>Add a new value at the end of the list.</p>
</text><group><param name='value'/><text><p>The value to add.</p>
</text></group></doc>
<method name='push_back'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='push_front' homogen-type='method'><doc><text><p>Add a new value at the end of the list.</p>
</text><group><param name='value'/><text><p>The value to add.</p>
</text></group></doc>
<method name='push_front'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new <ref resolved='predef::ADT.CircularList'>CircularList</ref> around the array arg or a new
   <ref resolved='predef::ADT.CircularList'>CircularList</ref> with the maximum size of arg.</p>
</text></doc>
<method name='create'>
<arguments><argument name='arg'><type><or><array/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_get_iterator' homogen-type='method'><doc><text><p>Create and initiate a new CircularListIterator that could be used
   to iterate over this list.</p>
</text><group><param name='ind'/><text><p>If an <ref resolved='predef::ADT.CircularList._get_iterator.ind'>ind</ref> value is supplied the iterator will be positioned at
   that index.</p>
</text></group><group><returns/><text><p>An iterator.</p>
</text></group></doc>
<method name='_get_iterator'>
<arguments><argument name='ind'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='first' homogen-type='method'><doc><text><p>Create and initiate a new CircularListIterator that could be used
   to iterate over this list.</p>
</text><group><returns/><text><p>An iterator positioned at the first element in the list.</p>
</text></group></doc>
<method name='first'>
<arguments/>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='last' homogen-type='method'><doc><text><p>Create and initiate a new CircularListIterator that could be used
   to iterate over this list.</p>
</text><group><returns/><text><p>An iterator positioned after the last element in the list.</p>
</text></group></doc>
<method name='last'>
<arguments/>
<returntype><object resolved='predef::ADT.CircularList.CircularListIterator'>CircularListIterator</object></returntype>
</method>
</docgroup>
</class></module>



















<module name='Parser'>

<module name='LR'>

<module name='GrammarParser'><doc><text><p>This module generates an LR parser from a grammar specified according
 to the following grammar:</p>
<p> <pre>
        directives : directive ;
	   directives : directives directive ;
	   directive : declaration ;
	   directive : rule ;
	   declaration : "%token" terminals ";" ;
	   rule : nonterminal ":" symbols ";" ;
	   rule : nonterminal ":" symbols action ";" ;
	   symbols : symbol ;
	   symbols : symbols symbol ;
	   terminals : terminal ;
	   terminals : terminals terminal ;
	   symbol : nonterminal ;
	   symbol : "string" ;
	   action : "{" "identifier" "}" ;
	   nonterminal : "identifier" ;
	   terminal : "string";
 </pre></p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/GrammarParser.pmod'/><classname resolved='predef::Parser.LR'>Parser.LR</classname></import>
</docgroup>
<docgroup homogen-type='variable' homogen-name='lr_error'><doc><text><p>Error code from the parsing.</p>
</text></doc>
<variable name='lr_error'><source-position first-line='177' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/GrammarParser.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='make_parser' homogen-type='method'><doc><text><p>Compiles the parser-specification given in the first argument.
 Named actions are taken from the object if available, otherwise
 left as is.</p>
</text><group><bugs/><text><p>Returns error-code in both GrammarParser.error and
 return_value-&gt;lr_error.</p>
</text></group></doc>
<method name='make_parser'><source-position first-line='312' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/GrammarParser.pmod'/>
<arguments><argument name='str'><type><string/></type></argument><argument name='m'><type><or><object resolved='predef::Parser.LR.GrammarParser.make_parser'/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.LR.Parser'>Parser</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_parser_from_file' homogen-type='method'><doc><text><p>Compiles the file specified in the first argument into an LR parser.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.LR.GrammarParser.make_parser'>make_parser</ref></p>
</text></group></doc>
<method name='make_parser_from_file'><source-position first-line='365' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/GrammarParser.pmod'/>
<arguments><argument name='fname'><type><string/></type></argument><argument name='m'><type><or><object resolved='predef::Parser.LR.GrammarParser.make_parser_from_file'/><void/></or></type></argument></arguments>
<returntype><or><int/><object resolved='predef::Parser.LR.Parser'>Parser</object></or></returntype>
</method>
</docgroup>
</module>

<class name='Priority'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><doc><text><p>Specifies the priority and associativity of a rule.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='value'><doc><text><p>Priority value</p>
</text></doc>
<variable name='value'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='assoc'><doc><text><p>Associativity</p>
<int><group><value>-1</value><text><p>Left</p>
</text></group><group><value>0</value><text><p>None</p>
</text></group><group><value>1</value><text><p>Right</p>
</text></group></int>
</text></doc>
<variable name='assoc'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new priority object.</p>
</text><group><param name='p'/><text><p>Priority.</p>
</text></group><group><param name='a'/><text><p>Associativity.</p>
</text></group></doc>
<method name='create'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='p'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Rule'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><doc><text><p>This object is used to represent a BNF-rule in the LR parser.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='nonterminal'><doc><text><p>Non-terminal this rule reduces to.</p>
</text></doc>
<variable name='nonterminal'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='symbols'><doc><text><p>The actual rule</p>
</text></doc>
<variable name='symbols'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><array><valuetype><or><string/><int/></or></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='action'><doc><text><p>Action to do when reducing this rule.
 function - call this function.
 string - call this function by name in the object given to the parser.
 The function is called with arguments corresponding to the values of
 the elements of the rule. The return value of the function will be
 the value of this non-terminal. The default rule is to return the first
 argument.</p>
</text></doc>
<variable name='action'><source-position first-line='94' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><or><function/><string/></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='has_tokens'><doc><text><p>This rule contains tokens</p>
</text></doc>
<variable name='has_tokens'><source-position first-line='99' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='num_nonnullables'><doc><text><p>This rule has this many non-nullable symbols at the moment.</p>
</text></doc>
<variable name='num_nonnullables'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='number'><doc><text><p>Sequence number of this rule (used for conflict resolving)
 Also used to identify the rule.</p>
</text></doc>
<variable name='number'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pri'><doc><text><p>Priority and associativity of this rule.</p>
</text></doc>
<variable name='pri'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Priority'>Priority</object></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a BNF rule.</p>
</text><group><example/><text><p>The rule</p>
<p>	   rule : nonterminal ":" symbols ";" { add_rule };</p>
<p>   might be created as</p>
<p>	   rule(4, ({ 9, ":", 5, ";" }), "add_rule");</p>
<p>   where 4 corresponds to the nonterminal "rule", 9 to "nonterminal"
   and 5 to "symbols", and the function "add_rule" is too be called
   when this rule is reduced.</p>
</text></group><group><param name='nt'/><text><p>Non-terminal to reduce to.</p>
</text></group><group><param name='r'/><text><p>Symbol sequence that reduces to nt.</p>
</text></group><group><param name='a'/><text><p>Action to do when reducing according to this rule.
   function - Call this function.
   string - Call this function by name in the object given to the parser.
   The function is called with arguments corresponding to the values of
   the elements of the rule. The return value of the function will become
   the value of this non-terminal. The default rule is to return the first
   argument.</p>
</text></group></doc>
<method name='create'><source-position first-line='143' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='nt'><type><int/></type></argument><argument name='r'><type><array><valuetype><or><string/><int/></or></valuetype></array></type></argument><argument name='a'><type><or><function/><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><enum name='SeverityLevel'><source-position first-line='164' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><doc><text><p>Severity level</p>
</text></doc></enum>

<class name='ErrorHandler'><source-position first-line='171' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><doc><text><p>Class handling reporting of errors and warnings.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='verbose'><doc><text><p>Verbosity level</p>
<int><group><value>-1</value><text><p>Just errors.</p>
</text></group><group><value>0</value><text><p>Errors and warnings.</p>
</text></group><group><value>1</value><text><p>Also notices.</p>
</text></group></int>
</text></doc>
<variable name='verbose'><source-position first-line='183' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><optional/></modifiers><type><int><min>-1</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new error handler.</p>
</text><group><param name='verbosity'/><text><p>Level of verbosity.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.LR.ErrorHandler.verbose'>verbose</ref></p>
</text></group></doc>
<method name='create'><source-position first-line='205' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='verbosity'><type><or><int><min>-1</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Parser'><source-position first-line='224' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><doc><text><p>This object implements an LALR(1) parser and compiler.</p>
<p> Normal use of this object would be:</p>
<p> <pre>
 set_error_handler
 {add_rule, set_priority, set_associativity}*
 set_symbol_to_string
 compile
 {parse}*
 </pre></p>
</text></doc>

<class name='Item'><source-position first-line='278' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers><doc><text><p>An LR(0) item, a partially parsed rule.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='r'><doc><text><p>The rule</p>
</text></doc>
<variable name='r'><source-position first-line='281' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Rule'>Rule</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='offset'><doc><text><p>How long into the rule the parsing has come.</p>
</text></doc>
<variable name='offset'><source-position first-line='284' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='next_state'><doc><text><p>The state we will get if we shift according to this rule</p>
</text></doc>
<variable name='next_state'><source-position first-line='287' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='master_item'><doc><text><p>Item representing this one (used for shifts).</p>
</text></doc>
<variable name='master_item'><source-position first-line='290' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Parser.Item'>Item</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='direct_lookahead'><doc><text><p>Look-ahead set for this item.</p>
</text></doc>
<variable name='direct_lookahead'><source-position first-line='293' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><multiset><indextype><string/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error_lookahead'><doc><text><p>Look-ahead set used for detecting conflicts</p>
</text></doc>
<variable name='error_lookahead'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><multiset><indextype><string/></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='relation'><doc><text><p>Relation to other items (used when compiling).</p>
</text></doc>
<variable name='relation'><source-position first-line='299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><multiset><indextype><object resolved='predef::Parser.LR.Parser.Item'>Item</object></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='counter'><doc><text><p>Depth counter (used when compiling).</p>
</text></doc>
<variable name='counter'><source-position first-line='302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='number'><doc><text><p>Item identification number (used when compiling).</p>
</text></doc>
<variable name='number'><source-position first-line='305' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='item_id'><doc><text><p>Used to identify the item.
 Equal to r-&gt;number + offset.</p>
</text></doc>
<variable name='item_id'><source-position first-line='309' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
</class>

<class name='Kernel'><source-position first-line='336' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers><doc><text><p>Implements an LR(1) state</p>
</text></doc><docgroup homogen-type='variable' homogen-name='rules'><doc><text><p>Used to check if a rule already has been added when doing closures.</p>
</text></doc>
<variable name='rules'><source-position first-line='339' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><multiset><indextype><object resolved='predef::Parser.LR.Rule'>Rule</object></indextype></multiset></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='items'><doc><text><p>Contains the items in this state.</p>
</text></doc>
<variable name='items'><source-position first-line='342' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><array><valuetype><object resolved='predef::Parser.LR.Parser.Item'>Item</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='item_id_to_item'><doc><text><p>Used to lookup items given rule and offset</p>
</text></doc>
<variable name='item_id_to_item'><source-position first-line='345' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><mapping><indextype><int/></indextype><valuetype><object resolved='predef::Parser.LR.Parser.Item'>Item</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='symbol_items'><doc><text><p>Contains the items whose next symbol is this non-terminal.</p>
</text></doc>
<variable name='symbol_items'><source-position first-line='348' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><mapping><indextype><int/></indextype><valuetype><multiset><indextype><object resolved='predef::Parser.LR.Parser.Item'>Item</object></indextype></multiset></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='action'><doc><text><p>The action table for this state</p>
<p> <pre>
 object(kernel)    SHIFT to this state on this symbol.
 object(rule)      REDUCE according to this rule on this symbol.
 </pre></p>
</text></doc>
<variable name='action'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><mapping><indextype><or><int/><string/></or></indextype><valuetype><or><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object><object resolved='predef::Parser.LR.Rule'>Rule</object></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='closure_set'><doc><text><p>The symbols that closure has been called on.</p>
</text></doc>
<variable name='closure_set'><source-position first-line='359' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><multiset/></type></variable>
</docgroup>
<docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Add an item to the state.</p>
</text></doc>
<method name='add_item'><source-position first-line='366' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Parser.LR.Parser.Item'>Item</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='closure' homogen-type='method'><doc><text><p>Make the closure of this state.</p>
</text><group><param name='nonterminal'/><text><p>Nonterminal to make the closure on.</p>
</text></group></doc>
<method name='closure'><source-position first-line='388' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='nonterminal'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='goto_set' homogen-type='method'><doc><text><p>Make the goto-set of this state.</p>
</text></doc>
<method name='goto_set'><source-position first-line='422' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments/>
<returntype><multiset><indextype><or><int/><string/></or></indextype></multiset></returntype>
</method>
</docgroup>
<docgroup homogen-name='do_goto' homogen-type='method'><doc><text><p>Generates the state reached when doing goto on the specified symbol.
 i.e. it compiles the LR(0) state.</p>
</text><group><param name='symbol'/><text><p>Symbol to make goto on.</p>
</text></group></doc>
<method name='do_goto'><source-position first-line='442' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='symbol'><type><or><int/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></returntype>
</method>
</docgroup>
</class>

<class name='StateQueue'><source-position first-line='513' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers><doc><text><p>This is a queue, which keeps the elements even after they are retrieved.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='head'><doc><text><p>Index of the head of the queue.</p>
</text></doc>
<variable name='head'><source-position first-line='516' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='tail'><doc><text><p>Index of the tail of the queue.</p>
</text></doc>
<variable name='tail'><source-position first-line='519' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='arr'><doc><text><p>The queue itself.</p>
</text></doc>
<variable name='arr'><source-position first-line='522' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><array><valuetype><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Pushes the state on the queue.</p>
</text><group><param name='state'/><text><p>State to push.</p>
</text></group></doc>
<method name='push'><source-position first-line='528' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='state'><type><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>Return the next state from the queue.</p>
</text></doc>
<method name='next'><source-position first-line='539' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='variable' homogen-name='grammar'><doc><text><p>The grammar itself.</p>
</text></doc>
<variable name='grammar'><source-position first-line='227' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><mapping><indextype><int/></indextype><valuetype><array><valuetype><object resolved='predef::Parser.LR.Rule'>Rule</object></valuetype></array></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='start_state'><doc><text><p>The initial LR0 state.</p>
</text></doc>
<variable name='start_state'><source-position first-line='247' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='lr_error'><doc><text><p>Error code</p>
</text></doc>
<variable name='lr_error'><source-position first-line='250' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='known_states'><doc><text><p>LR0 states that are already known to the compiler.</p>
</text></doc>
<variable name='known_states'><source-position first-line='256' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='error_handler'><doc><text><p>Compile error and warning handler.</p>
</text></doc>
<variable name='error_handler'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><function><argtype><object resolved='predef::Parser.LR.SeverityLevel'>SeverityLevel</object></argtype><argtype><string/></argtype><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></variable>
</docgroup>
<docgroup homogen-name='rule_to_string' homogen-type='method'><doc><text><p>Pretty-prints a rule to a string.</p>
</text><group><param name='r'/><text><p>Rule to print.</p>
</text></group></doc>
<method name='rule_to_string'><source-position first-line='572' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='r'><type><object resolved='predef::Parser.LR.Rule'>Rule</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='item_to_string' homogen-type='method'><doc><text><p>Pretty-prints an item to a string.</p>
</text><group><param name='i'/><text><p>Item to pretty-print.</p>
</text></group></doc>
<method name='item_to_string'><source-position first-line='590' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='i'><type><object resolved='predef::Parser.LR.Parser.Item'>Item</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='state_to_string' homogen-type='method'><doc><text><p>Pretty-prints a state to a string.</p>
</text><group><param name='state'/><text><p>State to pretty-print.</p>
</text></group></doc>
<method name='state_to_string'><source-position first-line='599' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='state'><type><object resolved='predef::Parser.LR.Parser.Kernel'>Kernel</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc><text><p>Pretty-prints the current grammar to a string.</p>
</text></doc>
<method name='_sprintf'><source-position first-line='605' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><modifiers><static/></modifiers>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Implements casting.</p>
</text><group><param name='type'/><text><p>Type to cast to.</p>
</text></group></doc>
<method name='cast'><source-position first-line='636' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_priority' homogen-type='method'><doc><text><p>Sets the priority of a terminal.</p>
</text><group><param name='terminal'/><text><p>Terminal to set the priority for.</p>
</text></group><group><param name='pri_val'/><text><p>Priority; higher = prefer this terminal.</p>
</text></group></doc>
<method name='set_priority'><source-position first-line='651' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='terminal'><type><string/></type></argument><argument name='pri_val'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_associativity' homogen-type='method'><doc><text><p>Sets the associativity of a terminal.</p>
</text><group><param name='terminal'/><text><p>Terminal to set the associativity for.</p>
</text></group><group><param name='assoc'/><text><p>Associativity; negative - left, positive - right,
   zero - no associativity.</p>
</text></group></doc>
<method name='set_associativity'><source-position first-line='669' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='terminal'><type><string/></type></argument><argument name='assoc'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_symbol_to_string' homogen-type='method'><doc><text><p>Sets the symbol to string conversion function.
 The conversion function is used by the various *_to_string functions
 to make comprehensible output.</p>
</text><group><param name='s_to_s'/><text><p>Symbol to string conversion function.
 If zero or not specified, use the built-in function.</p>
</text></group></doc>
<method name='set_symbol_to_string'><source-position first-line='687' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='s_to_s'><type><or><void/><function><argtype><or><int/><string/></or></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_error_handler' homogen-type='method'><doc><text><p>Sets the error report function.</p>
</text><group><param name='handler'/><text><p>Function to call to report errors and warnings.
   If zero or not specifier, use the built-in function.</p>
</text></group></doc>
<method name='set_error_handler'><source-position first-line='697' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='handler'><type><or><void/><function><argtype><object resolved='predef::Parser.LR.SeverityLevel'>SeverityLevel</object></argtype><argtype><string/></argtype><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_rule' homogen-type='method'><doc><text><p>Add a rule to the grammar.</p>
</text><group><param name='r'/><text><p>Rule to add.</p>
</text></group></doc>
<method name='add_rule'><source-position first-line='706' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='r'><type><object resolved='predef::Parser.LR.Rule'>Rule</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='s_q'><doc><text><p>Contains all states used.
 In the queue section are the states that remain to be compiled.</p>
</text></doc>
<variable name='s_q'><source-position first-line='872' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/><type><object resolved='predef::Parser.LR.Parser.StateQueue'>StateQueue</object></type></variable>
</docgroup>
<docgroup homogen-name='compile' homogen-type='method'><doc><text><p>Compiles the grammar into a parser, so that parse() can be called.</p>
</text></doc>
<method name='compile'><source-position first-line='1300' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse' homogen-type='method'><doc><text><p>Parse the input according to the compiled grammar.
 The last value reduced is returned.</p>
</text><group><note/><text><p>The parser must have been compiled (with compile())
   prior to calling this function.</p>
</text></group><group><bugs/><text><p>Errors should be throw()n.</p>
</text></group><group><param name='scanner'/><text><p>The scanner function. It returns the next symbol from the input.
   It should either return a string (terminal) or an array with
   a string (terminal) and a mixed (value).
   EOF is indicated with the empty string.</p>
</text></group><group><param name='action_object'/><text><p>Object used to resolve those actions that have been specified as
   strings.</p>
</text></group></doc>
<method name='parse'><source-position first-line='1578' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/LR.pmod/module.pmod'/>
<arguments><argument name='scanner'><type><or><object resolved='predef::Parser.LR.Parser.parse'/><function><argtype><void/></argtype><returntype><or><string/><array><valuetype><or><string/><mixed/></or></valuetype></array></or></returntype></function></or></type></argument><argument name='action_object'><type><or><void/><object resolved='predef::Parser.LR.Parser.parse'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class></module>



<module name='XML'>

<class name='Validating'><doc><text><p>Validating XML parser.</p>
<p> Validates an XML file according to a DTD.</p>
<p> cf http://wwww.w3.org/TR/REC-xml/
 cf RFC3023</p>
<p> $Id: Validating.pike,v 1.5 2006/07/19 12:34:57 grubba Exp $</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Simple'><doc>
</doc>
<inherit name='Simple'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Validating.pike'/><classname resolved='predef::Parser.XML.Simple'>Parser.XML.Simple</classname></inherit>
</docgroup>
<docgroup homogen-name='parse' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='parse'><source-position first-line='401' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Validating.pike'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='callback'><type><function><argtype><string/></argtype><argtype><string/></argtype><argtype><mapping/></argtype><argtype><or><array/><string/></or></argtype><argtype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_dtd' homogen-type='method'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='parse_dtd'><source-position first-line='411' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Validating.pike'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='callback'><type><function><argtype><string/></argtype><argtype><string/></argtype><argtype><mapping/></argtype><argtype><or><array/><string/></or></argtype><argtype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<module name='Tree'><doc><text><p>XML parser that generates node-trees.</p>
<p> Has some support for XML namespaces
 <url>http://www.w3.org/TR/REC-xml-names/</url>
 RFC 2518 23.4.</p>
</text><group><note/><text><p>This module defines two sets of node trees;
   the <ref resolved='predef::Parser.XML.Tree.SimpleNode'>SimpleNode</ref>-based, and the <ref resolved='predef::Parser.XML.Tree.Node'>Node</ref>-based.
   The main difference between the two, is that
   the <ref resolved='predef::Parser.XML.Tree.Node'>Node</ref>-based trees have parent pointers,
   which tend to generate circular data references
   and thus garbage.</p>
<p>   There are some more subtle differences between
   the two. Please read the documentation carefully.</p>
</text></group></doc>

<class name='XMLNSParser'><source-position first-line='125' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><doc><text><p>Namespace aware parser.</p>
</text></doc><docgroup homogen-name='Enter' homogen-type='method'><doc><text><p>Check <ref resolved='predef::Parser.XML.Tree.XMLNSParser.Enter.attrs'>attrs</ref> for namespaces.</p>
</text><group><returns/><text><p>Returns the namespace expanded version of <ref resolved='predef::Parser.XML.Tree.XMLNSParser.Enter.attrs'>attrs</ref>.</p>
</text></group></doc>
<method name='Enter'><source-position first-line='137' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='attrs'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
</class>

<class name='AbstractSimpleNode'><source-position first-line='218' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><doc><text><p>Base class for nodes.</p>
</text></doc><docgroup homogen-name='get_children' homogen-type='method'><doc><text><p>Returns all the nodes children.</p>
</text></doc>
<method name='get_children'><source-position first-line='223' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='count_children' homogen-type='method'><doc><text><p>Returns the number of children of the node.</p>
</text></doc>
<method name='count_children'><source-position first-line='226' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_clone' homogen-type='method'><doc><text><p>Returns an initialized copy of the node.</p>
</text><group><note/><text><p>The returned node has no children.</p>
</text></group></doc>
<method name='low_clone'><source-position first-line='231' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clone' homogen-type='method'><doc><text><p>Returns a clone of the sub-tree rooted in the node.</p>
</text></doc>
<method name='clone'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_last_child' homogen-type='method'><doc><text><p>Returns the last childe node or zero.</p>
</text></doc>
<method name='get_last_child'><source-position first-line='244' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>The [] operator indexes among the node children, so
 <expr>node[0]</expr> returns the first node and <expr>node[-1]</expr> the last.</p>
</text><group><note/><text><p>The [] operator will select a node from all the nodes children,
   not just its element children.</p>
</text></group></doc>
<method name='`[]'><source-position first-line='257' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_child' homogen-type='method'><doc><text><p>Adds a child node to this node. The child node is
 added last in the child list.</p>
</text><group><note/><text><p>The return value differs from the one returned
   by <ref resolved='predef::Parser.XML.Tree.AbstractNode.add_child'>Node()-&gt;add_child()</ref>.</p>
</text></group><group><returns/><text><p>The current node.</p>
</text></group></doc>
<method name='add_child'><source-position first-line='274' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_child' homogen-type='method'><doc><text><p>Removes all occurrences of the provided node from the called nodes
 list of children.</p>
</text></doc>
<method name='remove_child'><source-position first-line='284' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace_children' homogen-type='method'><doc><text><p>Replaces the nodes children with the provided ones.</p>
</text></doc>
<method name='replace_children'><source-position first-line='290' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='children'><type><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace_child' homogen-type='method'><doc><text><p>Replaces the first occurrence of the old node child with
 the new node child.</p>
</text><group><note/><text><p>The return value differs from the one returned
   by <ref resolved='predef::Parser.XML.Tree.AbstractNode.replace_child'>Node()-&gt;replace_child()</ref>.</p>
</text></group><group><returns/><text><p>Returns the current node on success, and <expr>0</expr> (zero)
   if the node <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.replace_child.old'>old</ref> wasn't found.</p>
</text></group></doc>
<method name='replace_child'><source-position first-line='303' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='old'><type><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></type></argument><argument name='new'><type><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='zap_tree' homogen-type='method'><doc><text><p>Destruct the tree recursively. When the inheriting
 <ref resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</ref> or <ref resolved='predef::Parser.XML.Tree.Node'>Node</ref> is used, which have parent pointers,
 this function should be called for every tree that no longer is
 in use to avoid frequent garbage collector runs.</p>
</text></doc>
<method name='zap_tree'><source-position first-line='317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='walk_preorder' homogen-type='method'><doc><text><p>Traverse the node subtree in preorder, root node first, then
 subtrees from left to right, calling the callback function
 for every node. If the callback function returns <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref>
 the traverse is promptly aborted and <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> is returned.</p>
</text></doc>
<method name='walk_preorder'><source-position first-line='332' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='walk_preorder_2' homogen-type='method'><doc><text><p>Traverse the node subtree in preorder, root node first, then
 subtrees from left to right. For each node we call <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_preorder_2.cb_1'>cb_1</ref>
 before iterating through children, and then <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_preorder_2.cb_2'>cb_2</ref>
 (which always gets called even if the walk is aborted earlier).
 If the callback function returns <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> the traverse
 decend is aborted and <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> is returned once all waiting
 <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_preorder_2.cb_2'>cb_2</ref> functions have been called.</p>
</text></doc>
<method name='walk_preorder_2'><source-position first-line='349' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='cb_1'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='cb_2'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='walk_inorder' homogen-type='method'><doc><text><p>Traverse the node subtree in inorder, left subtree first, then
 root node, and finally the remaining subtrees, calling the function
 <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_inorder.callback'>callback</ref> for every node. If the function <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_inorder.callback'>callback</ref> returns
 <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> the traverse is promptly aborted and <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref>
 is returned.</p>
</text></doc>
<method name='walk_inorder'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='walk_postorder' homogen-type='method'><doc><text><p>Traverse the node subtree in postorder, first subtrees from left to
 right, then the root node, calling the function <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_postorder.callback'>callback</ref> for every
 node. If the function <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.walk_postorder.callback'>callback</ref> returns <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> the traverse
 is promptly aborted and <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> is returned.</p>
</text></doc>
<method name='walk_postorder'><source-position first-line='384' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='iterate_children' homogen-type='method'><doc><text><p>Iterates over the nodes children from left to right, calling the function
 <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.iterate_children.callback'>callback</ref> for every node. If the callback function returns <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref>
 the iteration is promptly aborted and <ref resolved='predef::Parser.XML.Tree.STOP_WALK'>STOP_WALK</ref> is returned.</p>
</text></doc>
<method name='iterate_children'><source-position first-line='397' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><int/><void/></or></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_descendants' homogen-type='method'><doc><text><p>Returns a list of all descendants in document order. Includes
 this node if <ref resolved='predef::Parser.XML.Tree.AbstractSimpleNode.get_descendants.include_self'>include_self</ref> is set.</p>
</text></doc>
<method name='get_descendants'><source-position first-line='407' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='include_self'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</object></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='AbstractNode'><source-position first-line='421' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><doc><text><p>Base class for nodes with parent pointers.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='AbstractSimpleNode'><doc>
</doc>
<inherit name='AbstractSimpleNode'><source-position first-line='422' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><classname resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</classname></inherit>
</docgroup>
<docgroup homogen-name='set_parent' homogen-type='method'><doc><text><p>Sets the parent node to <ref resolved='predef::Parser.XML.Tree.AbstractNode.set_parent.parent'>parent</ref>.</p>
</text></doc>
<method name='set_parent'><source-position first-line='429' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='parent'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_parent' homogen-type='method'><doc><text><p>Returns the parent node.</p>
</text></doc>
<method name='get_parent'><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_clone' homogen-type='method'><doc><text><p>Returns an initialized copy of the node.</p>
</text><group><note/><text><p>The returned node has no children, and no parent.</p>
</text></group></doc>
<method name='low_clone'><source-position first-line='444' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clone' homogen-type='method'><doc><text><p>Clones the node, optionally connected to parts of the tree.
 If direction is -1 the cloned nodes parent will be set, if
 direction is 1 the clone nodes childen will be set.</p>
</text></doc>
<method name='clone'><source-position first-line='452' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='direction'><type><or><void/><int><min>-1</min><max>1</max></int></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_root' homogen-type='method'><doc><text><p>Follows all parent pointers and returns the root node.</p>
</text></doc>
<method name='get_root'><source-position first-line='463' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_child' homogen-type='method'><doc><text><p>Adds a child node to this node. The child node is
 added last in the child list and its parent reference
 is updated.</p>
</text><group><note/><text><p>Returns the child node, NOT the current node.</p>
</text></group><group><returns/><text><p>The updated child node is returned.</p>
</text></group></doc>
<method name='add_child'><source-position first-line='482' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='tmp_add_child' homogen-type='method'><doc><text><p>Variant of <ref resolved='predef::Parser.XML.Tree.AbstractNode.add_child'>add_child</ref> that doesn't set the parent pointer in
 the child.</p>
<p> This is useful while building a node tree, to get efficient
 refcount garbage collection if the build stops abruptly.
 <ref resolved='predef::Parser.XML.Tree.AbstractNode.fix_tree'>fix_tree</ref> has to be called on the root node when the building
 is done.</p>
</text></doc>
<method name='tmp_add_child'><source-position first-line='497' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='fix_tree' homogen-type='method'><doc><text><p>Fix all parent pointers recursively in a tree that has been
 built with <ref resolved='predef::Parser.XML.Tree.AbstractNode.tmp_add_child'>tmp_add_child</ref>.</p>
</text></doc>
<method name='fix_tree'><source-position first-line='507' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_child' homogen-type='method'><doc><text><p>Removes all occurrences of the provided node from the called nodes
 list of children. The removed nodes parent reference is set to null.</p>
</text></doc>
<method name='remove_child'><source-position first-line='518' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='c'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_node' homogen-type='method'><doc><text><p>Removes this node from its parent. The parent reference is set to null.</p>
</text></doc>
<method name='remove_node'><source-position first-line='525' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace_children' homogen-type='method'><doc><text><p>Replaces the nodes children with the provided ones. All parent
 references are updated.</p>
</text></doc>
<method name='replace_children'><source-position first-line='531' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='children'><type><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace_child' homogen-type='method'><doc><text><p>Replaces the first occurrence of the old node child with
 the new node child. All parent references are updated.</p>
</text><group><note/><text><p>The returned value is NOT the current node.</p>
</text></group><group><returns/><text><p>Returns the new child node.</p>
</text></group></doc>
<method name='replace_child'><source-position first-line='546' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='old'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument><argument name='new'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace_node' homogen-type='method'><doc><text><p>Replaces this node with the provided one.</p>
</text><group><returns/><text><p>Returns the new node.</p>
</text></group></doc>
<method name='replace_node'><source-position first-line='558' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='new'><type><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_preceding_siblings' homogen-type='method'><doc><text><p>Returns all preceding siblings, i.e. all siblings present before
 this node in the parents children list.</p>
</text></doc>
<method name='get_preceding_siblings'><source-position first-line='565' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_following_siblings' homogen-type='method'><doc><text><p>Returns all following siblings, i.e. all siblings present after this node
 in the parents children list.</p>
</text></doc>
<method name='get_following_siblings'><source-position first-line='582' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_siblings' homogen-type='method'><doc><text><p>Returns all siblings, including this node.</p>
</text></doc>
<method name='get_siblings'><source-position first-line='598' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ancestors' homogen-type='method'><doc><text><p>Returns a list of all ancestors, with the top node last.
 The list will start with this node if <ref resolved='predef::Parser.XML.Tree.AbstractNode.get_ancestors.include_self'>include_self</ref> is set.</p>
</text></doc>
<method name='get_ancestors'><source-position first-line='608' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='include_self'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_preceding' homogen-type='method'><doc><text><p>Returns all preceding nodes, excluding this nodes ancestors.</p>
</text></doc>
<method name='get_preceding'><source-position first-line='622' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_following' homogen-type='method'><doc><text><p>Returns all the nodes that follows after the current one.</p>
</text></doc>
<method name='get_following'><source-position first-line='650' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='VirtualNode'><source-position first-line='676' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><modifiers><static/></modifiers><doc><text><p>Node in XML tree</p>
</text></doc><docgroup homogen-name='get_attributes' homogen-type='method'><doc><text><p>Returns this nodes attributes, which can be altered
 destructivly to alter the nodes attributes.</p>
</text></doc>
<method name='get_attributes'><source-position first-line='708' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_short_attributes' homogen-type='method'><doc><text><p>Returns this nodes name-space adjusted attributes.</p>
</text><group><note/><text><p><ref>set_short_namespaces()</ref> must have been called before
   calling this function.</p>
</text></group></doc>
<method name='get_short_attributes'><source-position first-line='715' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_node_type' homogen-type='method'><doc><text><p>Returns the node type. See defined node type constants.</p>
</text></doc>
<method name='get_node_type'><source-position first-line='718' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Returns text content in node.</p>
</text></doc>
<method name='get_text'><source-position first-line='721' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_doc_order' homogen-type='method'><doc/>
<method name='get_doc_order'><source-position first-line='724' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_doc_order' homogen-type='method'><doc/>
<method name='set_doc_order'><source-position first-line='727' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='o'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tag_name' homogen-type='method'><doc><text><p>Returns the name of the element node, or the nearest element above if
 an attribute node.</p>
</text></doc>
<method name='get_tag_name'><source-position first-line='731' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_any_name' homogen-type='method'><doc><text><p>Return name of tag or name of attribute node.</p>
</text></doc>
<method name='get_any_name'><source-position first-line='737' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tag_name' homogen-type='method'><doc><text><p>Change the tag name destructively. Can only be used on element and
 processing-instruction nodes.</p>
</text></doc>
<method name='set_tag_name'><source-position first-line='744' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_full_name' homogen-type='method'><doc><text><p>Return fully qualified name of the element node.</p>
</text></doc>
<method name='get_full_name'><source-position first-line='751' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='762' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='type'><type><int/></type></argument><argument name='name'><type><string/></type></argument><argument name='attr'><type><mapping/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='value_of_node' homogen-type='method'><doc><text><p>If the node is an attribute node or a text node, its value is returned.
 Otherwise the child text nodes are concatenated and returned.</p>
</text></doc>
<method name='value_of_node'><source-position first-line='782' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_first_element' homogen-type='method'><doc><text><p>Returns the first element child to this node.</p>
</text><group><param name='name'/><text><p>If provided, the first element child with that name is returned.</p>
</text></group><group><param name='full'/><text><p>If specified, name matching will be done against the full name.</p>
</text></group><group><returns/><text><p>Returns the first matching node, and 0 if no such node was found.</p>
</text></group></doc>
<method name='get_first_element'><source-position first-line='813' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='name'><type><or><string/><void/></or></type></argument><argument name='full'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_elements' homogen-type='method'><doc><text><p>Returns all element children to this node.</p>
</text><group><param name='name'/><text><p>If provided, only elements with that name is returned.</p>
</text></group><group><param name='full'/><text><p>If specified, name matching will be done against the full name.</p>
</text></group><group><returns/><text><p>Returns an array with matching nodes.</p>
</text></group></doc>
<method name='get_elements'><source-position first-line='842' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='name'><type><or><string/><void/></or></type></argument><argument name='full'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast a node to a string, which will return
 <ref resolved='predef::Parser.XML.Tree.VirtualNode.render_xml'>render_xml()</ref> for that node.</p>
</text></doc>
<method name='cast'><source-position first-line='877' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='render_xml' homogen-type='method'><doc><text><p>Creates an XML representation of the node sub tree. If the
 flag <ref resolved='predef::Parser.XML.Tree.VirtualNode.render_xml.preserve_roxen_entities'>preserve_roxen_entities</ref> is set, entities on the form
 <tt>&amp;foo.bar;</tt> will not be escaped.</p>
</text><group><param name='namespace_lookup'/><text><p>Mapping from namespace prefix to namespace symbol prefix.</p>
</text></group></doc>
<method name='render_xml'><source-position first-line='1073' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='preserve_roxen_entities'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='render_to_file' homogen-type='method'><doc><text><p>Creates an XML representation fo the node sub tree and streams
 the output to the file <ref resolved='predef::Parser.XML.Tree.VirtualNode.render_to_file.f'>f</ref>. If the flag <ref resolved='predef::Parser.XML.Tree.VirtualNode.render_to_file.preserve_roxen_entities'>preserve_roxen_entities</ref>
 is set, entities on the form <tt>&amp;foo.bar;</tt> will not be escaped.</p>
</text></doc>
<method name='render_to_file'><source-position first-line='1089' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument><argument name='preserve_roxen_entities'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='SimpleNode'><source-position first-line='1118' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><doc><text><p>XML node without parent pointers and attribute nodes.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='AbstractSimpleNode'><doc>
</doc>
<inherit name='AbstractSimpleNode'><source-position first-line='1120' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><classname resolved='predef::Parser.XML.Tree.AbstractSimpleNode'>AbstractSimpleNode</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='VirtualNode'><doc>
</doc>
<inherit name='VirtualNode'><source-position first-line='1121' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><classname resolved='predef::Parser.XML.Tree.VirtualNode'>VirtualNode</classname></inherit>
</docgroup>
</class>

<class name='Node'><source-position first-line='1212' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><doc><text><p>XML node with parent pointers.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='AbstractNode'><doc>
</doc>
<inherit name='AbstractNode'><source-position first-line='1214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><classname resolved='predef::Parser.XML.Tree.AbstractNode'>AbstractNode</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='VirtualNode'><doc>
</doc>
<inherit name='VirtualNode'><source-position first-line='1215' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/><classname resolved='predef::Parser.XML.Tree.VirtualNode'>VirtualNode</classname></inherit>
</docgroup>
<docgroup homogen-name='get_tag_name' homogen-type='method'><doc><text><p>Returns the name of the element node, or the nearest element above if
 an attribute node.</p>
</text></doc>
<method name='get_tag_name'><source-position first-line='1232' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_attr_name' homogen-type='method'><doc><text><p>Returns the name of the attribute node.</p>
</text></doc>
<method name='get_attr_name'><source-position first-line='1239' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_attribute_nodes' homogen-type='method'><doc><text><p>Creates and returns an array of new nodes; they will not be
 added as proper children to the parent node, but the parent
 link in the nodes are set so that upwards traversal is made
 possible.</p>
</text></doc>
<method name='get_attribute_nodes'><source-position first-line='1249' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Parser.XML.Tree.Node'>Node</object></valuetype></array></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='STOP_WALK'><doc/>
<constant name='STOP_WALK'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_ROOT'><doc/>
<constant name='XML_ROOT'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_ELEMENT'><doc/>
<constant name='XML_ELEMENT'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_TEXT'><doc/>
<constant name='XML_TEXT'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_HEADER'><doc/>
<constant name='XML_HEADER'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_PI'><doc/>
<constant name='XML_PI'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_COMMENT'><doc/>
<constant name='XML_COMMENT'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_DOCTYPE'><doc/>
<constant name='XML_DOCTYPE'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_ATTR'><doc><text><p>Attribute nodes are created on demand</p>
</text></doc>
<constant name='XML_ATTR'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='XML_NODE'><doc/>
<constant name='XML_NODE'><source-position first-line='53' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/></constant>
</docgroup>
<docgroup homogen-name='text_quote' homogen-type='method'><doc><text><p>Quotes the string given in <ref resolved='predef::Parser.XML.Tree.text_quote.data'>data</ref> by escaping &amp;, &lt; and &gt;.</p>
</text></doc>
<method name='text_quote'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='roxen_text_quote' homogen-type='method'><doc><text><p>Quotes strings just like <ref resolved='predef::Parser.XML.Tree.text_quote'>text_quote</ref>, but entities in the form
 <tt>&amp;foo.bar;</tt> will not be quoted.</p>
</text></doc>
<method name='roxen_text_quote'><source-position first-line='77' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='attribute_quote' homogen-type='method'><doc><text><p>Quotes the string given in <ref resolved='predef::Parser.XML.Tree.attribute_quote.data'>data</ref> by escaping &amp;, &lt;, &gt;, ' and ".</p>
</text></doc>
<method name='attribute_quote'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='roxen_attribute_quote' homogen-type='method'><doc><text><p>Quotes strings just like <ref resolved='predef::Parser.XML.Tree.attribute_quote'>attribute_quote</ref>, but entities in the
 form <tt>&amp;foo.bar;</tt> will not be quoted.</p>
</text></doc>
<method name='roxen_attribute_quote'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_parse_input' homogen-type='method'><doc><text><p>Takes an XML string and produces a <ref resolved='predef::Parser.XML.Tree.SimpleNode'>SimpleNode</ref> tree.</p>
</text></doc>
<method name='simple_parse_input'><source-position first-line='1655' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='predefined_entities'><type><or><void/><mapping/></or></type></argument><argument name='flags'><type><or><object>ParseFlags</object><void/></or></type></argument><argument name='default_namespace'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.SimpleNode'>SimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_parse_file' homogen-type='method'><doc><text><p>Loads the XML file <ref resolved='predef::Parser.XML.Tree.simple_parse_file.path'>path</ref>, creates a <ref resolved='predef::Parser.XML.Tree.SimpleNode'>SimpleNode</ref> tree representation and
 returns the root node.</p>
</text></doc>
<method name='simple_parse_file'><source-position first-line='1715' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='predefined_entities'><type><or><void/><mapping/></or></type></argument><argument name='flags'><type><or><object>ParseFlags</object><void/></or></type></argument><argument name='default_namespace'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.SimpleNode'>SimpleNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_input' homogen-type='method'><doc><text><p>Takes an XML string and produces a node tree.</p>
</text><group><note/><text><p><ref resolved='predef::Parser.XML.Tree.parse_input.flags'>flags</ref> is not used for <ref>PARSE_WANT_ERROR_CONTEXT</ref>,
 <ref>PARSE_FORCE_LOWERCASE</ref> or <ref>PARSE_ENABLE_NAMESPACES</ref> since they
 are covered by the separate flag arguments.</p>
</text></group></doc>
<method name='parse_input'><source-position first-line='1740' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='no_fallback'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument><argument name='force_lowercase'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument><argument name='predefined_entities'><type><or><void/><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></or></type></argument><argument name='parse_namespaces'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument><argument name='flags'><type><or><object>ParseFlags</object><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.Node'>Node</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_file' homogen-type='method'><doc><text><p>Loads the XML file <ref resolved='predef::Parser.XML.Tree.parse_file.path'>path</ref>, creates a node tree representation and
 returns the root node.</p>
</text></doc>
<method name='parse_file'><source-position first-line='1798' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/Tree.pmod'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='parse_namespaces'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.Tree.Node'>Node</object></returntype>
</method>
</docgroup>
</module>

<module name='NSTree'><doc><text><p>A namespace aware version of Parser.XML.Tree. This implementation
 does as little validation as possible, so e.g. you can call your
 namespace xmlfoo without complaints.</p>
</text></doc>

<class name='NSNode'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/><doc><text><p>Namespace aware node.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Node'><doc>
</doc>
<inherit name='Node'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/><classname resolved='predef::Parser.XML.Tree.Node'>Node</classname></inherit>
</docgroup>
<docgroup homogen-name='get_ns' homogen-type='method'><doc><text><p>Returns the namespace in which the current element is defined in.</p>
</text></doc>
<method name='get_ns'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_ns' homogen-type='method'><doc><text><p>Returns the default namespace in the current scope.</p>
</text></doc>
<method name='get_default_ns'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_defined_nss' homogen-type='method'><doc><text><p>Returns a mapping with all the namespaces defined in the current
 scope, except the default namespace.</p>
</text><group><note/><text><p>The returned mapping is the same as the one in the node, so
   destructive changes will affect the node.</p>
</text></group></doc>
<method name='get_defined_nss'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ns_attributes' homogen-type='method'><doc><text><p>Returns the attributes in this node that is declared in the provided
 namespace.</p>
</text></doc>
<method name='get_ns_attributes'>
<arguments><argument name='namespace'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ns_attributes' homogen-type='method'><doc><text><p>Returns all the attributes in all namespaces that is associated with
 this node.</p>
</text><group><note/><text><p>The returned mapping is the same as the one in the node, so
   destructive changes will affect the node.</p>
</text></group></doc>
<method name='get_ns_attributes'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_namespace' homogen-type='method'><doc><text><p>Adds a new namespace to this node. The preferred symbol to
 use to identify the namespace can be provided in the <ref resolved='predef::Parser.XML.NSTree.NSNode.add_namespace.symbol'>symbol</ref>
 argument. If <ref resolved='predef::Parser.XML.NSTree.NSNode.add_namespace.chain'>chain</ref> is set, no attempts to overwrite an
 already defined namespace with the same identifier will be made.</p>
</text></doc>
<method name='add_namespace'><source-position first-line='57' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments><argument name='ns'><type><string/></type></argument><argument name='symbol'><type><or><void/><string/></or></type></argument><argument name='chain'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='diff_namespaces' homogen-type='method'><doc><text><p>Returns the difference between this nodes and its parents namespaces.</p>
</text></doc>
<method name='diff_namespaces'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xml_name' homogen-type='method'><doc><text><p>Returns the element name as it occurs in xml files. E.g.
 "zonk:name" for the element "name" defined in a namespace
 denoted with "zonk". It will look up a symbol for the namespace
 in the symbol tables for the node and its parents. If none is
 found a new label will be generated by hashing the namespace.</p>
</text></doc>
<method name='get_xml_name'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_child' homogen-type='method'><doc><text><p>The remove_child is a not updated to take care of name
 space issues. To properly remove all the parents name spaces
 from the chid, call <ref resolved='predef::Parser.XML.Tree.AbstractNode.remove_node'>remove_node</ref> in the child.</p>
</text></doc>
<method name='remove_child'>
<arguments><argument name='child'><type><object resolved='predef::Parser.XML.NSTree.NSNode'>NSNode</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='Tree'><doc>
</doc>
<inherit name='Tree'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/><classname resolved='predef::Parser.XML.Tree'>Parser.XML.Tree</classname></inherit>
</docgroup>
<docgroup homogen-name='parse_input' homogen-type='method'><doc><text><p>Takes a XML string <ref resolved='predef::Parser.XML.NSTree.parse_input.data'>data</ref> and produces a namespace node tree.
 If <ref resolved='predef::Parser.XML.NSTree.parse_input.default_ns'>default_ns</ref> is given, it will be used as the default namespace.</p>
</text><group><throws/><text><p>Throws an <ref resolved='predef::error'>error</ref> when an error is encountered during XML
   parsing.</p>
</text></group></doc>
<method name='parse_input'><source-position first-line='340' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='default_ns'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.XML.NSTree.NSNode'>NSNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='visualize' homogen-type='method'><doc><text><p>Makes a visualization of a node graph suitable for
 printing out on a terminal.</p>
</text><group><example/><text><p>&gt; object x = parse_input("&lt;a&gt;&lt;b&gt;&lt;c/&gt;d&lt;/b&gt;&lt;b&gt;&lt;e/&gt;&lt;f&gt;g&lt;/f&gt;&lt;/b&gt;&lt;/a&gt;");
   &gt; write(visualize(x));
   Node(ROOT)
     NSNode(ELEMENT,"a")
       NSNode(ELEMENT,"b")
         NSNode(ELEMENT,"c")
         NSNode(TEXT)
       NSNode(ELEMENT,"b")
         NSNode(ELEMENT,"e")
         NSNode(ELEMENT,"f")
           NSNode(TEXT)
   Result 1: 201</p>
</text></group></doc>
<method name='visualize'><source-position first-line='373' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/XML.pmod/NSTree.pmod'/>
<arguments><argument name='n'><type><object resolved='predef::Parser.XML.Tree.Node'>Node</object></type></argument><argument name='indent'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module><class name='Simple'><docgroup homogen-name='parse' homogen-type='method'><doc/>
<method name='parse'>
<arguments><argument name='xml'><type><string/></type></argument><argument name='cb'><type><function/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='define_entity_raw' homogen-type='method'><doc/>
<method name='define_entity_raw'>
<arguments><argument name='entity'><type><string/></type></argument><argument name='raw'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='define_entity' homogen-type='method'><doc/>
<method name='define_entity'>
<arguments><argument name='entity'><type><string/></type></argument><argument name='raw'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='allow_rxml_entities' homogen-type='method'><doc/>
<method name='allow_rxml_entities'>
<arguments><argument name='yes_no'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compat_allow_errors' homogen-type='method'><doc><text><p>Set whether the parser should allow certain errors for
 compatibility with earlier versions. <ref resolved='predef::Parser.XML.Simple.compat_allow_errors.version'>version</ref> can be:</p>
<string><group><value>"7.2"</value><text><p>Allow more data after the root element.</p>
</text></group><group><value>"7.6"</value><text><p>Allow multiple and invalidly placed "&lt;?xml ... ?&gt;" and
     "&lt;!DOCTYPE ... &gt;" declarations (invalid "&lt;?xml ... ?&gt;"
     declarations are otherwise treated as normal PI:s). Allow
     "&lt;![CDATA[ ... ]]&gt;" outside the root element. Allow the root
     element to be absent. This is the default in 7.6.</p>
</text></group></string><p><ref resolved='predef::Parser.XML.Simple.compat_allow_errors.version'>version</ref> can also be zero to enable all error checks.</p>
</text></doc>
<method name='compat_allow_errors'>
<arguments><argument name='version'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_dtd' homogen-type='method'><doc/>
<method name='parse_dtd'>
<arguments><argument name='dtd'><type><string/></type></argument><argument name='cb'><type><function/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='autoconvert' homogen-type='method'><doc/>
<method name='autoconvert'>
<arguments><argument name='xml'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class></module>





<class name='RCS'><doc><text><p>A RCS file parser that eats a RCS *,v file and presents nice pike
 data structures of its contents.</p>
</text></doc>

<class name='DeltatextIterator'><source-position first-line='316' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><doc><text><p>Iterator for the deltatext sections of the RCS file. Typical usage:</p>
</text><group><example/><text><p>string raw = Stdio.read_file(my_rcs_filename);
   Parser.RCS rcs = Parser.RCS(my_rcs_filename, 0);
   raw = rcs-&gt;parse_delta_sections(rcs-&gt;parse_admin_section(raw));
   foreach(rcs-&gt;DeltatextIterator(raw); int n; Parser.RCS.Revision rev)
     do_something(rev);</p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='deltatext_section'/><text><p>the deltatext section of the RCS file in its entirety</p>
</text></group><group><param name='progress_callback'/><text><p>This optional callback is invoked with the revision of the
   deltatext about to be parsed (useful for progress indicators).</p>
</text></group><group><param name='progress_callback_args'/><text><p>Optional extra trailing arguments to be sent to <ref resolved='predef::Parser.RCS.DeltatextIterator.create.progress_callback'>progress_callback</ref></p>
</text></group><group><seealso/><text><p>the <tt>rcsfile(5)</tt> manpage outlines the sections of an RCS file</p>
</text></group></doc>
<method name='create'><source-position first-line='334' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><modifiers><static/></modifiers>
<arguments><argument name='deltatext_section'><type><array/></type></argument><argument name='progress_callback'><type><or><void/><function><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></or></type></argument><argument name='progress_callback_args'><type><or><void/><array><valuetype><mixed/></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_next' homogen-type='method'><doc><text><p>Drops the leading whitespace before next revision's deltatext
 entry and sets this_rev to the revision number we're about to read.</p>
</text></doc>
<method name='read_next'><source-position first-line='356' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><modifiers><static/></modifiers>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='index' homogen-type='method'><doc><group><returns/><text><p>the number of deltatext entries processed so far (0..N-1, N
 being the total number of revisions in the rcs file)</p>
</text></group></doc>
<method name='index'><source-position first-line='365' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='value' homogen-type='method'><doc><group><returns/><text><p>the <ref resolved='predef::Parser.RCS.Revision'>Revision</ref> at whose deltatext data we are, updated with its info</p>
</text></group></doc>
<method name='value'><source-position first-line='372' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments/>
<returntype><object resolved='predef::Parser.RCS.Revision'>Revision</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc><group><returns/><text><p>1 if the iterator has processed all deltatext entries, 0 otherwise.</p>
</text></group></doc>
<method name='`!'><source-position first-line='379' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Advance <ref resolved='predef::Parser.RCS.DeltatextIterator.`+=.nsteps'>nsteps</ref> sections.</p>
</text><group><returns/><text><p>Returns the iterator object.</p>
</text></group></doc>
<method name='`+='><source-position first-line='388' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='nsteps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Parser.RCS.DeltatextIterator'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>like <expr><ref resolved='predef::Parser.RCS.DeltatextIterator.`+='>`+=</ref>(1)</expr>, but returns 0 if the iterator is finished</p>
</text></doc>
<method name='next'><source-position first-line='396' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='first' homogen-type='method'><doc><text><p>Restart not implemented; always returns 0 (==failed)</p>
</text></doc>
<method name='first'><source-position first-line='402' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_deltatext_section' homogen-type='method'><doc><text><p>Chops off the first deltatext section from the token array <ref resolved='predef::Parser.RCS.DeltatextIterator.parse_deltatext_section.raw'>raw</ref> and
 returns the rest of the string, or the value <expr>0</expr> (zero) if
 we had already visited the final deltatext entry. The deltatext's
 data is stored destructively in the appropriate entry of the
 <ref resolved='predef::Parser.RCS.revisions'>revisions</ref> array.</p>
</text><group><note/><text><p><ref resolved='predef::Parser.RCS.DeltatextIterator.parse_deltatext_section.raw'>raw</ref> must start with a deltatext entry for this method to work</p>
</text></group><group><fixme/><text><p>does not handle rcsfile(5) newphrase skipping</p>
</text></group><group><fixme/><text><p>if the rcs file is truncated, this method writes a descriptive
   error to stderr and then returns 0 - some nicer error handling
   wouldn't hurt</p>
</text></group></doc>
<method name='parse_deltatext_section'><source-position first-line='420' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><modifiers><static/></modifiers>
<arguments><argument name='raw'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<class name='Revision'><source-position first-line='672' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><doc><text><p>All data tied to a particular revision of the file.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='revision'><doc><text><p>the revision number (i e <ref resolved='predef::Parser.RCS'>RCS</ref>-&gt;revisions["1.1"]-&gt;revision == "1.1")</p>
</text></doc>
<variable name='revision'><source-position first-line='675' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='author'><doc><text><p>the name of the user that committed the revision</p>
</text></doc>
<variable name='author'><source-position first-line='678' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='branches'><doc><text><p>when there are branches from this revision, an array of the
 revision numbers where each branch starts, otherwise 0</p>
</text></doc>
<variable name='branches'><source-position first-line='682' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='state'><doc><text><p>the state of the revision - typically "Exp" or "dead"</p>
</text></doc>
<variable name='state'><source-position first-line='685' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='time'><doc><text><p>the (UTC) date and time when the revision was committed (second
 precision)</p>
</text></doc>
<variable name='time'><source-position first-line='689' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><object resolved='predef::Calendar.TimeRange'>Calendar.TimeRange</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='branch'><doc><text><p>the branch name on which this revision was committed (calculated
 according to how cvs manages branches)</p>
</text></doc>
<variable name='branch'><source-position first-line='693' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='rcs_next'><doc><text><p>the revision stored next in the rcs file, or 0 if none exists</p>
</text></doc>
<variable name='rcs_next'><source-position first-line='696' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='ancestor'><doc><text><p>the revision of the ancestor of this revision, or 0 if this was
 the initial revision</p>
</text></doc>
<variable name='ancestor'><source-position first-line='701' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='next'><doc><text><p>the revision that succeeds this revision, or 0 if none exists</p>
</text></doc>
<variable name='next'><source-position first-line='704' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='log'><doc><text><p>the log message associated with the revision</p>
</text></doc>
<variable name='log'><source-position first-line='707' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='lines'><doc><text><p>the number of lines this revision contained, altogether (not of
 particular interest for binary files)</p>
</text></doc>
<variable name='lines'><source-position first-line='711' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='added'><doc><text><p>the number of lines that were added from the previous revision
 to make this revision (for the initial revision too)</p>
</text></doc>
<variable name='added'><source-position first-line='715' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='removed'><doc><text><p>the number of lines that were removed from the previous revision
 to make this revision</p>
</text></doc>
<variable name='removed'><source-position first-line='719' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><int/></type></variable>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='_RCS'><doc>
</doc>
<inherit name='_RCS'><source-position first-line='2' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><classname>Parser._RCS</classname></inherit>
</docgroup>
<docgroup homogen-type='variable' homogen-name='head'><doc><text><p>Version number of the head version of the file</p>
</text></doc>
<variable name='head'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='branch'><doc><text><p>The default branch (or revision), if present, <expr>0</expr> otherwise</p>
</text></doc>
<variable name='branch'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><or><string/><int><min>0</min><max>0</max></int></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='access'><doc><text><p>The usernames listed in the ACCESS section of the RCS file</p>
</text></doc>
<variable name='access'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='comment'><doc><text><p>The RCS file comment if present, <expr>0</expr> otherwise</p>
</text></doc>
<variable name='comment'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><or><string/><int><min>0</min><max>0</max></int></or></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='expand'><doc><text><p>The keyword expansion options (as named by RCS) if present,
 <expr>0</expr> otherwise</p>
</text></doc>
<variable name='expand'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='description'><doc><text><p>The RCS file description</p>
</text></doc>
<variable name='description'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='locks'><doc><text><p>Maps from username to revision for users that have acquired locks
 on this file</p>
</text></doc>
<variable name='locks'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='strict_locks'><doc><text><p>1 if strict locking is set, 0 otherwise</p>
</text></doc>
<variable name='strict_locks'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><int><min>0</min><max>1</max></int></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='tags'><doc><text><p>Maps tag names (indices) to tagged revision numbers (values)</p>
</text></doc>
<variable name='tags'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='branches'><doc><text><p>Maps branch numbers (indices) to branch names (values)</p>
</text></doc>
<variable name='branches'><source-position first-line='45' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='revisions'><doc><text><p>Data for all revisions of the file. The indices of the mapping are
 the revision numbers, whereas the values are the data from the
 corresponding revision.</p>
</text></doc>
<variable name='revisions'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Parser.RCS.Revision'>Revision</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='trunk'><doc><text><p>Data for all revisions on the trunk, sorted in the same order as the
 RCS file stored them - ie descending, most recent first, I'd assume
 (rcsfile(5), of course, fails to state such irrelevant information).</p>
</text></doc>
<variable name='trunk'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/><type><array><valuetype><mapping/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes the RCS object.</p>
</text><group><param name='file_name'/><text><p>The path to the raw RCS file (includes trailing ",v"). Used
   mainly for error reporting (truncated RCS file).</p>
</text></group><group><param name='file_contents'/><text><p>If a string is provided, that string will be parsed to
   initialize the RCS object. If a zero (<expr>0</expr>) is sent, no
   initialization will be performed at all. If no value is given at
   all, but <ref resolved='predef::Parser.RCS.create.file_name'>file_name</ref> was provided, that file will be loaded and
   parsed for object initialization.</p>
</text></group></doc>
<method name='create'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='file_name'><type><or><string/><void/></or></type></argument><argument name='file_contents'><type><or><string/><int><min>0</min><max>0</max></int><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_admin_section' homogen-type='method'><doc><text><p>Lower-level API function for parsing only the admin section (the
 initial chunk of an RCS file, see manpage rcsfile(5)) of an RCS
 file. After running <ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>, the RCS object will be
 initialized with the values for <ref resolved='predef::Parser.RCS.head'>head</ref>, <ref resolved='predef::Parser.RCS.branch'>branch</ref>, <ref resolved='predef::Parser.RCS.access'>access</ref>,
 <ref resolved='predef::Parser.RCS.branches'>branches</ref>, <ref resolved='predef::Parser.RCS.tokenize'>tokenize</ref>, <ref resolved='predef::Parser.RCS.tags'>tags</ref>, <ref resolved='predef::Parser.RCS.locks'>locks</ref>, <ref resolved='predef::Parser.RCS.strict_locks'>strict_locks</ref>,
 <ref resolved='predef::Parser.RCS.comment'>comment</ref> and <ref resolved='predef::Parser.RCS.expand'>expand</ref>.</p>
</text><group><param name='raw'/><text><p>The tokenized RCS file, or the raw RCS-file data.</p>
</text></group><group><returns/><text><p>The rest of the RCS file, admin section removed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.RCS.parse_delta_sections'>parse_delta_sections</ref>, <ref resolved='predef::Parser.RCS.parse_deltatext_sections'>parse_deltatext_sections</ref>, <ref resolved='predef::Parser.RCS.parse'>parse</ref>, <ref resolved='predef::Parser.RCS.create'>create</ref></p>
</text></group><group><fixme/><text><p>Does not handle rcsfile(5) newphrase skipping.</p>
</text></group></doc>
<method name='parse_admin_section'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='raw'><type><or><string/><array/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_delta_sections' homogen-type='method'><doc><text><p>Lower-level API function for parsing only the delta sections (the
 second chunk of an RCS file, see manpage rcsfile(5)) of an RCS
 file. After running <ref resolved='predef::Parser.RCS.parse_delta_sections'>parse_delta_sections</ref>, the RCS object will
 be initialized with the value of <ref resolved='predef::Parser.RCS.description'>description</ref> and populated
 <ref resolved='predef::Parser.RCS.revisions'>revisions</ref> mapping and <ref resolved='predef::Parser.RCS.trunk'>trunk</ref> array. Their <ref resolved='predef::Parser.RCS.Revision'>Revision</ref> members
 are however only populated with the members <ref resolved='predef::Parser.RCS.Revision.revision'>Revision-&gt;revision</ref>,
 <ref resolved='predef::Parser.RCS.Revision.branch'>Revision-&gt;branch</ref>, <ref resolved='predef::Parser.RCS.Revision.time'>Revision-&gt;time</ref>, <ref resolved='predef::Parser.RCS.Revision.author'>Revision-&gt;author</ref>,
 <ref resolved='predef::Parser.RCS.Revision.state'>Revision-&gt;state</ref>, <ref resolved='predef::Parser.RCS.Revision.branches'>Revision-&gt;branches</ref>, <ref resolved='predef::Parser.RCS.Revision.rcs_next'>Revision-&gt;rcs_next</ref>,
 <ref resolved='predef::Parser.RCS.Revision.ancestor'>Revision-&gt;ancestor</ref> and <ref resolved='predef::Parser.RCS.Revision.next'>Revision-&gt;next</ref>.</p>
</text><group><param name='raw'/><text><p>The tokenized RCS file, with admin section removed. (See
   <ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>.)</p>
</text></group><group><returns/><text><p>The rest of the RCS file, delta sections removed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>, <ref resolved='predef::Parser.RCS.tokenize'>tokenize</ref>, <ref resolved='predef::Parser.RCS.parse_deltatext_sections'>parse_deltatext_sections</ref>,
   <ref resolved='predef::Parser.RCS.parse'>parse</ref>, <ref resolved='predef::Parser.RCS.create'>create</ref></p>
</text></group><group><fixme/><text><p>Does not handle rcsfile(5) newphrase skipping.</p>
</text></group></doc>
<method name='parse_delta_sections'><source-position first-line='198' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='raw'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tokenize' homogen-type='method'><doc><text><p>Tokenize an RCS file into tokens suitable as argument to the various
 parse functions</p>
</text><group><param name='data'/><text><p>The RCS file data</p>
</text></group><group><returns/><text><p>An array with arrays of tokens</p>
</text></group></doc>
<method name='tokenize'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_deltatext_sections' homogen-type='method'><doc><text><p>Lower-level API function for parsing only the deltatext sections
 (the final and typically largest chunk of an RCS file, see manpage
 rcsfile(5)) of an RCS file. After a <ref resolved='predef::Parser.RCS.parse_deltatext_sections'>parse_deltatext_sections</ref>
 run, the RCS object will be fully populated.</p>
</text><group><param name='raw'/><text><p>The tokenized RCS file, with admin and delta sections removed.
   (See <ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>, <ref resolved='predef::Parser.RCS.tokenize'>tokenize</ref> and <ref resolved='predef::Parser.RCS.parse_delta_sections'>parse_delta_sections</ref>.)</p>
</text></group><group><param name='progress_callback'/><text><p>This optional callback is invoked with the revision of the
   deltatext about to be parsed (useful for progress indicators).</p>
</text></group><group><param name='args'/><text><p>Optional extra trailing arguments to be sent to <ref resolved='predef::Parser.RCS.parse_deltatext_sections.progress_callback'>progress_callback</ref></p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>, <ref resolved='predef::Parser.RCS.parse_delta_sections'>parse_delta_sections</ref>, <ref resolved='predef::Parser.RCS.parse'>parse</ref>, <ref resolved='predef::Parser.RCS.create'>create</ref></p>
</text></group><group><fixme/><text><p>Does not handle rcsfile(5) newphrase skipping.</p>
</text></group></doc>
<method name='parse_deltatext_sections'><source-position first-line='299' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='raw'><type><array/></type></argument><argument name='progress_callback'><type><or><void/><function><argtype><string/></argtype><returntype><void/></returntype></function></or></type></argument><argument name='callback_args'><type><or><array/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse' homogen-type='method'><doc><text><p>Parse the RCS file <ref resolved='predef::Parser.RCS.parse.raw'>raw</ref> and initialize all members of this object
 fully initialized.</p>
</text><group><param name='raw'/><text><p>The unprocessed RCS file.</p>
</text></group><group><param name='progress_callback'/><text><p>Passed on to <ref resolved='predef::Parser.RCS.parse_deltatext_sections'>parse_deltatext_sections</ref>.</p>
</text></group><group><returns/><text><p>The fully initialized object (only returned for API convenience;
   the object itself is destructively modified to match the data
   extracted from <ref resolved='predef::Parser.RCS.parse.raw'>raw</ref>)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.RCS.parse_admin_section'>parse_admin_section</ref>, <ref resolved='predef::Parser.RCS.parse_delta_sections'>parse_delta_sections</ref>,
   <ref resolved='predef::Parser.RCS.parse_deltatext_sections'>parse_deltatext_sections</ref>, <ref resolved='predef::Parser.RCS.create'>create</ref></p>
</text></group></doc>
<method name='parse'><source-position first-line='496' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='raw'><type><array/></type></argument><argument name='progress_callback'><type><or><void/><function><argtype><string/></argtype><returntype><void/></returntype></function></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.RCS'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_contents_for_revision' homogen-type='method'><doc><text><p>Returns the file contents from the revision <ref resolved='predef::Parser.RCS.get_contents_for_revision.rev'>rev</ref>, without performing
 any keyword expansion.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.RCS.expand_keywords_for_revision'>expand_keywords_for_revision</ref></p>
</text></group></doc>
<method name='get_contents_for_revision'><source-position first-line='515' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='rev'><type><or><string/><object resolved='predef::Parser.RCS.Revision'>Revision</object></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='expand_keywords_for_revision' homogen-type='method'><doc><text><p>Expand keywords and return the resulting text according to the
 expansion rules set for the file.</p>
</text><group><param name='rev'/><text><p>The revision to apply the expansion for.</p>
</text></group><group><param name='text'/><text><p>If supplied, substitute keywords for that text instead using values that
   would apply for the given revision. Otherwise, revision <ref resolved='predef::Parser.RCS.expand_keywords_for_revision.rev'>rev</ref> is used.</p>
</text></group><group><param name='override_binary'/><text><p>If 1, perform expansion even if the file was checked in as binary.</p>
</text></group><group><note/><text><p>The Log keyword (which lacks sane quoting rules) is not
   expanded. Keyword expansion rules set in CVSROOT/cvswrappers
   are ignored. Only implements the -kkv and -kb expansion modes.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.RCS.get_contents_for_revision'>get_contents_for_revision</ref></p>
</text></group></doc>
<method name='expand_keywords_for_revision'><source-position first-line='615' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/RCS.pike'/>
<arguments><argument name='rev'><type><or><string/><object resolved='predef::Parser.RCS.Revision'>Revision</object></or></type></argument><argument name='text'><type><or><string/><void/></or></type></argument><argument name='override_binary'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<module name='Python'><docgroup homogen-name='split' homogen-type='method'><doc><text><p>Returns the provided string with Python code as
 an array with tokens.</p>
</text></doc>
<method name='split'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/Python.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module><docgroup homogen-name='get_xml_parser' homogen-type='method'><doc><text><p>Returns a <ref resolved='predef::Parser.HTML'>Parser.HTML</ref> initialized for parsing XML. It has all
 the flags set properly for XML syntax and callbacks to ignore
 comments, CDATA blocks and unknown PI tags, but it has no
 registered tags and doesn't decode any entities.</p>
</text></doc>
<method name='get_xml_parser'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/module.pmod'/>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_numeric_xml_entity' homogen-type='method'><doc><text><p>Decodes the numeric XML entity <ref resolved='predef::Parser.decode_numeric_xml_entity.chref'>chref</ref>, e.g. <tt>"&amp;#x34;"</tt> and
 returns the character as a string. <ref resolved='predef::Parser.decode_numeric_xml_entity.chref'>chref</ref> is the name part of
 the entity, i.e. without the leading '&amp;' and trailing ';'. Returns
 zero if <ref resolved='predef::Parser.decode_numeric_xml_entity.chref'>chref</ref> isn't on a recognized form or if the character
 number is too large to be represented in a string.</p>
</text></doc>
<method name='decode_numeric_xml_entity'><source-position first-line='317' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/module.pmod'/>
<arguments><argument name='chref'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Parse any HTML entities in the string to unicode characters.
	Either return a complete parser (to build on or use) or parse
	a string. Throw an error if there is an unrecognized entity in
	the string if noerror is not set.</p>
</text><group><note/><text><p>Currently using XHTML 1.0 tables.</p>
</text></group></doc>
<method name='html_entity_parser'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>HTML</object></returntype>
</method>
<method name='parse_html_entities'>
<arguments><argument name='in'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='html_entity_parser'>
<arguments><argument name='noerror'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>HTML</object></returntype>
</method>
<method name='parse_html_entities'>
<arguments><argument name='in'><type><string/></type></argument><argument name='noerror'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>


<module name='Pike'><doc><text><p>This module parses and tokenizes Pike source code.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/Pike.pmod'/><classname resolved='predef::Parser.C'>"C.pmod"</classname></inherit>
</docgroup>
<docgroup homogen-name='split' homogen-type='method'><doc><text><p>Splits the <ref resolved='predef::Parser.Pike.split.data'>data</ref> string into an array of tokens. An additional
 element with a newline will be added to the resulting array of
 tokens. If the optional argument <ref resolved='predef::Parser.Pike.split.state'>state</ref> is provided the split
 function is able to pause and resume splitting inside #"" and
 /**/ tokens. The <ref resolved='predef::Parser.Pike.split.state'>state</ref> argument should be an initially empty
 mapping, in which split will store its state between successive
 calls.</p>
</text></doc>
<method name='split'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/Pike.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='state'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='C'>

<class name='Token'><source-position first-line='256' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/><doc><text><p>Represents a C token, along with a selection of associated data and
 operations.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='line'><doc><text><p>The line where the token was found.</p>
</text></doc>
<variable name='line'><source-position first-line='259' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='text'><doc><text><p>The actual token.</p>
</text></doc>
<variable name='text'><source-position first-line='262' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='file'><doc><text><p>The file in which the token was found.</p>
</text></doc>
<variable name='file'><source-position first-line='265' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='trailing_whitespaces'><doc><text><p>Trailing whitespaces.</p>
</text></doc>
<variable name='trailing_whitespaces'><source-position first-line='268' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='text'><type><string/></type></argument><argument name='line'><type><or><void/><int/></or></type></argument><argument name='file'><type><or><void/><string/></or></type></argument><argument name='trailing_whitespace'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc><text><p>If the object is printed as %s it will only output its text contents.</p>
</text></doc>
<method name='_sprintf'><source-position first-line='281' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='how'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Tokens are considered equal if the text contents are equal. It
 is also possible to compare the Token object with a text string
 directly.</p>
</text></doc>
<method name='`=='><source-position first-line='295' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='foo'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>A string can be added to the Token, which will be added to the
 text contents.</p>
</text></doc>
<method name='`+'><source-position first-line='302' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='s'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='``+' homogen-type='method'><doc><text><p>A string can be added to the Token, which will be added to the
 text contents.</p>
</text></doc>
<method name='``+'><source-position first-line='309' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='s'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to case a Token object to a string. The text content
 will be returned.</p>
</text></doc>
<method name='cast'><source-position first-line='316' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Characters and ranges may be indexed from the text contents of the token.</p>
</text></doc>
<method name='`[]'><source-position first-line='322' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='a'><type><int/></type></argument><argument name='b'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><int/><string/></or></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='split' homogen-type='method'><doc><text><p>Splits the <ref resolved='predef::Parser.C.split.data'>data</ref> string into an array of tokens. An additional
 element with a newline will be added to the resulting array of
 tokens. If the optional argument <ref resolved='predef::Parser.C.split.state'>state</ref> is provided the split
 function is able to pause and resume splitting inside /**/ tokens.
 The <ref resolved='predef::Parser.C.split.state'>state</ref> argument should be an initially empty mapping, in
 which split will store its state between successive calls.</p>
</text></doc>
<method name='split'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='state'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='tokenize' homogen-type='method'><doc><text><p>Returns an array of <ref resolved='predef::Parser.C.Token'>Token</ref> objects given an array of string tokens.</p>
</text></doc>
<method name='tokenize'><source-position first-line='329' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='s'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='file'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Parser.C.Token'>Token</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='group' homogen-type='method'><doc><text><p>Fold sub blocks of an array of tokens into sub arrays,
 for grouping purposes.</p>
</text><group><param name='tokens'/><text><p>The token array to fold.</p>
</text></group><group><param name='groupings'/><text><p>Supplies the tokens marking the boundaries of blocks to fold.
   The indices of the mapping mark the start of a block, the
   corresponding values mark where the block ends. The sub arrays
   will start and end in these tokens. If no groupings mapping is
   provided, {}, () and [] are used as block boundaries.</p>
</text></group></doc>
<method name='group'><source-position first-line='359' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='tokens'><type><array><valuetype><or><string/><object resolved='predef::Parser.C.Token'>Token</object></or></valuetype></array></type></argument><argument name='groupings'><type><or><void/><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></or></type></argument></arguments>
<returntype><array><valuetype><or><object resolved='predef::Parser.C.Token'>Token</object><array/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='strip_line_statements' homogen-type='method'><doc><text><p>Strips off all (preprocessor) line statements from a token array.</p>
</text></doc>
<method name='strip_line_statements'><source-position first-line='400' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='tokens'><type><array><valuetype><or><object resolved='predef::Parser.C.Token'>Token</object><array/></or></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><or><object resolved='predef::Parser.C.Token'>Token</object><array/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_whitespaces' homogen-type='method'><doc><text><p>Folds all whitespace tokens into the previous token's trailing_whitespaces.</p>
</text></doc>
<method name='hide_whitespaces'><source-position first-line='417' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='tokens'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_reconstitute' homogen-type='method'><doc><text><p>Reconstitutes the token array into a plain string again; essentially
 reversing <ref resolved='predef::Parser.C.split'>split()</ref> and whichever of the <ref resolved='predef::Parser.C.tokenize'>tokenize</ref>, <ref resolved='predef::Parser.C.group'>group</ref> and
 <ref resolved='predef::Parser.C.hide_whitespaces'>hide_whitespaces</ref> methods may have been invoked.</p>
</text></doc>
<method name='simple_reconstitute'><source-position first-line='448' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='tokens'><type><array><valuetype><or><string/><object resolved='predef::Parser.C.Token'>Token</object><array/></or></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reconstitute_with_line_numbers' homogen-type='method'><doc><text><p>Like <ref resolved='predef::Parser.C.simple_reconstitute'>simple_reconstitute</ref>, but adding additional <tt>#line n "file"</tt>
 preprocessor statements in the output whereever a new line or
 file starts.</p>
</text></doc>
<method name='reconstitute_with_line_numbers'><source-position first-line='464' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/C.pmod'/>
<arguments><argument name='tokens'><type><array><valuetype><or><string/><object resolved='predef::Parser.C.Token'>Token</object><array/></or></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<class name='SGML'>

<class name='SGML'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><doc><text><p>This is a handy simple parser of SGML-like
	syntax like HTML. It doesn't do anything advanced,
	but finding the corresponding end-tags.</p>
<p>	It's used like this:</p>
<code><text><p>array res=Parser.SGML()-&gt;feed(string)-&gt;finish()-&gt;result();</p>
</text></code><p>The resulting structure is an array of atoms,
	where the atom can be a string or a tag.
	A tag contains a similar array, as data.</p>
</text><group><example/><text><p>A string
     <expr>"&lt;gat&gt;&amp;nbsp;&lt;gurka&gt;&amp;nbsp;&lt;/gurka&gt;&amp;nbsp;&lt;banan&gt;&amp;nbsp;&lt;kiwi&gt;&amp;nbsp;&lt;/gat&gt;"</expr>
     results in</p>
<code><text><p>({
    tag "gat" object with data:
    ({
        tag "gurka" object with data:
	({
            " "
        })
        tag "banan" object with data:
	({
            " "
            tag "kiwi" object with data:
	    ({
               " "
            })
        })
    })
})</p>
</text></code><p>ie, simple "tags" (not containers) are not detected,
	but containers are ended implicitely by a surrounding
	container _with_ an end tag.</p>
<p> 	The 'tag' is an object with the following variables:
	<pre>
	 string name;           - name of tag
	 mapping args;          - argument to tag
	 int line,char,column;  - position of tag
	 string file;           - filename (see &lt;ref&gt;create&lt;/ref&gt;)
	 array(SGMLatom) data;  - contained data
     </pre></p>
</text></group></doc>

<class name='SGMLatom'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><docgroup homogen-type='variable'><doc/>
<variable name='name'><source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><string/></type></variable>
<variable name='args'><source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><mapping/></type></variable>
<variable name='line'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><int/></type></variable>
<variable name='char'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><int/></type></variable>
<variable name='column'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><int/></type></variable>
<variable name='file'><source-position first-line='68' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><string/></type></variable>
<variable name='data'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><array><valuetype><object resolved='predef::Parser.SGML.SGML.SGMLatom'>SGMLatom</object></valuetype></array></type></variable>
</docgroup>
</class><docgroup homogen-type='variable' homogen-name='file'><doc/>
<variable name='file'><source-position first-line='59' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Parser.pmod/SGML.pike'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>This object is created with this filename.
	It's passed to all created tags, for debug and trace purposes.</p>
</text><group><note/><text><p>No, it doesn't read the file itself. See <ref resolved='predef::Parser.SGML.SGML.feed'>feed()</ref>.</p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Feed new data to the object, or finish the stream.
	No result can be used until <ref resolved='predef::Parser.SGML.SGML.feed'>finish()</ref> is called.</p>
<p> 	Both <ref resolved='predef::Parser.SGML.SGML.feed'>finish()</ref> and <ref resolved='predef::Parser.SGML.SGML.feed'>result()</ref> return the computed data.</p>
<p>	<ref resolved='predef::Parser.SGML.SGML.feed'>feed()</ref> returns the called object.</p>
</text></doc>
<method name='feed'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Parser.SGML.SGML.feed'/></returntype>
</method>
<method name='finish'>
<arguments/>
<returntype><array><valuetype><or><object resolved='predef::Parser.SGML.SGML.SGMLatom'>SGMLatom</object><string/></or></valuetype></array></returntype>
</method>
<method name='result'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><object resolved='predef::Parser.SGML.SGML.SGMLatom'>SGMLatom</object><string/></or></valuetype></array></returntype>
</method>
</docgroup>
</class></class>

<class name='HTML'><doc><text><p>This is a simple parser for SGML structured markups. It's not
 really HTML, but it's useful for that *! purpose.</p>
<p> The simple way to use it is to give it some information about
 available tags and containers, and what callbacks those is to
 call.</p>
<p> The object is easily reused, by calling the <ref resolved='predef::Parser.HTML.clone'>clone()</ref> function.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.HTML.add_tag'>add_tag</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_container</ref>, <ref resolved='predef::Parser.HTML.finish'>finish</ref></p>
</text></group></doc><docgroup homogen-type='method'><doc><text><p>These functions set up the parser object to call the given
 callbacks upon tags, entities and/or data. The callbacks will
 <i>only</i> be called if there isn't another tag/container/entity
 handler for these.</p>
<p> The callback function will be called with the parser object as
 first argument, and the active string as second. Note that no
 parsing of the contents has been done. Both endtags and normal
 tags are called; there is no container parsing.</p>
<p> The return values from the callbacks are handled in the same way
 as the return values from callbacks registered with <ref resolved='predef::Parser.HTML.add_tag'>add_tag</ref> and
 similar functions.</p>
<p> The data callback will be called as seldom as possible with the
 longest possible string, as long as it doesn't get called out of
 order with any other callback. It will never be called with a zero
 length string.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group></doc>
<method name='_set_tag_callback'>
<arguments><argument name='to_call'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='_set_entity_callback'>
<arguments><argument name='to_call'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='_set_data_callback'>
<arguments><argument name='to_call'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Registers the actions to take when parsing various things. Tags,
 containers, entities are as usual. <ref resolved='predef::Parser.HTML.add_tag'>add_quote_tag()</ref> adds a special
 kind of tag that reads any data until the next occurrence of the
 end string immediately before a tag end.</p>
</text><group><param name='to_do'/><text><p>This argument can be any of the following.</p>
<mixed><group><type><function/></type><text><p>The function will be called as a callback function. It will
       get the following arguments, depending on the type of
       callback.
	<pre>
 mixed tag_callback(Parser.HTML parser,mapping args,mixed ... extra)
 mixed container_callback(Parser.HTML parser,mapping args,string content,mixed ... extra)
 mixed entity_callback(Parser.HTML parser,mixed ... extra)
 mixed quote_tag_callback(Parser.HTML parser,string content,mixed ... extra)
	</pre></p>
</text></group><group><type><string/></type><text><p>This tag/container/entity is then replaced by the string.
       The string is normally not reparsed, i.e. it's equivalent to
       writing a function that returns the string in an array (but
       a lot faster). If <ref resolved='predef::Parser.HTML.reparse_strings'>reparse_strings</ref> is set the string will
       be reparsed, though.</p>
</text></group><group><type><array/></type><text><p>The first element is a function as above. It will receive
       the rest of the array as extra arguments. If extra arguments
       are given by <ref resolved='predef::Parser.HTML.set_extra'>set_extra()</ref>, they will appear after
       the ones in this array.</p>
</text></group><group><type><int><min>0</min><max/></int></type><text><p>If there is a tag/container/entity with the given name in
       the parser, it's removed.</p>
</text></group></mixed><p>The callback function can return:</p>
<mixed><group><type><string/></type><text><p>This string will be pushed on the parser stack and be
       parsed. Be careful not to return anything in this way that
       could lead to a infinite recursion.</p>
</text></group><group><type><array/></type><text><p>The element(s) of the array is the result of the function.
       This will not be parsed. This is useful for avoiding
       infinite recursion. The array can be of any size, this means
       the empty array is the most effective to return if you don't
       care about the result. If the parser is operating in
       <ref resolved='predef::Parser.HTML.mixed_mode'>mixed_mode</ref>, the array can contain anything. Otherwise
       only strings are allowed.</p>
</text></group><group><type><int><min>0</min><max>0</max></int></type><text><p>This means "don't do anything", ie the item that generated
       the callback is left as it is, and the parser continues.</p>
</text></group><group><type><int><min>1</min><max>1</max></int></type><text><p>Reparse the last item again. This is useful to parse a tag
       as a container, or vice versa: just add or remove callbacks
       for the tag and return this to jump to the right callback.</p>
</text></group></mixed>
</text></group><group><returns/><text><p>Returns the object being called.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.HTML.add_tag.tags'>tags</ref>, <ref resolved='predef::Parser.HTML.add_tag.containers'>containers</ref>, <ref resolved='predef::Parser.HTML.add_tag.entities'>entities</ref></p>
</text></group></doc>
<method name='add_tag'>
<arguments><argument name='name'><type><string/></type></argument><argument name='to_do'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_container'>
<arguments><argument name='name'><type><string/></type></argument><argument name='to_do'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_entity'>
<arguments><argument name='entity'><type><string/></type></argument><argument name='to_do'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_quote_tag'>
<arguments><argument name='name'><type><string/></type></argument><argument name='to_do'><type><mixed/></type></argument><argument name='end'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_tags'>
<arguments><argument name='tags'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_containers'>
<arguments><argument name='containers'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='add_entities'>
<arguments><argument name='entities'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Removes all registered definitions in the different categories.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.HTML.add_tag'>add_tag</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_tags</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_container</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_containers</ref>,
   <ref resolved='predef::Parser.HTML.add_tag'>add_entity</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_entities</ref></p>
</text></group></doc>
<method name='clear_tags'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='clear_containers'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='clear_entities'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='clear_quote_tags'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the current callback settings. When matching is done case
 insensitively, all names will be returned in lowercase.</p>
<p> Implementation note: These run in constant time since they return
 copy-on-write mappings.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.HTML.add_tag'>add_tag</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_tags</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_container</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_containers</ref>,
   <ref resolved='predef::Parser.HTML.add_tag'>add_entity</ref>, <ref resolved='predef::Parser.HTML.add_tag'>add_entities</ref></p>
</text></group></doc>
<method name='tags'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
<method name='containers'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
<method name='entities'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='quote_tags'><doc><text><p>Returns the current callback settings. The values are arrays
 ({callback, end_quote}). When matching is done case insensitively,
 all names will be returned in lowercase.</p>
<p> Implementation note: <ref resolved='predef::Parser.HTML.quote_tags'>quote_tags()</ref> allocates a new mapping for
 every call and thus, unlike e.g. <ref resolved='predef::Parser.HTML.tags'>tags()</ref> runs in linear time.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.HTML.add_tag'>add_quote_tag</ref></p>
</text></group></doc>
<method name='quote_tags'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><array><valuetype><or><mixed/><string/></or></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='feed'><doc><text><p>Feed new data to the <ref resolved='predef::Parser.HTML'>Parser.HTML</ref> object. This will start a scan
 and may result in callbacks. Note that it's possible that all data
 fed isn't processed - to do that, call <ref resolved='predef::Parser.HTML.finish'>finish()</ref>.</p>
<p> If the function is called without arguments, no data is fed, but
 the parser is run. If the string argument is followed by a
 <expr>0</expr>, <expr>-&gt;feed(s,0);</expr>, the string is fed, but the parser
 isn't run.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.HTML.finish'>finish</ref>, <ref resolved='predef::Parser.HTML.read'>read</ref>, <ref resolved='predef::Parser.HTML.feed_insert'>feed_insert</ref></p>
</text></group></doc>
<method name='feed'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='feed'>
<arguments><argument name='s'><type><string/></type></argument><argument name='do_parse'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='feed_insert'><doc><text><p>This pushes a string on the parser stack.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group><group><note/><text><p>Don't use!</p>
</text></group></doc>
<method name='feed_insert'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='finish'><doc><text><p>Finish a parser pass. A string may be sent here, similar to
 feed().</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group></doc>
<method name='finish'>
<arguments/>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
<method name='finish'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read'><doc><text><p>Read parsed data from the parser object.</p>
</text><group><returns/><text><p>Returns a string of parsed data if the parser isn't in
   <ref resolved='predef::Parser.HTML.mixed_mode'>mixed_mode</ref>, an array of arbitrary data otherwise.</p>
</text></group></doc>
<method name='read'>
<arguments/>
<returntype><or><string/><array><valuetype><mixed/></valuetype></array></or></returntype>
</method>
<method name='read'>
<arguments><argument name='max_elems'><type><int/></type></argument></arguments>
<returntype><or><string/><array><valuetype><mixed/></valuetype></array></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='write_out'><doc><text><p>Send data to the output stream, i.e. it won't be parsed and it
 won't be sent to the data callback, if any.</p>
<p> Any data is allowed when the parser is running in <ref resolved='predef::Parser.HTML.mixed_mode'>mixed_mode</ref>.
 Only strings are allowed otherwise.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group></doc>
<method name='write_out'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the current position. Characters and columns count from
 <expr>0</expr>, lines count from <expr>1</expr>.</p>
<p> <ref resolved='predef::Parser.HTML.at'>at()</ref> gives an array with the following layout.</p>
<array><group><elem><type><int/></type><index>0</index></elem><text><p>Line.</p>
</text></group><group><elem><type><int/></type><index>1</index></elem><text><p>Character.</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>Column.</p>
</text></group></array></text></doc>
<method name='at'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
<method name='at_line'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='at_char'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='at_column'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='current'><doc><text><p>Gives the current range of data, ie the whole tag/entity/etc being
 parsed in the current callback. Returns zero if there's no current
 range, i.e. when the function is not called in a callback.</p>
</text></doc>
<method name='current'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tag_name'><doc><text><p>Gives the name of the current tag, or zero. If used from an entity
 callback, it gives the string inside the entity.</p>
</text></doc>
<method name='tag_name'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tag_args'><doc><text><p>Gives the arguments of the current tag, parsed to a convenient
 mapping consisting of key:value pairs. If the current thing isn't
 a tag, it gives zero. <ref resolved='predef::Parser.HTML.tag_args.default_value'>default_value</ref> is used for arguments which
 have no value in the tag. If <ref resolved='predef::Parser.HTML.tag_args.default_value'>default_value</ref> isn't given, the
 value is set to the same string as the key.</p>
</text></doc>
<method name='tag_args'>
<arguments><argument name='default_value'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tag_content'><doc><text><p>Gives the content of the current tag, if it's a container or quote
 tag. Otherwise returns zero.</p>
</text></doc>
<method name='tag_content'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tag'><doc><text><p>Returns the equivalent of the following calls.</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p><expr>tag_name()</expr></p>
</text></group><group><elem><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type><index>1</index></elem><text><p><expr>tag_args(default_value)</expr></p>
</text></group><group><elem><type><string/></type><index>2</index></elem><text><p><expr>tag_content()</expr></p>
</text></group></array></text></doc>
<method name='tag'>
<arguments><argument name='default_value'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='context'><doc><text><p>Returns the current output context as a string.</p>
<string><group><value>"data"</value><text><p>In top level data. This is always returned when called from
     tag or container callbacks.</p>
</text></group><group><value>"arg"</value><text><p>In an unquoted argument.</p>
</text></group><group><value>"splice_arg"</value><text><p>In a splice argument.</p>
</text></group></string><p>The return value can also be a single character string, in which
 case the context is a quoted argument. The string contains the
 starting quote character.</p>
<p> This function is typically only useful in entity callbacks, which
 can be called both from text and argument values of different
 sorts.</p>
</text><group><seealso/><text><p><ref resolved='predef::Parser.HTML.splice_arg'>splice_arg</ref></p>
</text></group></doc>
<method name='context'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='parse_tag_name'><doc><text><p>Parses the tag name from a tag string without the surrounding
 brackets, i.e. a string on the form <expr>"tagname some='tag'
 args"</expr>.</p>
</text><group><returns/><text><p>Returns the tag name or an empty string if none.</p>
</text></group></doc>
<method name='parse_tag_name'>
<arguments><argument name='tag'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='parse_tag_args'><doc><text><p>Parses the tag arguments from a tag string without the name and
 surrounding brackets, i.e. a string on the form <expr>"some='tag'
 args"</expr>.</p>
</text><group><returns/><text><p>Returns a mapping containing the tag arguments.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Parser.HTML.tag_args'>tag_args</ref></p>
</text></group></doc>
<method name='parse_tag_args'>
<arguments><argument name='tag'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_inspect'><doc><text><p>This is a low-level way of debugging a parser. This gives a
 mapping of the internal state of the Parser.HTML object.</p>
<p> The format and contents of this mapping may change without further
 notice.</p>
</text></doc>
<method name='_inspect'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='clone'><doc><text><p>Clones the <ref resolved='predef::Parser.HTML'>Parser.HTML</ref> object. A new object of the same class
 is created, filled with the parse setup from the old object.</p>
<p> This is the simpliest way of flushing a parse feed/output.</p>
<p> The arguments to clone is sent to the new object, simplifying work
 for custom classes that inherits <ref resolved='predef::Parser.HTML'>Parser.HTML</ref>.</p>
</text><group><returns/><text><p>Returns the new object.</p>
</text></group><group><note/><text><p>create is called _before_ the setup is copied.</p>
</text></group></doc>
<method name='clone'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_extra'><doc><text><p>Sets the extra arguments passed to all tag, container and entity
 callbacks.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group></doc>
<method name='set_extra'>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Parser.HTML'>Parser.HTML</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_extra'><doc><text><p>Gets the extra arguments set by <ref resolved='predef::Parser.HTML.set_extra'>set_extra()</ref>.</p>
</text><group><returns/><text><p>Returns the object being called.</p>
</text></group></doc>
<method name='get_extra'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='splice_arg'><doc><text><p>If given a string, it sets the splice argument name to it. It
 returns the old splice argument name.</p>
<p> If a splice argument name is set, it's parsed in all tags, both
 those with callbacks and those without. Wherever it occurs, its
 value (after being parsed for entities in the normal way) is
 inserted directly into the tag. E.g:</p>
<p> <pre>&lt;foo arg1="val 1" splice="arg2='val 2' arg3" arg4&gt;</pre></p>
<p> becomes</p>
<p> <pre>&lt;foo arg1="val 1" arg2='val 2' arg3 arg4&gt;</pre></p>
<p> if <expr>"splice"</expr> is set as the splice argument name.</p>
</text></doc>
<method name='splice_arg'>
<arguments><argument name='name'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='case_insensitive_tag'><doc><text><p>All tags and containers are matched case insensitively, and
 argument names are converted to lowercase. Tags added with
 <ref resolved='predef::Parser.HTML.add_tag'>add_quote_tag()</ref> are not affected, though. Switching to case
 insensitive mode and back won't preserve the case of registered
 tags and containers.</p>
</text></doc>
<method name='case_insensitive_tag'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ignore_tags'><doc><text><p>Do not look for tags at all. Normally tags are matched even when
 there's no callbacks for them at all. When this is set, the tag
 delimiters <expr>'&lt;'</expr> and <expr>'&gt;'</expr> will be treated as any
 normal character.</p>
</text></doc>
<method name='ignore_tags'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ignore_unknown'><doc><text><p>Treat unknown tags and entities as text data, continuing parsing
 for tags and entities inside them.</p>
</text><group><note/><text><p>When functions are specified with <ref resolved='predef::Parser.HTML._set_tag_callback'>_set_tag_callback()</ref> or
   <ref resolved='predef::Parser.HTML._set_tag_callback'>_set_entity_callback()</ref>, all tags or entities, respectively,
   are considered known. However, if one of those functions return
   1 and ignore_unknown is set, they are treated as text data
   instead of making another call to the same function again.</p>
</text></group></doc>
<method name='ignore_unknown'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='lazy_argument_end'><doc><text><p>A <expr>'&gt;'</expr> in a tag argument closes both the argument and the
 tag, even if the argument is quoted.</p>
</text></doc>
<method name='lazy_argument_end'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='lazy_entity_end'><doc><text><p>Normally, the parser search indefinitely for the entity end
 character (i.e. <expr>';'</expr>). When this flag is set, the
 characters <expr>'&amp;'</expr>, <expr>'&lt;'</expr>, <expr>'&gt;'</expr>, <expr>'"'</expr>,
 <expr>'''</expr>, and any whitespace breaks the search for the entity
 end, and the entity text is then ignored, i.e. treated as
 data.</p>
</text></doc>
<method name='lazy_entity_end'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='match_tag'><doc><text><p>Unquoted nested tag starters and enders will be balanced when
 parsing tags. This is the default.</p>
</text></doc>
<method name='match_tag'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='max_parse_depth'><doc><text><p>Maximum recursion depth during parsing. Recursion occurs when a
 tag/container/entity/quote tag callback function returns a string
 to be reparsed. The default value is <expr>10</expr>.</p>
</text></doc>
<method name='max_parse_depth'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mixed_mode'><doc><text><p>Allow callbacks to return arbitrary data in the arrays, which will
 be concatenated in the output.</p>
</text></doc>
<method name='mixed_mode'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='reparse_strings'><doc><text><p>When a plain string is used as a tag/container/entity/quote tag
 callback, it's not reparsed if this flag is unset. Setting it
 causes all such strings to be reparsed.</p>
</text></doc>
<method name='reparse_strings'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ws_before_tag_name'><doc><text><p>Allow whitespace between the tag start character and the tag
 name.</p>
</text></doc>
<method name='ws_before_tag_name'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='xml_tag_syntax'><doc><text><p>Whether or not to use XML syntax to tell empty tags and container
 tags apart.</p>
<int><group><value>0</value><text><p>Use HTML syntax only. If there's a <expr>'/'</expr> last in a tag,
     it's just treated as any other argument.</p>
</text></group><group><value>1</value><text><p>Use HTML syntax, but ignore a <expr>'/'</expr> if it comes last in
     a tag. This is the default.</p>
</text></group><group><value>2</value><text><p>Use XML syntax, but when a tag that does not end with
     <expr>'/&gt;'</expr> is found which only got a non-container tag
     callback, treat it as a non-container (i.e. don't start to
     seek for the container end).</p>
</text></group><group><value>3</value><text><p>Use XML syntax only. If a tag got both container and
     non-container callbacks, the non-container callback is called
     when the empty element form (i.e. the one ending with
     <expr>'/&gt;'</expr>) is used, and the container callback otherwise.
     If only a container callback exists, it gets the empty string
     as content when there's none to be parsed. If only a
     non-container callback exists, it will be called (without the
     content argument) for both kinds of tags.</p>
</text></group></int></text></doc>
<method name='xml_tag_syntax'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='nestling_entity_end'><doc/>
<method name='nestling_entity_end'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ignore_comments'><doc/>
<method name='ignore_comments'>
<arguments><argument name='value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class></module>





















<module name='Locale'>

<module name='Language'>

<module name='srp'><doc><text><p>Serbian language locale by Goran Opacic 1996/12/11</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/srp.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='spa'><doc><text><p>Spanish language locale</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/spa.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='ita'><doc><text><p>Italian language locale by Francesco Chemolli</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/ita.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='rus'><doc><text><p>Russian language locale</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/rus.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='nld'><doc><text><p>Dutch language locale by Stephen R. van den Berg</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/nld.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='fin'><doc><text><p>Finnish language locale created by Janne Edelman, Turku Unix Users Group ry, Turku, Finland</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/fin.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='nor'><doc><text><p>Norwegian language locale</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/nor.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='hrv'><doc><text><p>Croatian language locale by  Klara Makovac 1997/07/02</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/hrv.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<class name='abstract'><doc><text><p>Abstract language locale class, inherited by all the language locale classes.</p>
</text></doc><docgroup homogen-type='constant' homogen-name='months'><doc><text><p>Array(string) with the months of the year, beginning with January.</p>
</text></doc>
<constant name='months'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='days'><doc><text><p>Array(string) with the days of the week, beginning with Sunday.</p>
</text></doc>
<constant name='days'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='iso_639_1'><doc><text><p>String with the language code in ISO-639-1 (two character code). Note that
 all languages does not have a ISO-639-1 code.</p>
</text></doc>
<constant name='iso_639_1'><source-position first-line='18' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/><modifiers><optional/></modifiers></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='iso_639_2'><doc><text><p>String with the language code in ISO-639-2/T (three character code).</p>
</text></doc>
<constant name='iso_639_2'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='iso_639_2B'><doc><text><p>String with the language code in ISO-639-2/B (three character code). This
 is usually the same as the ISO-639-2/T code (<ref resolved='predef::Locale.Language.abstract.iso_639_2'>iso_639_2</ref>).</p>
</text></doc>
<constant name='iso_639_2B'><source-position first-line='25' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='english_name'><doc><text><p>The name of the language in english.</p>
</text></doc>
<constant name='english_name'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='name'><doc><text><p>The name of the langauge. E.g. "svenska" for Swedish.</p>
</text></doc>
<constant name='name'><source-position first-line='31' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='languages'><doc><text><p>Mapping(string:string) that maps an ISO-639-2/T id code to the
 name of that language.</p>
</text></doc>
<constant name='languages'><source-position first-line='35' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/></constant>
</docgroup>
<docgroup homogen-name='month' homogen-type='method'><doc><text><p>Returns the name of month number <ref resolved='predef::Locale.Language.abstract.month.num'>num</ref>.</p>
</text></doc>
<method name='month'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/>
<arguments><argument name='num'><type><int><min>1</min><max>12</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='day' homogen-type='method'><doc><text><p>Returns the name of weekday number <ref resolved='predef::Locale.Language.abstract.day.num'>num</ref>.</p>
</text></doc>
<method name='day'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/>
<arguments><argument name='num'><type><int><min>1</min><max>7</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='number' homogen-type='method'><doc><text><p>Returns the number <ref resolved='predef::Locale.Language.abstract.number.i'>i</ref> as a string.</p>
</text></doc>
<method name='number'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ordered' homogen-type='method'><doc><text><p>Returns the ordered number <ref resolved='predef::Locale.Language.abstract.ordered.i'>i</ref> as a string.</p>
</text></doc>
<method name='ordered'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='date' homogen-type='method'><doc><text><p>Returns the date for posix time <ref resolved='predef::Locale.Language.abstract.date.timestamp'>timestamp</ref> as a textual string.</p>
</text><group><param name='mode'/><text><p>Determines what kind of textual string should be produced.</p>
<string><group><value>"time"</value><text><p>I.e. "06:36"</p>
</text></group><group><value>"date"</value><text><p>I.e. "January the 17th in the year of 2002"</p>
</text></group><group><value>"full"</value><text><p>I.e. "06:37, January the 17th, 2002"</p>
</text></group></string></text></group><group><example/><text><p>&gt; Locale.Language.eng()-&gt;date(time());
 Result: "today, 06:36"</p>
</text></group></doc>
<method name='date'><source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/abstract.pike'/>
<arguments><argument name='timestamp'><type><int/></type></argument><argument name='mode'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<module name='fra'><doc><text><p>French language locale by Patrick Kremer.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/fra.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='slv'><doc><text><p>Slovenian language locale by Iztok Umek 7. 8. 1997</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/slv.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='jpn'><doc><text><p>Japanese language locale.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/jpn.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='mri'><doc><text><p>Maaori (New Zealand) language locale by Jason Rumney</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/mri.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='ces'><doc><text><p>Czech language locale by Jan Petrous 16.10.1997,
 based on Slovenian language module by Iztok Umek.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/ces.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='eng'><doc><text><p>English language locale.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/eng.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='cat'><doc><text><p>Catalan language locale.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/cat.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='hun'><doc><text><p>Hungarian language locale by Zsolt Varga.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/hun.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='swe'><doc><text><p>Swedish language locale</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/swe.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='pol'><doc><text><p>Polish language locale by Piotr Klaban.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/pol.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='deu'><doc><text><p>German language locale by Tvns Böker.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/deu.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module>

<module name='por'><doc><text><p>Portuguese language locale</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/Language.pmod/por.pmod'/><classname resolved='predef::Locale.Language.abstract'>"abstract"</classname></inherit>
</docgroup>
</module></module>







































<doc><text><p>The functions and classes in the top level of the Locale
 module implements a dynamic localization system, suitable
 for programs that needs to change locale often. It is
 even possible for different threads to use different locales
 at the same time.</p>
<p> The highest level of the locale system is called projects.
 Usually one program consists of only one project, but for
 bigger applications, or highly modular applications it is
 possible for several projects to coexist.</p>
<p> Every project in turn contains several unique tokens, each
 one representing an entity that is different depending on
 the currently selected locale.</p>
</text><group><example/><text><p>// The following line tells the locale extractor what to
  // look for.
  // &lt;locale-token project="my_project"&gt;LOCALE&lt;/locale-token&gt;</p>
<p>  // The localization macro.
  #define LOCALE(X,Y) Locale.translate("my_project", \
    get_lang(), X, Y)</p>
<p>  string get_lang() { return random(2)?"eng":"swe"; }</p>
<p>  int(0..0) main() {
    write(LOCALE(0, "This is a line.")+"\n");
    write(LOCALE(0, "This is another one.\n");
    return 0;
  }</p>
</text></group></doc>

<class name='DeferredLocale'><source-position first-line='457' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/><doc><text><p>This class simulates a multi-language "string".
 The actual language to use is determined as late as possible.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='project'><modifiers><static/></modifiers><type><string/></type></variable>
<variable name='get_lang'><modifiers><static/></modifiers><type><function><returntype><string/></returntype></function></type></variable>
<variable name='key'><modifiers><static/></modifiers><type><or><string/><int/></or></type></variable>
<variable name='fallback'><modifiers><static/></modifiers><type><string/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='project'><type><string/></type></argument><argument name='get_lang'><type><function><returntype><string/></returntype></function></type></argument><argument name='key'><type><or><string/><int/></or></type></argument><argument name='fallback'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_identifier' homogen-type='method'><doc><text><p>Return the data nessesary to recreate this "string".</p>
</text></doc>
<method name='get_identifier'><source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='register_project' homogen-type='method'><doc><text><p>Make a connection between a project name and where its
 localization files can be found. The mapping from project
 name to locale file is stored in projects.</p>
</text></doc>
<method name='register_project'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='path'><type><string/></type></argument><argument name='path_base'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_project_path' homogen-type='method'><doc><text><p>In the event that a translation is requested in an
 unregistered project, this path will be used as the
 project path. %P will be replaced with the requested
 projects name.</p>
</text></doc>
<method name='set_default_project_path'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_languages' homogen-type='method'><doc><text><p>Returns a list of all registered languages for a specific project.</p>
</text></doc>
<method name='list_languages'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='project'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_objects' homogen-type='method'><doc><text><p>Reads in and returns a mapping with all the registred projects'  
 LocaleObjects in the language 'lang'</p>
</text></doc>
<method name='get_objects'><source-position first-line='365' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='lang'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Locale.get_objects'/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='translate' homogen-type='method'><doc><text><p>Returns a translation for the given id, or the fallback string</p>
</text></doc>
<method name='translate'><source-position first-line='376' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='project'><type><string/></type></argument><argument name='lang'><type><string/></type></argument><argument name='id'><type><or><string/><int/></or></type></argument><argument name='fallback'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call' homogen-type='method'><doc><text><p>Returns a localized function
 If function not found, tries fallback function fb,
 or fallback language fb instead</p>
</text></doc>
<method name='call'><source-position first-line='396' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Locale.pmod/module.pmod'/>
<arguments><argument name='project'><type><string/></type></argument><argument name='lang'><type><string/></type></argument><argument name='name'><type><string/></type></argument><argument name='fb'><type><or><void/><function/><string/></or></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>


<module name='Gettext'><doc><text><p>This module enables access to localization functions from within Pike.</p>
</text></doc><docgroup homogen-type='method' homogen-name='gettext'><doc><group><param name='msg'/><text><p>Message to be translated.</p>
</text></group><group><param name='domain'/><text><p>Domain from within the message should be translated.
   Defaults to the current domain.</p>
</text></group><group><param name='category'/><text><p>Category from which the translation should be taken.
   Defaults to <ref resolved='predef::Locale.Gettext.LC_MESSAGES'>Locale.Gettext.LC_MESSAGES</ref>.</p>
<p> Return a translated version of <ref resolved='predef::Locale.Gettext.gettext.msg'>msg</ref> within the context
 of the specified <ref resolved='predef::Locale.Gettext.gettext.domain'>domain</ref> and current locale. If there is no
 translation available, <ref resolved='predef::Locale.Gettext.gettext.msg'>msg</ref> is returned.</p>
</text></group><group><note/><text><p>Prior to Pike 7.3 this function only accepted one argument,
   and the other functionality was provided by <ref resolved='predef::Locale.Gettext.dgettext'>dgettext()</ref>
   and <ref resolved='predef::Locale.Gettext.dcgettext'>dcgettext()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='gettext'>
<arguments><argument name='msg'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='gettext'>
<arguments><argument name='msg'><type><string/></type></argument><argument name='domain'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='gettext'>
<arguments><argument name='msg'><type><string/></type></argument><argument name='domain'><type><string/></type></argument><argument name='category'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='dgettext'><doc><text><p>Return a translated version of <ref resolved='predef::Locale.Gettext.dgettext.msg'>msg</ref> within the context
 of the specified <ref resolved='predef::Locale.Gettext.dgettext.domain'>domain</ref> and current locale. If there is
 no translation available, <ref resolved='predef::Locale.Gettext.dgettext.msg'>msg</ref> is returned.</p>
</text><group><note/><text><p>Obsoleted by <ref resolved='predef::Locale.Gettext.gettext'>gettext()</ref> in Pike 7.3.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='dgettext'>
<arguments><argument name='domain'><type><string/></type></argument><argument name='msg'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='dcgettext'><doc><text><p>Return a translated version of <ref resolved='predef::Locale.Gettext.dcgettext.msg'>msg</ref> within the context of the
 specified <ref resolved='predef::Locale.Gettext.dcgettext.domain'>domain</ref> and current locale for the specified
 <ref resolved='predef::Locale.Gettext.dcgettext.category'>category</ref>. Calling dcgettext with category <ref resolved='predef::Locale.Gettext.LC_MESSAGES'>Locale.Gettext.LC_MESSAGES</ref>
 gives the same result as dgettext.</p>
<p> If there is no translation available, <ref resolved='predef::Locale.Gettext.dcgettext.msg'>msg</ref> is returned.</p>
</text><group><note/><text><p>Obsoleted by <ref resolved='predef::Locale.Gettext.gettext'>gettext()</ref> in Pike 7.3.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='dcgettext'>
<arguments><argument name='domain'><type><string/></type></argument><argument name='msg'><type><string/></type></argument><argument name='category'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='textdomain'><doc><text><p>The textdomain() function sets or queries the name of the
 current domain of the active <ref resolved='predef::Locale.Gettext.LC_MESSAGES'>LC_MESSAGES</ref> locale category. The
 <ref resolved='predef::Locale.Gettext.textdomain.domain'>domain</ref> argument is a string that can contain only the
 characters allowed in legal filenames.</p>
<p> The domain argument is the unique name of a domain on the
 system. If there are multiple versions of the same domain on
 one system, namespace collisions can be avoided by using
 <ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain()</ref>. If textdomain() is not called, a default
 domain is selected. The setting of domain made by the last
 valid call to textdomain() remains valid across subsequent
 calls to <ref resolved='predef::Locale.Gettext.setlocale'>setlocale()</ref>, and <ref resolved='predef::Locale.Gettext.gettext'>gettext()</ref>.</p>
</text><group><returns/><text><p>The normal return value from textdomain() is a string
   containing the current setting of the domain. If domainname is
   void, textdomain() returns a string containing the current
   domain. If textdomain() was not previously called and
   domainname is void, the name of the default domain is
   returned.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='textdomain'>
<arguments><argument name='domain'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='bindtextdomain'><doc><text><p>Binds the path predicate for a message <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> domainname to
 the directory name specified by <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref>. If <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> is a
 non-empty string and has not been bound previously, bindtextdomain()
 binds <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> with <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref>. </p>
<p> If <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> is a non-empty string and has been bound previously,
 bindtextdomain() replaces the old binding with <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref>. The <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref>
 argument can be an absolute or relative pathname being resolved when
 <ref resolved='predef::Locale.Gettext.gettext'>gettext()</ref>, <ref resolved='predef::Locale.Gettext.dgettext'>dgettext()</ref> or <ref resolved='predef::Locale.Gettext.dcgettext'>dcgettext()</ref> are called. If <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref>
 is zero or an empty string, <ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain()</ref> returns 0.</p>
<p> User defined domain names cannot begin with the string <expr>"SYS_"</expr>.
 Domain names beginning with this string are reserved for system use.</p>
</text><group><returns/><text><p>The return value from <ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain()</ref> is a string containing
   <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref> or the directory binding associated with <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> if
   <ref resolved='predef::Locale.Gettext.bindtextdomain.dirname'>dirname</ref> is unspecified. If no binding is found, the default locale
   path is returned. If <ref resolved='predef::Locale.Gettext.bindtextdomain.domainname'>domainname</ref> is unspecified or is an empty string,
   <ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain()</ref> takes no action and returns a 0.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='bindtextdomain'>
<arguments><argument name='domainname'><type><or><string/><void/></or></type></argument><argument name='dirname'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setlocale'><doc><text><p>The setlocale() function is used to set the program's
 current locale. If <ref resolved='predef::Locale.Gettext.setlocale.locale'>locale</ref> is "C" or "POSIX", the current
 locale is set to the portable locale.</p>
<p> If <ref resolved='predef::Locale.Gettext.setlocale.locale'>locale</ref> is "", the locale is set to the default locale which
 is selected from the environment variable LANG.</p>
<p> The argument <ref resolved='predef::Locale.Gettext.setlocale.category'>category</ref> determines which functions are
 influenced by the new locale are <ref resolved='predef::Locale.Gettext.LC_ALL'>LC_ALL</ref>, <ref resolved='predef::Locale.Gettext.LC_COLLATE'>LC_COLLATE</ref>, <ref resolved='predef::Locale.Gettext.LC_CTYPE'>LC_CTYPE</ref>,
 <ref resolved='predef::Locale.Gettext.LC_MONETARY'>LC_MONETARY</ref>, <ref resolved='predef::Locale.Gettext.LC_NUMERIC'>LC_NUMERIC</ref> and <ref resolved='predef::Locale.Gettext.LC_TIME'>LC_TIME</ref>.</p>
</text><group><returns/><text><p>Returns 1 if the locale setting successed, 0 for failure</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.dgettext'>dgettext</ref>, <ref resolved='predef::Locale.Gettext.dcgettext'>dcgettext</ref>, <ref resolved='predef::Locale.Gettext.localeconv'>localeconv</ref></p>
</text></group></doc>
<method name='setlocale'>
<arguments><argument name='category'><type><int/></type></argument><argument name='locale'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='localeconv'><doc><text><p>The localeconv() function returns a mapping with settings for
 the current locale. This mapping contains all values
 associated with the locale categories <ref resolved='predef::Locale.Gettext.LC_NUMERIC'>LC_NUMERIC</ref> and
 <ref resolved='predef::Locale.Gettext.LC_MONETARY'>LC_MONETARY</ref>.</p>
<mapping><group><member><type><string/></type><index>"decimal_point"</index></member><text><p>The decimal-point character used to format
     non-monetary quantities.</p>
</text></group><group><member><type><string/></type><index>"thousands_sep"</index></member><text><p>The character used to separate groups of digits to
     the left of the decimal-point character in
 	formatted non-monetary quantities.</p>
</text></group><group><member><type><string/></type><index>"int_curr_symbol"</index></member><text><p>The international currency symbol applicable to
     the current locale, left-justified within a
     four-character space-padded field. The character
     sequences should match with those specified in ISO
     4217 Codes for the Representation of Currency and
     Funds.</p>
</text></group><group><member><type><string/></type><index>"currency_symbol"</index></member><text><p>The local currency symbol applicable to the
     current locale.</p>
</text></group><group><member><type><string/></type><index>"mon_decimal_point"</index></member><text><p>The decimal point used to format monetary quantities.</p>
</text></group><group><member><type><string/></type><index>"mon_thousands_sep"</index></member><text><p>The separator for groups of digits to the left of
     the decimal point in formatted monetary quantities.</p>
</text></group><group><member><type><string/></type><index>"positive_sign"</index></member><text><p>The string used to indicate a non-negative-valued
     formatted monetary quantity.</p>
</text></group><group><member><type><string/></type><index>"negative_sign"</index></member><text><p>The string used to indicate a negative-valued
     formatted monetary quantity.</p>
</text></group><group><member><type><int/></type><index>"int_frac_digits"</index></member><text><p>The number of fractional digits (those to the
     right of the decimal point) to be displayed in an
     internationally formatted monetary quantity.</p>
</text></group><group><member><type><int/></type><index>"frac_digits"</index></member><text><p>The number of fractional digits (those  to  the
     right of the decimal point) to be displayed in a
     formatted monetary quantity.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"p_cs_precedes"</index></member><text><p>Set to 1 or 0 if the currency_symbol respectively
     precedes or succeeds the value for a non-negative
     formatted monetary quantity.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"p_sep_by_space"</index></member><text><p>Set to 1 or 0 if the currency_symbol respectively
     is or is not separated by a space from the value
     for a non-negative formatted monetary quantity.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"n_cs_precedes"</index></member><text><p>Set to 1 or 0 if the currency_symbol respectively
     precedes or succeeds the value for a negative
     formatted monetary quantity.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"n_sep_by_space"</index></member><text><p>Set to 1 or 0 if the currency_symbol respectively
     is or is not separated by a space from the value
     for a negative formatted monetary quantity.</p>
</text></group><group><member><type><int><min>0</min><max>4</max></int></type><index>"p_sign_posn"</index></member><text><p>Set to a value indicating the positioning of the
     positive_sign for a non-negative formatted
     monetary quantity. The value of p_sign_posn is
     interpreted according to the following:</p>
<int><group><value>0</value><text><p>Parentheses surround the quantity and currency_symbol.</p>
</text></group><group><value>1</value><text><p>The sign string precedes the quantity and currency_symbol.</p>
</text></group><group><value>2</value><text><p>The sign string succeeds the quantity and currency_symbol.</p>
</text></group><group><value>3</value><text><p>The sign string immediately precedes the currency_symbol.</p>
</text></group><group><value>4</value><text><p>The sign string immediately succeeds the currency_symbol.</p>
</text></group></int>
</text></group><group><member><type><int/></type><index>"n_sign_posn"</index></member><text><p>Set to a value indicating the positioning of the
     negative_sign for a negative formatted monetary
     quantity. The value of n_sign_posn is interpreted
     according to the rules described under p_sign_posn.</p>
</text></group></mapping>
</text><group><seealso/><text><p><ref resolved='predef::Locale.Gettext.bindtextdomain'>bindtextdomain</ref>, <ref resolved='predef::Locale.Gettext.textdomain'>textdomain</ref>, <ref resolved='predef::Locale.Gettext.gettext'>gettext</ref>, <ref resolved='predef::Locale.Gettext.dgettext'>dgettext</ref>, <ref resolved='predef::Locale.Gettext.dcgettext'>dcgettext</ref>, <ref resolved='predef::Locale.Gettext.setlocale'>setlocale</ref></p>
</text></group></doc>
<method name='localeconv'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_ALL'><doc><text><p>Locale category for all of the locale.</p>
</text></doc>
<constant name='LC_ALL'><source-position first-line='427' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_COLLATE'><doc><text><p>Locale category for the functions strcoll() and
 strxfrm() (used by pike, but not directly accessible).</p>
</text></doc>
<constant name='LC_COLLATE'><source-position first-line='432' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_CTYPE'><doc><text><p>Locale category for the character classification and
 conversion routines.</p>
</text></doc>
<constant name='LC_CTYPE'><source-position first-line='438' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_MESSAGES'><doc><group><fixme/><text><p>Document this constant.</p>
</text></group><group><note/><text><p>This category isn't available on all platforms.</p>
</text></group></doc>
<constant name='LC_MESSAGES'><source-position first-line='444' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_MONETARY'><doc><text><p>Locale category for localeconv().</p>
</text></doc>
<constant name='LC_MONETARY'><source-position first-line='452' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_NUMERIC'><doc><text><p>Locale category for the decimal character.</p>
</text></doc>
<constant name='LC_NUMERIC'><source-position first-line='457' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='LC_TIME'><doc><text><p>Locale category for strftime() (currently not accessible
 from Pike).</p>
</text></doc>
<constant name='LC_TIME'><source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gettext/gettext.c'/></constant>
</docgroup>
</module><module name='Charset'><doc><text><p>The Charset module supports a wide variety of different character sets, and
 it is flexible in regard of the names of character sets it accepts. The
 character case is ignored, as are the most common non-alaphanumeric
 characters appearing in character set names. E.g. <expr>"iso-8859-1"</expr>
 works just as well as <expr>"ISO_8859_1"</expr>. All encodings specified in
 RFC 1345 are supported.</p>
<p> First of all the Charset module is capable of handling the following
 encodings of Unicode:</p>
<ul><group><item name='utf7'/><item name='utf8'/><item name='utf16'/><item name='utf16be'/><item name='utf16le'/><item name='utf75'/><item name='utf7½'/><text><p>UTF encodings</p>
</text></group><group><item name='shiftjis'/><item name='euc-kr'/><item name='euc-cn'/><item name='euc-jp'/></group></ul><p>Most, if not all, of the relevant code pages are represented, as the
 following list shows. Prefix the numbers as noted in the list to get
 the wanted codec:</p>
<ul><group><item name='037'/><item name='038'/><item name='273'/><item name='274'/><item name='275'/><item name='277'/><item name='278'/><item name='280'/><item name='281'/><item name='284'/><item name='285'/><item name='290'/><item name='297'/><item name='367'/><item name='420'/><item name='423'/><item name='424'/><item name='437'/><item name='500'/><item name='819'/><item name='850'/><item name='851'/><item name='852'/><item name='855'/><item name='857'/><item name='860'/><item name='861'/><item name='862'/><item name='863'/><item name='864'/><item name='865'/><item name='866'/><item name='868'/><item name='869'/><item name='870'/><item name='871'/><item name='880'/><item name='891'/><item name='903'/><item name='904'/><item name='905'/><item name='918'/><item name='950'/><item name='1026'/><text><p>These may be prefixed with <expr>"cp"</expr> or <expr>"ibm"</expr>.</p>
</text></group><group><item name='1250'/><item name='1251'/><item name='1252'/><item name='1253'/><item name='1254'/><item name='1255'/><item name='1256'/><item name='1257'/><item name='1258'/><text><p>These may be prefixed with <expr>"cp"</expr>, <expr>"ibm"</expr> or
     <expr>"windows"</expr>.</p>
</text></group></ul><p>+359 more.</p>
</text></doc>

<class name='Decoder'><source-position first-line='105' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/><doc><text><p>Virtual base class for charset decoders.</p>
</text><group><example/><text><p>string win1252_to_string( string data )
   {
     return Locale.Charset.decoder("windows-1252")-&gt;feed( data )-&gt;drain();
   }</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='feed'><doc><text><p>Feeds a string to the decoder.</p>
</text><group><param name='s'/><text><p>String to be decoded.</p>
</text></group><group><returns/><text><p>Returns the current object, to allow for chaining
   of calls.</p>
</text></group></doc>
<method name='feed'><source-position first-line='115' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Locale.Charset.Decoder'>this_program</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='drain'><doc><text><p>Get the decoded data, and reset buffers.</p>
</text><group><returns/><text><p>Returns the decoded string.</p>
</text></group></doc>
<method name='drain'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='clear'><doc><text><p>Clear buffers, and reset all state.</p>
</text><group><returns/><text><p>Returns the current object to allow for chaining
   of calls.</p>
</text></group></doc>
<method name='clear'><source-position first-line='128' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments/>
<returntype><object resolved='predef::Locale.Charset.Decoder'>this_program</object></returntype>
</method>
</docgroup>
</class>

<class name='Encoder'><source-position first-line='132' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/><doc><text><p>Virtual base class for charset encoders.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Decoder'><doc><text><p>An encoder only differs from a decoder in that it has an extra function.</p>
</text></doc>
<inherit name='Decoder'><source-position first-line='135' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/><classname resolved='predef::Locale.Charset.Decoder'>Decoder</classname></inherit>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_replacement_callback'><doc><text><p>Change the replacement callback function.</p>
</text><group><param name='rc'/><text><p>Function that is called to encode characters
   outside the current character encoding.</p>
</text></group></doc>
<method name='set_replacement_callback'><source-position first-line='142' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='rc'><type><function><argtype><string/></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='decoder'><doc><text><p>Returns a charset decoder object.</p>
</text><group><param name='name'/><text><p>The name of the character set to decode from. Supported charsets
   include (not all supported charsets are enumerable):
   "iso_8859-1:1987", "iso_8859-1:1998", "iso-8859-1", "iso-ir-100",
   "latin1", "l1", "ansi_x3.4-1968", "iso_646.irv:1991", "iso646-us",
   "iso-ir-6", "us", "us-ascii", "ascii", "cp367", "ibm367", "cp819",
   "ibm819", "iso-2022" (of various kinds), "utf-7", "utf-8" and
   various encodings as described by RFC1345.</p>
</text></group><group><throws/><text><p>If the asked-for <ref resolved='predef::Locale.Charset.decoder.name'>name</ref> was not supported, an error is thrown.</p>
</text></group></doc>
<method name='decoder'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Locale.Charset.Decoder'>Decoder</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='encoder'><doc><text><p>Returns a charset encoder object.</p>
</text><group><param name='name'/><text><p>The name of the character set to encode to. Supported charsets
   include (not all supported charsets are enumerable):
   "iso_8859-1:1987", "iso_8859-1:1998", "iso-8859-1", "iso-ir-100",
   "latin1", "l1", "ansi_x3.4-1968", "iso_646.irv:1991", "iso646-us",
   "iso-ir-6", "us", "us-ascii", "ascii", "cp367", "ibm367", "cp819",
   "ibm819", "iso-2022" (of various kinds), "utf-7", "utf-8" and
   various encodings as described by RFC1345.</p>
</text></group><group><param name='replacement'/><text><p>The string to use for characters that cannot be represented in
   the charset. It's used when <ref resolved='predef::Locale.Charset.encoder.repcb'>repcb</ref> is not given or when it returns
   zero. If no replacement string is given then an error is thrown
   instead.</p>
</text></group><group><param name='repcb'/><text><p>A function to call for every character that cannot be
   represented in the charset. If specified it's called with one
   argument - a string containing the character in question. If it
   returns a string then that one will replace the character in the
   output. If it returns something else then the <ref resolved='predef::Locale.Charset.encoder.replacement'>replacement</ref>
   argument will be used to decide what to do.</p>
</text></group><group><throws/><text><p>If the asked-for <ref resolved='predef::Locale.Charset.encoder.name'>name</ref> was not supported, an error is thrown.</p>
</text></group></doc>
<method name='encoder'><source-position first-line='389' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='replacement'><type><or><string/><void/></or></type></argument><argument name='repcb'><type><or><function><argtype><string/></argtype><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Locale.Charset.Encoder'>Encoder</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decoder_from_mib'><doc><text><p>Returns a decoder for the encoding schema denoted by MIB <ref resolved='predef::Locale.Charset.decoder_from_mib.mib'>mib</ref>.</p>
</text></doc>
<method name='decoder_from_mib'><source-position first-line='690' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='mib'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Locale.Charset.Decoder'>Decoder</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='encoder_from_mib'><doc><text><p>Returns an encoder for the encoding schema denoted by MIB <ref resolved='predef::Locale.Charset.encoder_from_mib.mib'>mib</ref>.</p>
</text></doc>
<method name='encoder_from_mib'><source-position first-line='697' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Charset/module.pmod.in'/>
<arguments><argument name='mib'><type><int/></type></argument><argument name='replacement'><type><or><string/><void/></or></type></argument><argument name='repcb'><type><or><function><argtype><string/></argtype><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Locale.Charset.Encoder'>Encoder</object></returntype>
</method>
</docgroup>
</module></module>











































<module name='Calendar_I'><doc><text><p>This module exist only for backwards compatibility issues with
   earlier Pike releases. Use the Calendar module instead.</p>
<p>   This code can be used to simulate the old calendar
   for now (it might be removed in later Pike's):</p>
<p>    This module has been totally rewritten in Pike 7.1+. 
    To be forward compatible the lazy way, you can do
    something like this, though:</p>
<code><text><p>#if constant(Calendar.II)
   #define Calendar Calendar_I
   #endif
   <i>...</i> import Calendar <i>or whatever ...</i></p>
</text></code><p>This module implements calendar calculations, and base classes
   for time units.</p>
</text></doc>

<class name='_TimeUnit'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/module.pmod'/><doc><text><p>Base class for units of time.</p>
</text></doc><docgroup homogen-name='lesser' homogen-type='method'><doc><text><p>Gives a list of methods to get lesser (shorter) time units.
	ie, for a month, this gives back <expr>({"day"})</expr>
	and the method <expr>day(mixed n)</expr> gives back that 
	day object. The method <expr>days()</expr> gives back a
	list of possible argument values to the method <expr>day</expr>.
	Concurrently, <expr>Array.map(o-&gt;days(),o-&gt;day)</expr> gives
	a list of day objects in the object <expr>o</expr>.</p>
<p>	Ie:<pre>
	  array(string) lesser()    - gives back a list of possible xxx's.
	  object xxxs()             - gives back a list of possible n's.
	  object xxx(mixed n)       - gives back xxx n
	  object xxx(object(Xxx) o) - gives back the corresponing xxx 
	</pre></p>
<p>	The list of n's (as returned from xxxs) are always in order.</p>
<p>	There are two n's with special meaning, 0 and -1.
	0 always gives the first xxx, equal to 
	<expr>my_obj-&gt;xxx(my_obj-&gt;xxxs()[0])</expr>, and -1 gives the last,
	equal to <expr>my_obj-&gt;xxx(my_obj-&gt;xxxs()[-1])</expr>.</p>
<p>	To get all xxxs in the object, do something like
	<expr>Array.map(my_obj-&gt;xxxs(),my_obj-&gt;xxx)</expr>.</p>
<p>	xxx(object) may return zero, if there was no correspondning xxx.</p>
</text></doc>
<method name='lesser'><source-position first-line='56' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='greater' homogen-type='method'><doc><text><p>Gives a list of methods to get greater (longer) time units 
	from this object. For a month, this gives back <expr>({"year"})</expr>,
	thus the method <expr>month-&gt;year()</expr> gives the year object.</p>
</text></doc>
<method name='greater'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p><ref resolved='predef::Calendar_I._TimeUnit.next'>next()</ref> and <ref resolved='predef::Calendar_I._TimeUnit.next'>prev()</ref> give the logical next and previous object.
	The <ref resolved='predef::Calendar_I._TimeUnit.next'>`+()</ref> operator gives that logical relative object,
	ie <expr>my_day+14</expr> gives 14 days ahead.
     <ref resolved='predef::Calendar_I._TimeUnit.next'>`-()</ref> works the same way, but can also take an object
	of the same type and give the difference as an integer.</p>
</text></doc>
<method name='next'>
<arguments/>
<returntype><object resolved='predef::Calendar_I._TimeUnit.next'/></returntype>
</method>
<method name='prev'>
<arguments/>
<returntype><object resolved='predef::Calendar_I._TimeUnit.next'/></returntype>
</method>
<method name='`+'>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Calendar_I._TimeUnit.next'/></returntype>
</method>
<method name='`-'>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Calendar_I._TimeUnit.next'/></returntype>
</method>
<method name='`-'>
<arguments><argument name='x'><type><object resolved='predef::Calendar_I._TimeUnit.next'/></type></argument></arguments>
<returntype><object resolved='predef::Calendar_I._TimeUnit.next'/></returntype>
</method>
</docgroup>
</class>

<module name='Gregorian'><doc><text><p>time units:
	<ref resolved='predef::Calendar_I.Gregorian.Year'>Year</ref>, <ref>Month</ref>, <ref>Week</ref>, <ref>Day</ref></p>
</text></doc>

<class name='Year'><source-position first-line='41' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Gregorian.pmod'/><doc><text><p>A <ref>Calendar_I.time_unit</ref></p>
<p>	Lesser units: <ref>Month</ref>, <ref>Week</ref>, <ref>Day</ref>
	Greater units: none</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='_TimeUnit'><doc>
</doc>
<inherit name='_TimeUnit'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Gregorian.pmod'/><classname resolved='predef::Calendar_I._TimeUnit'>_TimeUnit</classname></inherit>
</docgroup>
</class><docgroup homogen-name='parse' homogen-type='method'><doc><text><p>Parse a date, create relevant object
	fmt is in the format "abc%xdef..."
	where abc and def is matched, and %x is
	one of those time units:
	%Y absolute year 
	%y year (70-99 is 1970-1999, 0-69 is 2000-2069)
	%M month (number, name or short name) (needs %y)
	%W week (needs %y)
	%D date (needs %y, %m)
	%a day (needs %y)
	%e weekday (needs %y, %w)
	%h hour (needs %d, %D or %W)
	%m minute (needs %h)
	%s second (needs %s)</p>
</text></doc>
<method name='parse'>
<arguments><argument name='fmt'><type><string/></type></argument><argument name='arg'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Calendar_I.Gregorian.parse'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime' homogen-type='method'><doc><text><p>Replacement for localtime.</p>
</text></doc>
<method name='datetime'><source-position first-line='1488' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument><argument name='skip_extra'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime_name' homogen-type='method'><doc><text><p>Replacement for ctime.</p>
</text></doc>
<method name='datetime_name'><source-position first-line='1511' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime_short_name' homogen-type='method'><doc><text><p>Replacement for ctime.</p>
</text></doc>
<method name='datetime_short_name'><source-position first-line='1524' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='Stardate'><doc><text><p>time unit: TNGDate</p>
</text></doc>

<class name='TNGDate'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Stardate.pmod'/><doc><text><p>Implements ST:TNG stardates.
	Can be used as create argument to Day.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='_TimeUnit'><doc>
</doc>
<inherit name='_TimeUnit'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Calendar_I.pmod/Stardate.pmod'/><classname resolved='predef::Calendar_I._TimeUnit'>Calendar_I._TimeUnit</classname></inherit>
</docgroup>
</class></module></module>





<module name='String'>

<module name='Elite'><docgroup homogen-name='elite_word' homogen-type='method'><doc><text><p>Translates one word to 1337. The optional
 argument leetp is the maximum percentage of
 leetness (100=max leet, 0=no leet).
 elite_word only do character-based translation,
 for instance from "k" to "|&lt;", but no language
 translation (no "cool" to "kewl").</p>
</text></doc>
<method name='elite_word'><source-position first-line='173' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/Elite.pmod'/>
<arguments><argument name='in'><type><string/></type></argument><argument name='leetp'><type><or><void/><int><min>0</min><max>100</max></int></or></type></argument><argument name='eightbit'><type><or><void/><int><min>0</min><max>2</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<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 neccesary 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>
<method name='elite_string'><source-position first-line='248' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/Elite.pmod'/>
<arguments><argument name='in'><type><string/></type></argument><argument name='leetp'><type><or><void/><int><min>0</min><max>100</max></int></or></type></argument><argument name='eightbit'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='HTML'><doc><text><p>Functions that helps generating HTML. All functions generates
 HTML that is XHTML compliant as well as backwards compatible
 with old HTML standards in what extent is possible.</p>
</text></doc>

<class name='OBox'><source-position first-line='137' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/><doc><text><p>Provides the same functionality as the <ref resolved='predef::String.HTML.simple_obox'>simple_obox</ref> function,
 in a "streaming" way. The real gain is different addtition methods
 as well as the possibility to change the cell callback at any time.</p>
</text><group><seealso/><text><p>simple_obox</p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='frame_color'><type><or><void/><string/></or></type></argument><argument name='cell_color'><type><or><void/><string/></or></type></argument><argument name='width'><type><or><void/><string/></or></type></argument><argument name='padding'><type><or><void/><string/></or></type></argument><argument name='cell_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><argtype><string/></argtype><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cell_callback' homogen-type='method'><doc/>
<method name='set_cell_callback'>
<arguments><argument name='cell_callback'><type><function><argtype><int/></argtype><argtype><int/></argtype><argtype><string/></argtype><argtype><string/></argtype><returntype><string/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_extra_args' homogen-type='method'><doc><text><p>The argument in the mapping will be added to all created table cells.</p>
</text></doc>
<method name='set_extra_args'>
<arguments><argument name='extra_args'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_extra_args' homogen-type='method'><doc><text><p>The argument in the mappings will be added to the cell in the
 cooresponding column of the table.</p>
</text></doc>
<method name='set_extra_args'>
<arguments><argument name='extra_args'><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_raw_cell' homogen-type='method'><doc><text><p>Adds this cell to the table unmodified, e.g. it should have an enclosing
 td or th element.</p>
</text></doc>
<method name='add_raw_cell'><source-position first-line='193' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='cell'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_tagdata_cell' homogen-type='method'><doc><text><p>Creates a cell from the provided arguments and adds it to the table.</p>
</text><group><param name='tag'/><text><p>The name of the element that should be produces. Typically
   "td" or "th".</p>
</text></group><group><param name='args'/><text><p>A mapping with the elements attributes.</p>
</text></group><group><param name='contents'/><text><p>The element contents.</p>
</text></group></doc>
<method name='add_tagdata_cell'><source-position first-line='207' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='tag'><type><string/></type></argument><argument name='args'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument><argument name='contents'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_cell' homogen-type='method'><doc><text><p>Adds a cell with the provided content.</p>
</text></doc>
<method name='add_cell'><source-position first-line='214' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='contents'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_row' homogen-type='method'><doc><text><p>Begin a new row. Succeeding cells will be added to this
 row instead of the current.</p>
</text></doc>
<method name='new_row'><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_row' homogen-type='method'><doc><text><p>Adds a complete row. If the current row is nonempty a
 new row will be started.</p>
</text></doc>
<method name='add_row'><source-position first-line='237' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='cells'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pad_rows' homogen-type='method'><doc><text><p>Ensures that all rows have the same number of cells.</p>
</text></doc>
<method name='pad_rows'><source-position first-line='245' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='render' homogen-type='method'><doc><text><p>Returns the result.</p>
</text></doc>
<method name='render'><source-position first-line='250' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to case this object to a string, which does the same
 as calling <ref resolved='predef::String.HTML.OBox.render'>render</ref>, and to an array, which returns the cells in an
 array of rows.</p>
</text></doc>
<method name='cast'><source-position first-line='258' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='select' homogen-type='method'><doc><text><p>Creates an HTML select list.</p>
</text><group><param name='name'/><text><p>The name of the select list. Will be used in the name attribute
   of the select element.</p>
</text></group><group><param name='choices'/><text><p>May either be an array of strings, where each string is a choice,
   or an array of pairs. A pair is an array with two strings. The
   first string is the value of the choice while the second string
   is the presentation text associated with the value.</p>
</text></group><group><param name='selected'/><text><p>The value that should be selected by default, if any.</p>
</text></group><group><example/><text><p>select("language",
      ({ ({ "eng", "English" }),
         ({ "swe", "Swedish" }),
         ({ "nor", "Norwegian" }) }),
      "swe");</p>
</text></group></doc>
<method name='select'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='choices'><type><or><array><valuetype><string/></valuetype></array><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></or></type></argument><argument name='selected'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='simple_obox' homogen-type='method'><doc><text><p>This function should solve most of the obox needs that arises. It
 creates a table out of the array of arrays of strings fed into it.
 The tables will (with default settings) have a thin black outline
 around the table and between its cells. Much effort has gone into
 finding a simple HTML reresentation of such obox that is rendered
 in a similar way in all popular browsers. The current
 implementation has been tested against IE, Netscape, Mozilla,
 Opera and Konquest.</p>
</text><group><param name='rows'/><text><p>Simply an array of arrays with strings. The strings are the
   values that should appear in the table cells. All rows should
   have equal number of cells, otherwise the result will not be
   very eye pleasing.</p>
</text></group><group><param name='frame_color'/><text><p>The color of the surrounding frame. Defaults to "#000000".</p>
</text></group><group><param name='cell_color'/><text><p>The background color of the cells. Defaults to "#ffffff".</p>
</text></group><group><param name='width'/><text><p>The border width. Defaults to "1".</p>
</text></group><group><param name='padding'/><text><p>The amount of padding in each cell. Defaults to "3".</p>
</text></group><group><param name='cell_callback'/><text><p>If provided, the cell callback will be called for each cell. As
   in parameters it will get the current x and y coordinates in the
   table. The upper left cell is 0,0. In addition to the
   coordinates it will also receive the background color and the
   contents of the current cell. It is expected to return a
   td-element.</p>
</text></group><group><example/><text><p>function cb = lambda(int x, int y, string bgcolor, string contents) {
     if(y%2) return "&lt;td bgcolor='#aaaaff'&gt;"+contents+"&lt;/td&gt;";
     return "&lt;td bgcolor='"+bgcolor+"'&gt;"+contents+"&lt;/td&gt;";
   }
   simple_obox(my_rows, "#0000a0", 0, "1", "3", cb);</p>
</text></group><group><seealso/><text><p><ref resolved='predef::String.HTML.pad_rows'>pad_rows</ref></p>
</text></group></doc>
<method name='simple_obox'><source-position first-line='86' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='rows'><type><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></type></argument><argument name='frame_color'><type><or><void/><string/></or></type></argument><argument name='cell_color'><type><or><void/><string/></or></type></argument><argument name='width'><type><or><void/><string/></or></type></argument><argument name='padding'><type><or><void/><string/></or></type></argument><argument name='cell_callback'><type><or><void/><function><argtype><int/></argtype><argtype><int/></argtype><argtype><string/></argtype><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pad_rows' homogen-type='method'><doc><text><p>Pads out the rows in a array of rows to equal length. The new elements in
 the rows will have the value provided in <ref resolved='predef::String.HTML.pad_rows.padding'>padding</ref>, or "&amp;nbsp;".</p>
</text></doc>
<method name='pad_rows'><source-position first-line='122' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/HTML.pmod'/>
<arguments><argument name='rows'><type><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></type></argument><argument name='padding'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
</module><docgroup homogen-name='implode_nicely' homogen-type='method'><doc><text><p>This function implodes a list of words to a readable string, e.g.
 <expr>({"straw","berry","pie"})</expr> becomes <expr>"straw, berry and
 pie"</expr>.  If the separator is omitted, the default is
 <expr>"and"</expr>. If the words are numbers they are converted to
 strings first.</p>
</text><group><seealso/><text><p><ref resolved='predef::`*'>`*()</ref></p>
</text></group></doc>
<method name='implode_nicely'><source-position first-line='29' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='foo'><type><array><valuetype><or><string/><int/><float/></or></valuetype></array></type></argument><argument name='separator'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='capitalize' homogen-type='method'><doc><text><p>Convert the first character in <ref resolved='predef::String.capitalize.str'>str</ref> to upper case, and return the
 new string.</p>
</text><group><seealso/><text><p><ref resolved='predef::lower_case'>lower_case()</ref>, <ref resolved='predef::upper_case'>upper_case()</ref></p>
</text></group></doc>
<method name='capitalize'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sillycaps' homogen-type='method'><doc><text><p>Convert the first character in each word (separated by spaces) in
 <ref resolved='predef::String.sillycaps.str'>str</ref> to upper case, and return the new string.</p>
</text></doc>
<method name='sillycaps'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='common_prefix' homogen-type='method'><doc><text><p>Find the longest common prefix from an array of strings.</p>
</text></doc>
<method name='common_prefix'><source-position first-line='80' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='strs'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fuzzymatch' homogen-type='method'><doc><text><p>This function compares two strings using a fuzzy matching
 routine. The higher the resulting value, the better the strings match.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>Array.diff()</ref>, <ref resolved='predef::Array.diff_compare_table'>Array.diff_compare_table()</ref>
 <ref resolved='predef::Array.diff_longest_sequence'>Array.diff_longest_sequence()</ref></p>
</text></group></doc>
<method name='fuzzymatch'><source-position first-line='146' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='a'><type><string/></type></argument><argument name='b'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>100</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='soundex' homogen-type='method'><doc><text><p>Returns the soundex value of <ref resolved='predef::String.soundex.word'>word</ref> according to
 the original Soundex algorithm, patented by Margaret O´Dell
 and Robert C. Russel in 1918. The method is based on the phonetic
 classification of sounds by how they are made. It was only intended
 for hashing of english surnames, and even at that it isn't that
 much of a help.</p>
</text></doc>
<method name='soundex'><source-position first-line='166' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='word'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='int2roman' homogen-type='method'><doc><text><p>Converts the provided integer to a roman integer (i.e. a string).</p>
</text><group><throws/><text><p>Throws an error if <ref resolved='predef::String.int2roman.m'>m</ref> is outside the range 0 to 10000.</p>
</text></group></doc>
<method name='int2roman'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='m'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='int2size' homogen-type='method'><doc><text><p>Returns the size as a memory size string with suffix,
 e.g. 43210 is converted into "42.2 kb". To be correct
 to the latest standards it should really read "42.2 KiB",
 but we have chosen to keep the old notation for a while.
 The function knows about the quantifiers kilo, mega, giga,
 tera, peta, exa, zetta and yotta.</p>
</text><group><throws/><text><p>Throws an error is <ref resolved='predef::String.int2size.size'>size</ref> is less than zero.</p>
</text></group></doc>
<method name='int2size'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='size'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='expand_tabs' homogen-type='method'><doc><text><p>Expands tabs in a string to ordinary spaces, according to common
 tabulation rules.</p>
</text></doc>
<method name='expand_tabs'><source-position first-line='235' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/String.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='tab_width'><type><or><int/><void/></or></type></argument><argument name='substitute_tab'><type><or><string/><void/></or></type></argument><argument name='substitute_space'><type><or><string/><void/></or></type></argument><argument name='substitute_newline'><type><or><string/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>


<class name='Iterator'><doc><text><p>An object of this class is returned by <ref resolved='predef::get_iterator'>get_iterator()</ref> when
   called with a string.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_iterator'>get_iterator</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='predef::Iterator'><doc>
</doc>
<inherit name='predef::Iterator'><classname resolved='predef::Iterator'>predef::Iterator</classname></inherit>
</docgroup>
</class>

<class name='SplitIterator'><doc><text><p>An iterator that iterates over substrings of a string, separated
 by a character or several different characters.</p>
</text><group><note/><text><p>Typically you don't need to explicitly use the SplitIterator.
   Expressions like the following are automatically optimized into
   using a SplitIterator.</p>
<code><text><p>foreach(str/"\n", string line)
       write("%s\n", line);</p>
</text></code></text></group></doc><docgroup homogen-type='inherit' homogen-name='predef::Iterator'><doc>
</doc>
<inherit name='predef::Iterator'><classname resolved='predef::Iterator'>predef::Iterator</classname></inherit>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><group><param name='buffer'/><text><p>The string to split.</p>
</text></group><group><param name='split_set'/><text><p>The character or characters to split on.</p>
</text></group><group><param name='flags'/><text><p>Skip empty elements if set.</p>
</text></group><group><param name='feed'/><text><p>Callback function that is called once the <ref resolved='predef::String.SplitIterator.create.buffer'>buffer</ref> is used up
   and the SplitIterator wants more data.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='buffer'><type><string/></type></argument><argument name='split_set'><type><or><int/><array><valuetype><int/></valuetype></array><multiset><indextype><int/></indextype></multiset></or></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument><argument name='feed'><type><or><function><returntype><string/></returntype></function><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<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-type='method' homogen-name='create'><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-type='method' homogen-name='_sprintf'><doc><text><p>It is possible to <ref resolved='predef::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-type='method' homogen-name='cast'><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-type='method' homogen-name='`+'><doc/>
<method name='`+'>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::String.Buffer'>String.Buffer</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`+='><doc/>
<method name='`+='>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::String.Buffer'>String.Buffer</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add'><doc><text><p>Adds <ref resolved='predef::String.Buffer.add.data'>data</ref> to the buffer. Returns the size of the buffer.</p>
</text></doc>
<method name='add'>
<arguments><argument name='data'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='putchar'><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-type='method' homogen-name='get_copy'><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></doc>
<method name='get_copy'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get'><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></doc>
<method name='get'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sizeof'><doc><text><p>Returns the size of the buffer.</p>
</text></doc>
<method name='_sizeof'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Replace'><docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments><argument name='from'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument><argument name='to'><type><or><array><valuetype><string/></valuetype></array><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`()'><doc/>
<method name='`()'>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_encode'><doc/>
<method name='_encode'>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_decode'><doc/>
<method name='_decode'>
<arguments><argument name='encoded'><type><array><valuetype><array><valuetype><string/></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='SingleReplace'><docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments><argument name='del'><type><or><string/><void/></or></type></argument><argument name='to'><type><or><string/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`()'><doc/>
<method name='`()'>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_encode'><doc/>
<method name='_encode'>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_decode'><doc/>
<method name='_decode'>
<arguments><argument name='encoded'><type><or><array><valuetype><string/></valuetype></array><int><min>0</min><max>0</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Bootstring'><doc><text><p>This class implements the "Bootstring" string transcoder described in
 <url>ftp://ftp.rfc-editor.org/in-notes/rfc3492.txt</url>.</p>
</text></doc><docgroup homogen-type='method' homogen-name='decode'><doc><text><p>Decodes a Bootstring encoded string of "basic" code points back
 to the original string space.</p>
</text></doc>
<method name='decode'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='encode'><doc><text><p>Encodes a string using Bootstring encoding into a string constisting
 only of "basic" code points (&lt; initial_n).</p>
</text></doc>
<method name='encode'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>Creates a Bootstring transcoder instance using the specified parameters.</p>
</text><group><param name='base'/><text><p>The base used by the variable-length integers.</p>
</text></group><group><param name='tmin'/><text><p>The minimum threshold digit value for the variable-length integers.
   Must be &gt;=0 and &lt;= tmax.</p>
</text></group><group><param name='tmax'/><text><p>The maximum threshold digit value for the variable-length integers.
   Must be &lt;= base-1.</p>
</text></group><group><param name='skew'/><text><p>The skew term for the bias adapation.  Must be &gt;= 1.</p>
</text></group><group><param name='damp'/><text><p>The damping factor for the bias adaption.  Must be &gt;= 2.</p>
</text></group><group><param name='initial_bias'/><text><p>The initial bias for the variable-length integer thresholding.
   initial_bias % base must be &lt;= base - tmin.</p>
</text></group><group><param name='initial_n'/><text><p>The first code point outside the "basic" set of code points.</p>
</text></group><group><param name='delim'/><text><p>The "basic" code point used as the delimiter.</p>
</text></group><group><param name='digits'/><text><p>The "basic" code points used as digits.  The length of the string
   should be the same as the base parameter.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='base'><type><int/></type></argument><argument name='tmin'><type><int/></type></argument><argument name='tmax'><type><int/></type></argument><argument name='skew'><type><int/></type></argument><argument name='damp'><type><int/></type></argument><argument name='initial_bias'><type><int/></type></argument><argument name='initial_n'><type><int/></type></argument><argument name='delim'><type><int/></type></argument><argument name='digits'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='int2char' homogen-type='method'><doc><text><p>Same as sprintf("%c",x);</p>
</text><group><seealso/><text><p><ref resolved='predef::sprintf'>sprintf()</ref></p>
</text></group></doc>
<method name='int2char'>
<arguments><argument name='x'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='int2hex' homogen-type='method'><doc><text><p>Same as <expr>sprintf("%x",x);</expr>, i.e. returns the integer <ref resolved='predef::String.int2hex.x'>x</ref> in
 hexadecimal base using lower cased symbols.</p>
</text><group><seealso/><text><p><ref resolved='predef::sprintf'>sprintf()</ref></p>
</text></group></doc>
<method name='int2hex'>
<arguments><argument name='x'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='string2hex' homogen-type='method'><doc><text><p>Convert a string of binary data to a hexadecimal string.</p>
</text><group><seealso/><text><p><ref resolved='predef::String.hex2string'>hex2string()</ref></p>
</text></group></doc>
<method name='string2hex'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='hex2string' homogen-type='method'><doc><text><p>Convert a string of hexadecimal digits to binary data.</p>
</text><group><seealso/><text><p><ref resolved='predef::String.string2hex'>string2hex()</ref></p>
</text></group></doc>
<method name='hex2string'>
<arguments><argument name='hex'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='count' homogen-type='method'><doc><text><p>Count the number of non-overlapping times the string <ref resolved='predef::String.count.needle'>needle</ref> occurrs
 in the string <ref resolved='predef::String.count.haystack'>haystack</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::search'>search()</ref>, <ref resolved='predef::`/'>`/()</ref></p>
</text></group></doc>
<method name='count'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='needle'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='trim_whites' homogen-type='method'><doc><text><p>Trim leading and trailing spaces and tabs from the string <ref resolved='predef::String.trim_whites.s'>s</ref>.</p>
</text></doc>
<method name='trim_whites'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='trim_all_whites' homogen-type='method'><doc><text><p>Trim leading and trailing white spaces characters (space, tab,
 newline and carriage return) from the string <ref resolved='predef::String.trim_all_whites.s'>s</ref>.</p>
</text></doc>
<method name='trim_all_whites'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='width' homogen-type='method'><doc><text><p>Returns the width of a string.</p>
<p> Three return values are possible:</p>
<int><group><value>8</value><text><p>The string <ref resolved='predef::String.width.s'>s</ref> only contains characters &lt;= 255.</p>
</text></group><group><value>16</value><text><p>The string <ref resolved='predef::String.width.s'>s</ref> only contains characters &lt;= 65535.</p>
</text></group><group><value>32</value><text><p>The string <ref resolved='predef::String.width.s'>s</ref> contains characters &gt;= 65536.</p>
</text></group></int></text></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></module>





<module name='Float'><docgroup homogen-type='constant'><doc><text><p>These constants define the limits for floats on the current
 architecture:</p>
<dl><group><item name='DIGITS_10'/><text><p>The number of decimal digits that can be represented. Any number
   with this many decimal digits can be stored in a float and
   converted back to decimal form without change. <ref resolved='predef::Float.DIGITS_10'>DIGITS_10</ref> is
   not less than <expr>6</expr>.</p>
</text></group><group><item name='MIN_10_EXP'/><item name='MAX_10_EXP'/><text><p>Limits of the exponent in decimal base. 10 raised to any number
   within this range can be represented in normalized form.
   <ref resolved='predef::Float.MIN_10_EXP'>MIN_10_EXP</ref> is not greater than <expr>-37</expr>. <ref resolved='predef::Float.MAX_10_EXP'>MAX_10_EXP</ref> is
   not less than <expr>37</expr>.</p>
</text></group><group><item name='MIN'/><text><p>The smallest normalized float greater than zero. It's not
   greater than <expr>1e-37</expr>.</p>
</text></group><group><item name='MAX'/><text><p>The largest finite float. It's not less than <expr>1e37</expr>.</p>
</text></group><group><item name='EPSILON'/><text><p>The difference between 1 and the smallest value greater than 1
   that can be represented. It's not greater than <expr>1e-5</expr>.</p>
</text></group></dl>
</text><group><note/><text><p>The size of the float type can be controlled when Pike is compiled
 with the configure flags <expr>--with-double-precision</expr> and
 <expr>--with-long-double-precision</expr>. The default is to use the
 longest available float type that fits inside a pointer.</p>
</text></group></doc>
<constant name='DIGITS_10'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='MIN_10_EXP'><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='MAX_10_EXP'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='MIN'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='MAX'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='EPSILON'><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Tells which C compiler float type that is used for Pike floats.
 Only one of these constants will exist (with the value <expr>1</expr>)
 at runtime.</p>
<dl><group><item name='FLOAT_PRECISION'/><text><p>The <expr>float</expr> type of the C compiler is used.</p>
</text></group><group><item name='DOUBLE_PRECISION'/><text><p>The <expr>double</expr> type of the C compiler is used.</p>
</text></group><group><item name='LONG_DOUBLE_PRECISION'/><text><p>The <expr>long double</expr> type of the C compiler is used.</p>
</text></group></dl>
</text><group><note/><text><p>The float type can be controlled when Pike is compiled with the
 configure flags <expr>--with-double-precision</expr> and
 <expr>--with-long-double-precision</expr>. The default is to use the
 longest available float type that fits inside a pointer.</p>
</text></group></doc>
<constant name='FLOAT_PRECISION'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='DOUBLE_PRECISION'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
<constant name='LONG_DOUBLE_PRECISION'><source-position first-line='62' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Float.pmod'/></constant>
</docgroup>
</module>



<module name='Gnome'><docgroup homogen-type='import'><doc/>
<import><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Gnome.pmod'/><classname resolved='predef::GTK'>GTK</classname></import>
</docgroup>


<class name='IconEntry'><doc><text><p>This widget provides the facilities to select an icon. An icon is
 displayed inside a button, when the button is pressed, an Icon
 selector (a dialog with a W(GnomeIconSelection) widget) pops up to let
 the user choose an icon. It also allows one to Drag and Drop the
 images to and from the preview button.</p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='9'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new icon entry widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='11'/><modifiers><static/></modifiers>
<arguments><argument name='history_id'><type><string/></type></argument><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconEntry'>Gnome.IconEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_filename' homogen-type='method'><doc><text><p>Gets the file name of the image if it was possible to load it into
 the preview. That is, it will only return a filename if the image
 exists and it was possible to load it as an image.</p>
</text></doc>
<method name='get_filename'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='16'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_entry' homogen-type='method'><doc><text><p>Get the W(GnomeEntry) widget that's part of the entry</p>
</text></doc>
<method name='gnome_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='23'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_file_entry' homogen-type='method'><doc><text><p>Get the W(GnomeFileEntry) widget that's part of the entry</p>
</text></doc>
<method name='gnome_file_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='28'/>
<arguments/>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gtk_entry' homogen-type='method'><doc><text><p>Get the W(Entry) widget that's part of the entry</p>
</text></doc>
<method name='gtk_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='33'/>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixmap_subdir' homogen-type='method'><doc><text><p>Sets the subdirectory below gnome's default pixmap directory to use
 as the default path for the file entry.</p>
</text></doc>
<method name='set_pixmap_subdir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconEntry.pike' first-line='38'/>
<arguments><argument name='subdir'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconEntry'>Gnome.IconEntry</object></returntype>
</method>
</docgroup>
</class>

<class name='FontPicker'><doc><text><p>GnomeFontPicker - Button that displays current font; click to select new font.
<expr> Gnome.FontPicker();</expr>
<image file='predef.Gnome.FontPicker.1.png' width='30' height='30'>../images/gnome_fontpicker.png</image></p>
<p><expr> Gnome.FontPicker()-&gt;set_mode( Gnome.FontPickerModeFontInfo );</expr>
<image file='predef.Gnome.FontPicker.2.png' width='70' height='19'>../images/gnome_fontpicker_2.png</image></p>
<p>  Signals:
 <b>font_set</b></p>
</text></doc><docgroup homogen-name='Button' homogen-type='inherit'><doc>
</doc>
<inherit name='Button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='14'/><classname resolved='predef::GTK.Button'>GTK.Button</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new font pick button</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='16'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='fi_set_show_size' homogen-type='method'><doc><text><p>If show_size is TRUE, font size will be displayed along with font
 chosen by user. This only applies if current button mode is
 Gnome.FontPickerModeFontInfo.</p>
</text></doc>
<method name='fi_set_show_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='21'/>
<arguments><argument name='show_size'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='fi_set_use_font_in_label' homogen-type='method'><doc><text><p>If use_font_in_label is TRUE, font name will be written using font
 chosen by user and using size passed to this function. This only
 applies if current button mode is Gnome.FontPickerModeFontInfo.</p>
</text></doc>
<method name='fi_set_use_font_in_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='28'/>
<arguments><argument name='use_font_in_label'><type><int/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_font' homogen-type='method'><doc><text><p>Retrieves the font from the font selection dialog.</p>
</text></doc>
<method name='get_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='35'/>
<arguments/>
<returntype><object resolved='predef::GDK.Font'>GDK.Font</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_font_name' homogen-type='method'><doc><text><p>Retrieve name of font from font selection dialog.</p>
</text></doc>
<method name='get_font_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='40'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_mode' homogen-type='method'><doc><text><p>Returns current font picker button mode (or what to show).</p>
</text></doc>
<method name='get_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='45'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_preview_text' homogen-type='method'><doc><text><p>Retrieve preview text from font selection dialog if available.</p>
</text></doc>
<method name='get_preview_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='50'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_font_name' homogen-type='method'><doc><text><p>Set or update the currently displayed font in the font picker dialog</p>
</text></doc>
<method name='set_font_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='55'/>
<arguments><argument name='fontname'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_mode' homogen-type='method'><doc><text><p>Set value of subsequent font picker button mode (or what to show).
 Mode is one of <ref resolved='predef::GTK.GNOME_FONT_PICKER_MODE_FONT_INFO'>GNOME_FONT_PICKER_MODE_FONT_INFO</ref>, <ref resolved='predef::GTK.GNOME_FONT_PICKER_MODE_PIXMAP'>GNOME_FONT_PICKER_MODE_PIXMAP</ref>, <ref resolved='predef::GTK.GNOME_FONT_PICKER_MODE_UNKNOWN'>GNOME_FONT_PICKER_MODE_UNKNOWN</ref> and <ref resolved='predef::GTK.GNOME_FONT_PICKER_MODE_USER_WIDGET'>GNOME_FONT_PICKER_MODE_USER_WIDGET</ref></p>
</text></doc>
<method name='set_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='60'/>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_preview_text' homogen-type='method'><doc><text><p>Set preview text in font picker, and in font selection dialog if
 one is being displayed.</p>
</text></doc>
<method name='set_preview_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='66'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Sets the title for the font selection dialog.</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='72'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='uw_set_widget' homogen-type='method'><doc><text><p>Set the user-supplied widget as the inside of the font picker. This
 only applies with Gnome.FontPickerModeUserWidget.</p>
</text></doc>
<method name='uw_set_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FontPicker.pike' first-line='77'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FontPicker'>Gnome.FontPicker</object></returntype>
</method>
</docgroup>
</class>

<class name='FileEntry'><doc><text><p>This widget provides an entry box with history (a W(GnomeEntry))
 and a button which can pop up a file selector dialog box
 W(GtkFileSelection). It also accepts DND drops from the filemanager
 and other sources.
<expr> Gnome.FileEntry("","")</expr>
<image file='predef.Gnome.FileEntry.1.png' width='228' height='19'>../images/gnome_fileentry.png</image></p>
<p>  Signals:
 <b>browse_clicked</b>
 Signal emitted when the "browse" button is clicked. This is so that
 you can add stuff to the file selector or to override this method.</p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='17'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.FileEntry widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='history_id'><type><string/></type></argument><argument name='browse_dialog_title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_full_path' homogen-type='method'><doc><text><p>Gets the full absolute path of the file from the entry. If
 file_must_exist is false, nothing is tested and the path is
 returned. If file_must_exist is true, then the path is only
 returned if the path actually exists. In case the entry is a
 directory entry (see set_directory), then if the path exists and is
 a directory then it's returned; if not, it is assumed it was a file
 so we try to strip it, and try again.</p>
</text></doc>
<method name='get_full_path'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='24'/>
<arguments><argument name='file_must_exist'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_entry' homogen-type='method'><doc><text><p>Get the W(GnomeEntry) component of the widget for lower-level
 manipulation.</p>
</text></doc>
<method name='gnome_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='35'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gtk_entry' homogen-type='method'><doc><text><p>Get the W(Entry) component of the widget for lower-level
 manipulation.</p>
</text></doc>
<method name='gtk_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='41'/>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_path' homogen-type='method'><doc><text><p>Set the default path of browse dialog to path. The default path is
 only used if the entry is empty or if the current path of the entry
 is not an absolute path, in which case the default path is
 prepended to it before the dialog is started.</p>
</text></doc>
<method name='set_default_path'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='47'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_directory' homogen-type='method'><doc><text><p>Sets whether this is a directory only entry. If directory_entry is
 true, then get_full_path will check for the file being a directory,
 and the browse dialog will have the file list disabled.</p>
</text></doc>
<method name='set_directory'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='55'/>
<arguments><argument name='directory_entry'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_modal' homogen-type='method'><doc><text><p>Sets the modality of the browse dialog.</p>
</text></doc>
<method name='set_modal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='62'/>
<arguments><argument name='is_modal'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the title of the browse dialog to browse_dialog_title. The new
 title will go into effect the next time the browse button is
 pressed.</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/FileEntry.pike' first-line='67'/>
<arguments><argument name='browse_dialog_title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
</class>

<class name='DateEdit'><doc><text><p>The GnomeDateEdit widget provides a way to enter dates and times
 with a helper calendar to let the user select the date.
<expr> Gnome.DateEdit(time(),1,1);</expr>
<image file='predef.Gnome.DateEdit.1.png' width='277' height='20'>../images/gnome_dateedit.png</image></p>
<p><expr> Gnome.DateEdit(time(),0,1);</expr>
<image file='predef.Gnome.DateEdit.2.png' width='107' height='19'>../images/gnome_dateedit_2.png</image></p>
<p>  Signals:
 <b>date_changed</b></p>
<p> <b>time_changed</b></p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DateEdit.pike' first-line='17'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GnomeDateEdit widget which can be used to provide an
 easy to use way for entering dates and times.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DateEdit.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='the_time'><type><int/></type></argument><argument name='show_time'><type><int/></type></argument><argument name='use_24_format'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DateEdit'>Gnome.DateEdit</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_date' homogen-type='method'><doc><text><p>Returns the configured time</p>
</text></doc>
<method name='get_date'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DateEdit.pike' first-line='25'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_popup_range' homogen-type='method'><doc><text><p>Sets the range of times that will be provide by the time popup
 selectors.</p>
</text></doc>
<method name='set_popup_range'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DateEdit.pike' first-line='30'/>
<arguments><argument name='low_hour'><type><int/></type></argument><argument name='high_hour'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DateEdit'>Gnome.DateEdit</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_time' homogen-type='method'><doc><text><p>Changes the displayed date and time in the GnomeDateEdit widget to
 be the one represented by the_time.</p>
</text></doc>
<method name='set_time'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DateEdit.pike' first-line='36'/>
<arguments><argument name='the_time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DateEdit'>Gnome.DateEdit</object></returntype>
</method>
</docgroup>
</class>

<class name='DockBand'><doc><text><p>Gnome.DockBand is a widget implementing a "dock band", i.e. a
 horizontal or vertical stripe containing dockable widgets.</p>
<p> The application programmer does not normally need to use
 Gnome.DockBand directly; they are mostly used by the W(GnomeDock)
 widget to implement its functionality. For an explanation of the
 way dock bands are used within a dock, check out the documentation
 for the W(GnomeDock) widget.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='13'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Add child to the band with the specified offset as the last element.</p>
</text></doc>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='15'/>
<arguments><argument name='child'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new Gnome.DockBand widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.DockBand'>Gnome.DockBand</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_child_offset' homogen-type='method'><doc><text><p>Retrieve the offset of the child</p>
</text></doc>
<method name='get_child_offset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='25'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_item_by_name' homogen-type='method'><doc><text><p>Retrieve a named item from the band.</p>
</text></doc>
<method name='get_item_by_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='30'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_num_children' homogen-type='method'><doc><text><p>Retrieve the number of children</p>
</text></doc>
<method name='get_num_children'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='35'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_orientation' homogen-type='method'><doc><text><p>Retrieve the orientation</p>
</text></doc>
<method name='get_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>Add child to the band at the specified position, with the specified
 offset from the previous item (or from the beginning of the band,
 if this is the first item).</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='45'/>
<arguments><argument name='child'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='offset'><type><int/></type></argument><argument name='position'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='layout_add' homogen-type='method'><doc/>
<method name='layout_add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='52'/>
<arguments><argument name='layout'><type><object resolved='predef::Gnome.DockLayout'>Gnome.DockLayout</object></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockBand'>Gnome.DockBand</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend' homogen-type='method'><doc><text><p>Add child to the band with the specified offset as the first element.</p>
</text></doc>
<method name='prepend'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='55'/>
<arguments><argument name='child'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_child_offset' homogen-type='method'><doc><text><p>Set the offset for the specified child of the band.</p>
</text></doc>
<method name='set_child_offset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='60'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockBand'>Gnome.DockBand</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_orientation' homogen-type='method'><doc><text><p>Set the orientation.</p>
</text></doc>
<method name='set_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockBand.pike' first-line='65'/>
<arguments><argument name='orientation'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockBand'>Gnome.DockBand</object></returntype>
</method>
</docgroup>
</class>

<class name='IconSelection'><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='3'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='add_defaults' homogen-type='method'><doc><text><p>Adds the default pixmap directory into the selection widget.</p>
</text></doc>
<method name='add_defaults'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='5'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_directory' homogen-type='method'><doc><text><p>Adds the icons from the directory dir to the selection widget.</p>
</text></doc>
<method name='add_directory'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='10'/>
<arguments><argument name='dir'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Clear the currently shown icons, the ones that weren't shown yet
 are not cleared unless the not_shown parameter is given, in which
 case even those are cleared.</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='15'/>
<arguments><argument name='not_shown'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>reates a new icon selection widget, it uses a W(GnomeIconList) for
 the listing of icons</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_icon' homogen-type='method'><doc><text><p>Gets the currently selected icon name, if full_path is true, it
 returns the full path to the icon, if none is selected it returns
 0.</p>
</text></doc>
<method name='get_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='28'/>
<arguments><argument name='full_path'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_icon' homogen-type='method'><doc><text><p>Selects the icon filename. This icon must have already been added
 and shown</p>
</text></doc>
<method name='select_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='35'/>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_icons' homogen-type='method'><doc><text><p>Shows the icons inside the widget that were added with add_defaults
 and add_directory. Before this function isf called the icons aren't
 actually added to the listing and can't be picked by the user.</p>
</text></doc>
<method name='show_icons'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconSelection.pike' first-line='41'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconSelection'>Gnome.IconSelection</object></returntype>
</method>
</docgroup>
</class>

<class name='AppletWidget'><doc><text><p>Applets are basically GNOME applications whose window sits inside
 the panel. Also the panel "takes care" of the applets by providing
 them with session saving and restarting, window management (inside
 of the panel), and a context menu.</p>
<p> The simplest applet one can write would be along the lines of:</p>
<p> <pre>
 int main( int argc, array argv )
 {
   Gnome.init( "hello", "1.0", argv, 0 );
   Gnome.AppletWidget("hello")-&amp;gt;add(GTK.Label("Hello World!"))-&amp;gt;show_all();
   GTK.applet_widget_gtk_main();
 }
 </pre>
 This creates an applet which just sits on the panel, not really
 doing anything, in real life the label would be substituted by
 something which actually does something useful. As you can see the
 applet doesn't really take care of restarting itself.</p>
<p> For the applet to be added to the menus, you need to install two
 files. Your x.gnorba file goes into $sysconfdir/CORBA/servers/ and
 the x.desktop file goes into $prefix/share/applets/&amp;lt;category&amp;gt;/.</p>
<p> Example hello.desktop:
 <pre>
 [Desktop Entry]
  Name=Hello Applet
  Comment=An example Hello World type Applet
  Type=PanelApplet
  Exec=hello.pike
  Icon=gnome-hello.png
  Terminal=0
 </pre>
 Example hello.gnorba:
 <pre>
 [hello]
  type=exe
  repo_id=IDL:GNOME/Applet:1.0
  description=Hello Applet
  location_info=hello.pike
 </pre>
 One thing to keep in mind is that the Exec line for the .desktop
 doesn't actually get executed when the Type is PanelApplet. The
 Exec line should be the GOAD ID specified in the .gnorba file (the
 "hello" enclosed by brackets). For a simple applet all you need to
 do is replace the hello.pike with the name of your applet
 executable.</p>
<p>  When the user right clicks on the applet, a menu appears, this is
  all handeled by the panel, so in order to add items to it you use
  a special interface to "add callbacks" to the menu. A very simple
  example would be (making our hello applet even more feature full):</p>
<p> <pre>
 void hello_there()
 {
   write( "Hello there, indeed!\n" );
 }

 int main( int argc, array argv )
 {
   Gnome.AppletWidget w;
   Gnome.init( "hello", "1.0", argv, 0 );
   w = Gnome.AppletWidget("hello");
   w-&amp;gt;add(GTK.Label("Hello World!"))-&amp;gt;show_all();
   w-&amp;gt;register_callback( "hello", "Hello there", hello_there, 0 );
   GTK.applet_widget_gtk_main();
 }
 </pre>
 Now the user will see a "Hello There" menu item on the applet menu,
 and when selected, the applet will print "Hello There". Useful huh?</p>
<p> Note that the first argument to the register_callback is just a
 string identifier of this callback, and can really be whatever you
 want. But it should NOT be translated as the label (the 2nd
 argument) should be.</p>
<p>  Signals:
 <b>back_change</b></p>
<p> <b>change_orient</b></p>
<p> <b>change_pixel_size</b></p>
<p> <b>change_position</b></p>
<p> <b>tooltip_state</b></p>
</text></doc><docgroup homogen-name='Plug' homogen-type='inherit'><doc>
</doc>
<inherit name='Plug'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='92'/><classname resolved='predef::GTK.Plug'>GTK.Plug</classname></inherit>
</docgroup>
<docgroup homogen-name='abort_load' homogen-type='method'><doc><text><p>Abort the applet loading, once applet has been created, this is a
  way to tell the panel to forget about us if we decide we want to
  quit before we add the actual applet to the applet-widget. This is
  only useful before before add() is called.</p>
</text></doc>
<method name='abort_load'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='94'/>
<arguments/>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a child (widget) to the applet. This finishes the handshaking
 with the panel started in applet_widget_new. You should never call
 this function twice for the same applet. If you have already
 created an applet widget, but need to cancel the loading of the
 applet, use abort_load.</p>
</text></doc>
<method name='add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='102'/>
<arguments><argument name='what'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='callback_set_sensitive' homogen-type='method'><doc><text><p>Sets the sensitivity of a menu item in the applet's context menu.</p>
</text></doc>
<method name='callback_set_sensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='111'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='sensitive'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Make a new applet and register us with the panel, if you decide to
 cancel the load before calling add, you should call
 abort_load.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='116'/><modifiers><static/></modifiers>
<arguments><argument name='applet_name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_free_space' homogen-type='method'><doc><text><p>Gets the free space left that you can use for your applet. This is
 the number of pixels around your applet to both sides. If you
 strech by this amount you will not disturb any other applets. If
 you are on a packed panel 0 will be returned.</p>
</text></doc>
<method name='get_free_space'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='123'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_globcfgpath' homogen-type='method'><doc/>
<method name='get_globcfgpath'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='131'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_panel_orient' homogen-type='method'><doc><text><p>Gets the orientation of the panel this widget is on. it can be one
 of <ref resolved='predef::GTK.GNOME_Panel_ORIENT_DOWN'>GNOME_Panel_ORIENT_DOWN</ref>, <ref resolved='predef::GTK.GNOME_Panel_ORIENT_LEFT'>GNOME_Panel_ORIENT_LEFT</ref>, <ref resolved='predef::GTK.GNOME_Panel_ORIENT_RIGHT'>GNOME_Panel_ORIENT_RIGHT</ref> and <ref resolved='predef::GTK.GNOME_Panel_ORIENT_UP'>GNOME_Panel_ORIENT_UP</ref>. This is not the position of the
 panel, but rather the direction that the applet should be "reaching
 out". So any arrows should for example point in this direction. It
 will be OrientUp or OrientDown for horizontal panels and OrientLeft
 or OrientRight for vertical panels</p>
</text></doc>
<method name='get_panel_orient'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='134'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_panel_pixel_size' homogen-type='method'><doc><text><p>Gets the width of the panel in pixels. This is not the actual size,
 but the recomended one. The panel may be streched if the applets
 use larger sizes then this.</p>
</text></doc>
<method name='get_panel_pixel_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='144'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_privcfgpath' homogen-type='method'><doc/>
<method name='get_privcfgpath'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='151'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='register_callback' homogen-type='method'><doc><text><p>Adds a menu item to the applet's context menu. The name should be a
 path that is separated by '/' and ends in the name of this
 item. You need to add any submenus with register_callback_dir.</p>
</text></doc>
<method name='register_callback'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='154'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='menutext'><type><string/></type></argument><argument name='callback_cb'><type><function/></type></argument><argument name='callback_arg'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='register_callback_dir' homogen-type='method'><doc><text><p>Adds a submenu to the applet's context menu. The name should be the
 full path of the new submenu with the name of the new submenu as
 the last part of the path. The name can, but doesn't have to be
 terminated with a '/'.</p>
</text></doc>
<method name='register_callback_dir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='161'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='menutext'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='register_stock_callback' homogen-type='method'><doc><text><p>Adds a menu item to the applet's context menu with a stock GNOME
 pixmap. This works almost exactly the same as register_callback.</p>
</text></doc>
<method name='register_stock_callback'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='169'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='stock_type'><type><string/></type></argument><argument name='menutext'><type><string/></type></argument><argument name='callback_cb'><type><function/></type></argument><argument name='callback_arg'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='register_stock_callback_dir' homogen-type='method'><doc><text><p>Adds a submenu to the applet's context menu with a stock GNOME
 pixmap. This is similiar to register_callback_dir.</p>
</text></doc>
<method name='register_stock_callback_dir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='175'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='stock_type'><type><string/></type></argument><argument name='menutext'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Remove the plug from the panel, this will destroy the applet. You
 can only call this once for each applet.</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='181'/>
<arguments/>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='send_position' homogen-type='method'><doc><text><p>If you need to get a signal everytime this applet changes position
 relative to the screen, you need to run this function with TRUE for
 enable and bind the change_position signal on the applet. This
 signal can be quite CPU/bandwidth consuming so only applets which
 need it should use it. By default change_position is not sent.</p>
</text></doc>
<method name='send_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='187'/>
<arguments><argument name='enable'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tooltip' homogen-type='method'><doc><text><p>Set a tooltip on the entire applet that will follow the tooltip
 setting from the panel configuration.</p>
</text></doc>
<method name='set_tooltip'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='196'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_widget_tooltip' homogen-type='method'><doc><text><p>Set a tooltip on the widget that will follow the tooltip setting
 from the panel configuration.</p>
</text></doc>
<method name='set_widget_tooltip'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='202'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sync_config' homogen-type='method'><doc><text><p>Tell the panel to save our session here (just saves, no
 shutdown). This should be done when you change some of your config
 and want the panel to save it's config, you should NOT call this in
 the session_save handler as it will result in a locked panel, as it
 will actually trigger another session_save signal for you. However
 it also asks for a complete panel save, so you should not do this
 too often, and only when the user has changed some preferences and
 you want to sync them to disk. Theoretically you don't even need to
 do that if you don't mind loosing settings on a panel crash or when
 the user kills the session without logging out properly, since the
 panel will always save your session when it exists.</p>
</text></doc>
<method name='sync_config'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='208'/>
<arguments/>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unregister_callback' homogen-type='method'><doc><text><p>Remove a menu item from the applet's context menu. The name should
 be the full path to the menu item. This will not remove any
 submenus.</p>
</text></doc>
<method name='unregister_callback'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='223'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unregister_callback_dir' homogen-type='method'><doc><text><p>Removes a submenu from the applet's context menu. Use this instead
 of unregister_callback to remove submenus. The name can be, but
 doesn't have to be terminated with a '/'. If you have not removed
 the subitems of this menu, it will still be shown but without it's
 title or icon. So make sure to first remove any items and submenus
 before calling this function.</p>
</text></doc>
<method name='unregister_callback_dir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppletWidget.pike' first-line='230'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppletWidget'>Gnome.AppletWidget</object></returntype>
</method>
</docgroup>
</class>

<class name='Less'><doc><text><p>This widget implements a graphical "more" command. It allows the
 user to view a text file. There are various possible ways to
 specify the contents to display: loading the data from a file (by
 providing a filename) or by loading it from an open file data
 stream or from the output of a Unix command.</p>
<p><expr> Gnome.Less()-&gt;show_string("Example string\nshown in this\nwidget")</expr>
<image file='predef.Gnome.Less.1.png' width='315' height='116'>../images/gnome_less.png</image></p>
<p><expr> Gnome.Less()-&gt;show_file("/usr/dict/words" );</expr>
<image file='predef.Gnome.Less.2.png' width='315' height='116'>../images/gnome_less_2.png</image></p>
<p><expr> Gnome.Less()-&gt;show_command( "psrinfo -v" )</expr>
<image file='predef.Gnome.Less.3.png' width='315' height='116'>../images/gnome_less_3.png</image></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='20'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Clears all the text</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='22'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GnomeLess widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='27'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reshow' homogen-type='method'><doc><text><p>Re-displays all of the text in the GnomeLess widget gl. If the font
 has changed since the last show/reshow of text, it will update the
 current text to the new font.</p>
</text></doc>
<method name='reshow'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='32'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_fixed_font' homogen-type='method'><doc><text><p>Specifies whether or not new text should be displayed using a fixed
 font. Pass TRUE in fixed to use a fixed font, or FALSE to revert to
 the default GtkText font.</p>
<p> Note: This will not affect text already being displayed. If you use
 this function after adding text to the widget, you must show it
 again by using gnome_less_reshow or one of the gnome_less_show
 commands.</p>
</text></doc>
<method name='set_fixed_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='39'/>
<arguments><argument name='fixed'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_font' homogen-type='method'><doc><text><p>Sets the font of the text to be displayed in the GnomeLess widget
 gl to font.
 Note: This will not affect text already being displayed. If you use
 this function after adding text to the widget, you must show it
 again by using reshow or one of the show commands.</p>
</text></doc>
<method name='set_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='51'/>
<arguments><argument name='font'><type><object resolved='predef::GDK.Font'>GDK.Font</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_command' homogen-type='method'><doc><text><p>Runs the shell command specified in command_line, and places the
 output of that command in the GnomeLess widget specified by
 gl. Replaces any text already being displayed in the widget.</p>
</text></doc>
<method name='show_command'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='60'/>
<arguments><argument name='command_line'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_file' homogen-type='method'><doc><text><p>Displays a file in a GnomeLess widget. Replaces any text already
 being displayed in the widget.</p>
</text></doc>
<method name='show_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='67'/>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_filestream' homogen-type='method'><doc/>
<method name='show_filestream'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='73'/>
<arguments><argument name='stream'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_string' homogen-type='method'><doc><text><p>Displays a string in the GnomeLess widget gl. Replaces any text
 already being displayed.</p>
</text></doc>
<method name='show_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='76'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Less'>Gnome.Less</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_file' homogen-type='method'><doc><text><p>Writes the text displayed in the GnomeLess widget gl to the file
 specified by path.</p>
</text></doc>
<method name='write_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='82'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write_filestream' homogen-type='method'><doc/>
<method name='write_filestream'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Less.pike' first-line='88'/>
<arguments><argument name='fd'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='DruidPageFinish'><doc><text><p>This is a W(GnomeDruidPage).</p>
</text></doc><docgroup homogen-name='DruidPage' homogen-type='inherit'><doc>
</doc>
<inherit name='DruidPage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='5'/><classname resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.DruidPageStandard widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='7'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bg_color' homogen-type='method'><doc><text><p>This will set the background color to be the specified color.</p>
</text></doc>
<method name='set_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='12'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_bg_color' homogen-type='method'><doc><text><p>This will set the background color of the logo</p>
</text></doc>
<method name='set_logo_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='17'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='22'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text_color' homogen-type='method'><doc><text><p>Set the text color</p>
</text></doc>
<method name='set_text_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='27'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_textbox_color' homogen-type='method'><doc><text><p>This will set the textbox color to be the specified color.</p>
</text></doc>
<method name='set_textbox_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='32'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the title</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='37'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title_color' homogen-type='method'><doc><text><p>Set the title color</p>
</text></doc>
<method name='set_title_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageFinish.pike' first-line='42'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageFinish'>Gnome.DruidPageFinish</object></returntype>
</method>
</docgroup>
</class>

<class name='IconList'><doc><text><p>The GNOME icon list widget can hold a number of icons with
 captions. The icons on the list can be selected (various selection
 methods are supported). The programmer can enable caption-editing
 for the icons. This parameters is configured when you create the
 icon list widget.
  You can control the type of selection mode you desire by using
 the set_selection_mode() function.</p>
<p>  Signals:
 <b>select_icon</b></p>
<p> <b>text_changed</b></p>
<p> <b>unselect_icon</b></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='18'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Appends an icon to the specified icon list. The icon's image is
 loaded from the specified file, and it is inserted at the pos
 index.</p>
</text></doc>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='20'/>
<arguments><argument name='icon_filename'><type><string/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Clears the contents for the icon list by removing all the icons. If
 destroy handlers were specified for any of the icons, they will be
 called with the appropriate data.</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='27'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new icon list widget. The icon columns are allocated a
 width of icon_width pixels. Icon captions will be word-wrapped to
 this width as well.</p>
<p> If flags has the Gnome.IconListIsEditable flag set, then the
 user will be able to edit the text in the icon captions, and the
 "text_changed" signal will be emitted when an icon's text is
 changed.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='34'/><modifiers><static/></modifiers>
<arguments><argument name='icon_widt'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_icon_from_data' homogen-type='method'><doc><text><p>Find a icon in the list that has the given user data.  If no icon is
 found, -1 is returned.</p>
</text></doc>
<method name='find_icon_from_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='46'/>
<arguments><argument name='data'><type><object resolved='predef::Gnome.IconList.find_icon_from_data'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='freeze' homogen-type='method'><doc><text><p>Freezes an icon list so that any changes made to it will not be
 reflected on the screen until it is thawed with thaw(). It is
 recommended to freeze the icon list before inserting or deleting
 many icons, for example, so that the layout process will only be
 executed once, when the icon list is finally thawed.</p>
<p> You can call this function multiple times, but it must be balanced
 with the same number of calls to thaw() before the changes will
 take effect.</p>
</text></doc>
<method name='freeze'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='52'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_icon_at' homogen-type='method'><doc><text><p>Returns the index of the icon that is under the specified
 coordinates, which are relative to the icon list's window. If there
 is no icon in that position, -1 is returned.</p>
</text></doc>
<method name='get_icon_at'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='65'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_icon_data' homogen-type='method'><doc><text><p>Return the data associated with a icon, or 0.</p>
</text></doc>
<method name='get_icon_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='72'/>
<arguments><argument name='icon'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList.get_icon_data'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selected_icons' homogen-type='method'><doc><text><p>Return an array with the currently selected icons</p>
</text></doc>
<method name='get_selected_icons'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='77'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='icon_is_visible' homogen-type='method'><doc><text><p>returns 1 if the icon whose index is pos is visible.</p>
</text></doc>
<method name='icon_is_visible'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='82'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>Inserts an icon in the specified icon list. The icon's image is
  loaded from the specified file, and it is inserted at the pos
  index.</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='87'/>
<arguments><argument name='pos'><type><int/></type></argument><argument name='icon_filename'><type><string/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='moveto' homogen-type='method'><doc><text><p>Makes the icon whose index is pos be visible on the screen. The
 icon list gets scrolled so that the icon is visible. An alignment
 of 0.0 represents the top of the visible part of the icon list, and
 1.0 represents the bottom. An icon can be centered on the icon
 list using 0.5 as the yalign.</p>
</text></doc>
<method name='moveto'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='94'/>
<arguments><argument name='pos'><type><int/></type></argument><argument name='yalign'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Removes the icon at index position pos. If a destroy handler was
 specified for that icon, it will be called with the appropriate
 data.</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='103'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_icon' homogen-type='method'><doc><text><p>Selects the specified icon.</p>
</text></doc>
<method name='select_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='110'/>
<arguments><argument name='idx'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_col_spacing' homogen-type='method'><doc><text><p>Sets the spacing to be used between columns of icons.</p>
</text></doc>
<method name='set_col_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='115'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_hadjustment' homogen-type='method'><doc><text><p>Sets the adjustment to be used for horizontal scrolling.  This is
  normally not required, as the icon list can be simply inserted in
  a W(ScrolledWindow) and scrolling will be handled automatically.</p>
</text></doc>
<method name='set_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='120'/>
<arguments><argument name='hadj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon_border' homogen-type='method'><doc><text><p>Set the width of the border to be displayed around an icon's image.
 This is currently not implemented.</p>
</text></doc>
<method name='set_icon_border'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='127'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon_data' homogen-type='method'><doc><text><p>Set the user data associated with the specified icon.
 This data can be used to find icons, and when an icon is selected it
 can be easily retrieved using get_icon_data.</p>
<p> <b>You can only use objects as icon data right now</b></p>
</text></doc>
<method name='set_icon_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='133'/>
<arguments><argument name='icon'><type><int/></type></argument><argument name='data'><type><object resolved='predef::Gnome.IconList.set_icon_data'/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon_width' homogen-type='method'><doc><text><p>Sets the amount of horizontal space allocated to the icons,
 i.e. the column width of the icon list</p>
</text></doc>
<method name='set_icon_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='142'/>
<arguments><argument name='w'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_spacing' homogen-type='method'><doc><text><p>Sets the spacing to be used between rows of icons.</p>
</text></doc>
<method name='set_row_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='148'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_selection_mode' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SELECTION_BROWSE'>SELECTION_BROWSE</ref>, <ref resolved='predef::GTK.SELECTION_EXTENDED'>SELECTION_EXTENDED</ref>, <ref resolved='predef::GTK.SELECTION_MULTIPLE'>SELECTION_MULTIPLE</ref> and <ref resolved='predef::GTK.SELECTION_SINGLE'>SELECTION_SINGLE</ref>.</p>
</text></doc>
<method name='set_selection_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='153'/>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_separators' homogen-type='method'><doc><text><p>Set the characters that can be used as word separators when doing
 word-wrapping of the text captions.</p>
</text></doc>
<method name='set_separators'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='158'/>
<arguments><argument name='sep'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text_spacing' homogen-type='method'><doc><text><p>Sets the spacing to be used between the icon and its caption</p>
</text></doc>
<method name='set_text_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='164'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vadjustment' homogen-type='method'><doc><text><p>Sets the adjustment to be used for vertical scrolling.  This is
  normally not required, as the icon list can be simply inserted in
  a W(ScrolledWindow) and scrolling will be handled automatically.</p>
</text></doc>
<method name='set_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='169'/>
<arguments><argument name='hadj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thaw' homogen-type='method'><doc><text><p>Unfreeze the icon list</p>
</text></doc>
<method name='thaw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='176'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect_all' homogen-type='method'><doc><text><p>Unselect all icons.</p>
</text></doc>
<method name='unselect_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='181'/>
<arguments/>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect_icon' homogen-type='method'><doc><text><p>Unselects the specified icon.</p>
</text></doc>
<method name='unselect_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/IconList.pike' first-line='186'/>
<arguments><argument name='idx'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.IconList'>Gnome.IconList</object></returntype>
</method>
</docgroup>
</class>

<class name='DockLayout'><doc><text><p>The Gnome.DockLayout widget is meant to make it simple for
 programmers to handle the layout of a GnomeDock widget.</p>
<p>  Gnome.DockLayout can contain an arbitrary number of W(Gnome.DockItem)
  widgets, each of them with its own placement information. It is
  possible to "extract" a layout from an existing W(GnomeDock)
  widget, as well as adding the items present in a Gnome.DockLayout
  to it. Moreover, Gnome.DockLayout is able to create a layout
  configuration string that can be later used to re-construct the
  layout on a brand new Gnome.DockLayout widget.</p>
<p> As a consequence, Gnome.DockLayout is very useful to save and
 retrieve W(GnomeDock) configurations into files. For example,
 W(GnomeApp) uses Gnome.DockLayout to create a default layout
 configuration, override it with the user-specific configuration
 file, and finally apply it to it's W(GnomeDock).</p>
</text></doc><docgroup homogen-name='Object' homogen-type='inherit'><doc>
</doc>
<inherit name='Object'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='21'/><classname resolved='predef::GTK.Object'>GTK.Object</classname></inherit>
</docgroup>
<docgroup homogen-name='add_floating_item' homogen-type='method'><doc><text><p>Add item to the layout as a floating item with the specified (x, y)
 position and orientation.</p>
</text></doc>
<method name='add_floating_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='23'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='orientation'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Add item to the layout with the specified parameters.</p>
</text></doc>
<method name='add_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='29'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument><argument name='band_position'><type><int/></type></argument><argument name='offset'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_to_dock' homogen-type='method'><doc><text><p>Add all the items in this layout to the specified dock</p>
</text></doc>
<method name='add_to_dock'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='34'/>
<arguments><argument name='dock'><type><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new Gnome.DockLayout widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='39'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.DockLayout'>Gnome.DockLayout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_string' homogen-type='method'><doc><text><p>Generate a string describing the layout</p>
</text></doc>
<method name='create_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='44'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_item' homogen-type='method'><doc><text><p>Retrieve a dock layout item.</p>
</text></doc>
<method name='get_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='49'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockLayoutItem'>Gnome.DockLayoutItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_item_by_name' homogen-type='method'><doc><text><p>Retrieve the dock layout item named name</p>
</text></doc>
<method name='get_item_by_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='54'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockLayoutItem'>Gnome.DockLayoutItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_string' homogen-type='method'><doc><text><p>Parse the layout string str, and move around the items in layout
 accordingly.</p>
</text></doc>
<method name='parse_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='59'/>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockLayout'>Gnome.DockLayout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_item' homogen-type='method'><doc><text><p>Remove the specified item from the layout.</p>
</text></doc>
<method name='remove_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='65'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_item_by_name' homogen-type='method'><doc><text><p>Remove the specified item from the layout.</p>
</text></doc>
<method name='remove_item_by_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayout.pike' first-line='70'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='PaperSelector'><doc><text><p><expr> Gnome.PaperSelector()</expr>
<image file='predef.Gnome.PaperSelector.1.png' width='290' height='117'>../images/gnome_paperselector.png</image></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='7'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='9'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.PaperSelector'>Gnome.PaperSelector</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bottom_margin' homogen-type='method'><doc/>
<method name='get_bottom_margin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='12'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_height' homogen-type='method'><doc/>
<method name='get_height'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='15'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_left_margin' homogen-type='method'><doc/>
<method name='get_left_margin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='18'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_name' homogen-type='method'><doc/>
<method name='get_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='21'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_right_margin' homogen-type='method'><doc/>
<method name='get_right_margin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='24'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_top_margin' homogen-type='method'><doc/>
<method name='get_top_margin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='27'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_width' homogen-type='method'><doc/>
<method name='get_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PaperSelector.pike' first-line='30'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
</class>

<class name='NumberEntry'><doc><text><p>Provides an entry line for numbers. This routine does not attempt
  to do any validation on the valid number ranges, but provides a
  button that will let the user bring up a calculator to fill in the
  value of the entry widget.
<expr> Gnome.NumberEntry("", "Select a number...");</expr>
<image file='predef.Gnome.NumberEntry.1.png' width='243' height='19'>../images/gnome_numberentry.png</image></p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='11'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new number entry widget, with a history id and title for
 the calculator dialog.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='13'/><modifiers><static/></modifiers>
<arguments><argument name='history_id'><type><string/></type></argument><argument name='calc_dialog_title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.NumberEntry'>Gnome.NumberEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_number' homogen-type='method'><doc><text><p>Get the current number from the entry</p>
</text></doc>
<method name='get_number'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='19'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_entry' homogen-type='method'><doc><text><p>Get the W(GnomeEntry) component of the Gnome.NumberEntry for
 lower-level manipulation.</p>
</text></doc>
<method name='gnome_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gtk_entry' homogen-type='method'><doc><text><p>Get the W(Entry) component of the Gnome.NumberEntry for Gtk+-level
 manipulation.</p>
</text></doc>
<method name='gtk_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='30'/>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the title of the calculator dialog to calc_dialog_title. Takes
 effect the next time the calculator button is pressed.</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/NumberEntry.pike' first-line='36'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.NumberEntry'>Gnome.NumberEntry</object></returntype>
</method>
</docgroup>
</class>

<class name='Entry'><doc><text><p>This widget is a wrapper around the GtkEntry widget, but it
 provides a history mechanism for all the input entered into the
 widget. The way this works is that a special identifier is provided
 when creating the GnomeEntry widget, and this identifier is used to
 load and save the history of the text.</p>
<p><expr> Gnome.Entry( "history" )</expr>
<image file='predef.Gnome.Entry.1.png' width='175' height='19'>../images/gnome_entry.png</image></p>
</text></doc><docgroup homogen-name='Combo' homogen-type='inherit'><doc>
</doc>
<inherit name='Combo'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='14'/><classname resolved='predef::GTK.Combo'>GTK.Combo</classname></inherit>
</docgroup>
<docgroup homogen-name='append_history' homogen-type='method'><doc><text><p>Adds a history item of the given text to the tail of the history
 list inside gentry. If save is TRUE, the history item will be saved
 in the config file (assuming that gentry's history id is not 0).</p>
</text></doc>
<method name='append_history'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='16'/>
<arguments><argument name='save'><type><int/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GnomeEntry widget. If history_id is not 0, then
 the history list will be saved and restored between uses under the
 given id.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='23'/><modifiers><static/></modifiers>
<arguments><argument name='history_id'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gtk_entry' homogen-type='method'><doc><text><p>Obtain pointer to Gnome.Entry's internal GTK.Entry text entry</p>
</text></doc>
<method name='gtk_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='30'/>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='load_history' homogen-type='method'><doc><text><p>Loads a stored history list from the GNOME config file, if one is
 available. If the history id of gentry is 0, nothing occurs.</p>
</text></doc>
<method name='load_history'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='35'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_history' homogen-type='method'><doc><text><p>Adds a history item of the given text to the head of the history
 list inside gentry. If save is TRUE, the history item will be saved
 in the config file (assuming that gentry's history id is not 0).</p>
</text></doc>
<method name='prepend_history'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='41'/>
<arguments><argument name='save'><type><int/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='save_history' homogen-type='method'><doc><text><p>Force the history items of the widget to be stored in a
 configuration file. If the history id of gentry is 0, nothing
 occurs.</p>
</text></doc>
<method name='save_history'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='48'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_history_id' homogen-type='method'><doc><text><p>Set or clear the history id of the GnomeEntry widget. If history_id
 is 0, the widget's history id is cleared. Otherwise, the given
 id replaces the previous widget history id.</p>
</text></doc>
<method name='set_history_id'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Entry.pike' first-line='55'/>
<arguments><argument name='history_id'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
</class>

<class name='ColorPicker'><doc><text><p>This widget provides color selection facilities to your
 application. The widget appears as a button which contains a "color
 swatch" of the currently selected color. When the button is
 pressed, the widget presents the user with a color selection dialog
 where the color can be selected.</p>
<p> You can select the color to be displayed in a number of ways:
 floating point values for the red, green and blue channels,
 integers in the range 0 to 65,535, or integers in the range 0 to
 255, depending on your needs.
<expr> Gnome.ColorPicker();</expr>
<image file='predef.Gnome.ColorPicker.1.png' width='32' height='24'>../images/gnome_colorpicker.png</image></p>
<p>  Signals:
 <b>color_set</b>
 This signal is emitted when the user changes the color on the color
 selector. The values passed to this signal are the red, green, blue
 and alpha channels selected in integer form in the range 0 to
 65535.</p>
</text></doc><docgroup homogen-name='Button' homogen-type='inherit'><doc>
</doc>
<inherit name='Button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='26'/><classname resolved='predef::GTK.Button'>GTK.Button</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GNOME color picker widget. This returns a widget in
 the form of a small button containing a swatch representing the
 current selected color. When the button is clicked, a
 color-selection dialog will open, allowing the user to select a
 color. The swatch will be updated to reflect the new color when the
 user finishes.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='28'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Returns a mapping ([ "d":([ "r":rvalue, "g":gvalue, "b":bvalue,
 "a":avalue ]), "i8":([ ... ]), "i16":([ .. ]) ]);</p>
</text></doc>
<method name='get'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='38'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_d' homogen-type='method'><doc><text><p>Set color shown in the color picker widget using floating point values.
 The values range between 0.0 and 1.0.</p>
</text></doc>
<method name='set_d'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='44'/>
<arguments><argument name='r'><type><float/></type></argument><argument name='g'><type><float/></type></argument><argument name='b'><type><float/></type></argument><argument name='a'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_dither' homogen-type='method'><doc><text><p>Sets whether the picker should dither the color sample or just
 paint a solid rectangle.</p>
</text></doc>
<method name='set_dither'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='50'/>
<arguments><argument name='dither'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_i16' homogen-type='method'><doc><text><p>Set color shown in the color picker widget using integer values.
 The values range between 0 and 65535.</p>
</text></doc>
<method name='set_i16'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='56'/>
<arguments><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_i8' homogen-type='method'><doc><text><p>Set color shown in the color picker widget using integer values.
 The values range between 0 and 255.</p>
</text></doc>
<method name='set_i8'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='62'/>
<arguments><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Sets the title for the color selection dialog</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='68'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_use_alpha' homogen-type='method'><doc><text><p>Sets whether or not the picker should use the alpha channel.</p>
</text></doc>
<method name='set_use_alpha'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/ColorPicker.pike' first-line='73'/>
<arguments><argument name='use_alpha'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.ColorPicker'>Gnome.ColorPicker</object></returntype>
</method>
</docgroup>
</class>

<class name='Scores'><doc><text><p>This is a high-scores dialog box. The GNOME libraries also handle
 loading/saving systemwide high scores in a secure way.</p>
<p><expr> Gnome.Scores( 17, ({ "per" })*17, map((array(float))indices(allocate(17)),`*,42), map(indices(allocate(17)), `*, 10 ), 1 )</expr>
<image file='predef.Gnome.Scores.1.png' width='250' height='402'>../images/gnome_scores.png</image></p>
</text></doc><docgroup homogen-name='Dialog' homogen-type='inherit'><doc>
</doc>
<inherit name='Dialog'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='11'/><classname resolved='predef::Gnome.Dialog'>Gnome.Dialog</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='13'/><modifiers><static/></modifiers>
<arguments><argument name='n_scores'><type><int/></type></argument><argument name='names'><type><array/></type></argument><argument name='scores'><type><array/></type></argument><argument name='times'><type><array/></type></argument><argument name='clear'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_color' homogen-type='method'><doc/>
<method name='set_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='16'/>
<arguments><argument name='pos'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_current_player' homogen-type='method'><doc/>
<method name='set_current_player'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='19'/>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_def_color' homogen-type='method'><doc/>
<method name='set_def_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='22'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_label_title' homogen-type='method'><doc/>
<method name='set_logo_label_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='25'/>
<arguments><argument name='txt'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_pixmap' homogen-type='method'><doc/>
<method name='set_logo_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='28'/>
<arguments><argument name='logofile'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_widget' homogen-type='method'><doc/>
<method name='set_logo_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Scores.pike' first-line='31'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Scores'>Gnome.Scores</object></returntype>
</method>
</docgroup>
</class>

<class name='Dock'><doc><text><p>GnomeDock is a container widget designed to let users move around
 widgets such as toolbars, menubars and so on.</p>
<p> Every GnomeDock contains a widget called the "client area". On the
 four sides of the client area, there are four "dock areas", which
 can contain an arbitrary number of dockable widgets. All the
 dockable widgets should be GnomeDockItem widgets; the GnomeDockItem
 widget can in turn contain any kind of widget, and implements the
 dragging functionality: every GnomeDockItem has a handle that users
 can use to move them within the dock, or even move them outside it,
 so that they become "floating items".</p>
<p> Every "dock area" is implemented by means of zero or more "dock
 bands": a dock band is a horizontal or vertical stripe containing
 one or more dock items, and is implemented by the GnomeDockBand
 widget. Items are ordered from top to bottom in vertical bands, and
 from left to right in horizontal bands. Every dock item in a band
 is given an offset value that defines the distance, in pixels, from
 the previous item in the same band; if the item is first in the
 band, the offset defines the distance from the start of the band.</p>
<p> As a consequence, the position of an item in the dock can be
 specified by means of the following values: a "placement"
 specifying what area is being used (top, bottom, left, right), a
 "band number" specifying the number of the band within the
 specified area, a "position" within the band and a "offset" from
 the previous item in the same band.</p>
<p>  Signals:
 <b>layout_changed</b></p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='35'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='add_floating_item' homogen-type='method'><doc><text><p>Add item to dock and make it floating at the specified (x, y)
 coordinates (relative to the root window of the screen).</p>
</text></doc>
<method name='add_floating_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='37'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='orientation'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_item' homogen-type='method'><doc><text><p>Add item to dock. placement can be either Gnome.DOCK_TOP,
  Gnome.DOCK_RIGHT, Gnome.DOCK_BOTTOM or Gnome.DOCK_LEFT, and
  specifies what area of the dock should contain the item. If
  in_new_band is TRUE, a new dock band is created at the position
  specified by band_num; otherwise, the item is added to the
  band_num'th band.</p>
</text></doc>
<method name='add_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='43'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument><argument name='position'><type><int/></type></argument><argument name='offset'><type><int/></type></argument><argument name='new_band'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='allow_floating_items' homogen-type='method'><doc/>
<method name='allow_floating_items'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='53'/>
<arguments><argument name='allow'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='56'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_client_area' homogen-type='method'><doc/>
<method name='get_client_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='59'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_item_by_name' homogen-type='method'><doc/>
<method name='get_item_by_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='62'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_client_area' homogen-type='method'><doc><text><p>Specify a widget for the dock's client area.</p>
</text></doc>
<method name='set_client_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dock.pike' first-line='65'/>
<arguments><argument name='area'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
</class>

<class name='Druid'><doc><text><p>The GNOME druid is a system for assisting the user with installing
 a service. It is roughly equivalent in functionality to the
 "Wizards" available in Windows.</p>
<p> There are two major parts of the druid, the Gnome.Druid widget, and
 the set of W(Gnome.DruidPage) widgets. The Gnome.Druid widget is the
 main widget that interacts with the user. It has a Next, a Prev,
 and a Cancel button, and acts as a container for the pages. It is
 not a top-level window, so it needs to be put in a W(GTK.Window) in
 almost all cases. The W(Gnome.DruidPage) is a virtual widget, from
 which all of the actual content of the page inherits from. There
 are currently three of these available within gnome-libs.</p>
<p> GNOME druids are fairly simple to program with. You start by
 creating a GnomeDruid into which you put all of your pages. This
 widget will handle the presentation of the W(GnomeDruidPage) widgets.</p>
<p> You then create all appropriate W(GnomeDruidPage) widgets. There
 are three implementations of these, although there is no reason why
 more couldn't be written. They are the W(GnomeDruidPageStart), the
 W(GnomeDruidPageStandard), and the W(GnomeDruidPageFinish). The
 W(GnomeDruidPageStandard) acts as a W(Container), and is probably
 the most commonly used druid page. The other ones, as their names
 might suggest, are used at the endpoints of the druid. More
 information on the specific properties of these widgets can be
 found on their respective pages.</p>
<p> You will need to add the pages to the druid in order for them to
 appear. The druid itself keeps an internal list of all pages, and
 using the prepend_page(), append_page(), and insert_page()
 functions will place them into it.</p>
<p>  Signals:
 <b>cancel</b>
 This signal is emitted when the "cancel" button has been
 pressed. Note that the current druid page has the option to trap
 the signal and use it, if need be, preventing this signal from
 being emitted.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='44'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='append_page' homogen-type='method'><doc><text><p>This will append a GnomeDruidPage into the internal list of pages
 that the druid has.</p>
</text></doc>
<method name='append_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='46'/>
<arguments><argument name='page'><type><object resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new druid</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='52'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_page' homogen-type='method'><doc><text><p>This will insert page after back_page into the list of internal
 pages that the druid has. If back_page is not present in the list
 or is 0, page will be prepended to the list.</p>
</text></doc>
<method name='insert_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='57'/>
<arguments><argument name='back_page'><type><object resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</object></type></argument><argument name='page'><type><object resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_page' homogen-type='method'><doc><text><p>This will prepend a GnomeDruidPage into the internal list of pages
 that the druid has.</p>
</text></doc>
<method name='prepend_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='64'/>
<arguments><argument name='page'><type><object resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_buttons_sensitive' homogen-type='method'><doc><text><p>Sets the sensitivity of the druid's control-buttons. If the
 variables are TRUE, then they will be clickable. This function is
 used primarily by the actual W(GnomeDruidPage) widgets.</p>
</text></doc>
<method name='set_buttons_sensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='70'/>
<arguments><argument name='beck_sensitive'><type><int/></type></argument><argument name='next_sensitive'><type><int/></type></argument><argument name='cancel_sensitive'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_page' homogen-type='method'><doc><text><p>This will make page the currently showing page in the druid. page
 must already be in the druid.</p>
</text></doc>
<method name='set_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='77'/>
<arguments><argument name='page'><type><object resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_finish' homogen-type='method'><doc><text><p>Sets the text on the last button on the druid. If show_finish is
  TRUE, then the text becomes "Finish". If show_finish is FALSE,
  then the text becomes "Cancel".</p>
</text></doc>
<method name='set_show_finish'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Druid.pike' first-line='83'/>
<arguments><argument name='show_finish'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Druid'>Gnome.Druid</object></returntype>
</method>
</docgroup>
</class>

<class name='Calculator'><doc><text><p>This widget provides a simple calculator that you can embed in your
 applications for doing quick computations.</p>
<p> The widget consists of a fully functional calculator including
 standard arithmetic functions as well as trigonometric
 capabilities, exponents, factorials, nested equations, and others.
<expr> Gnome.Calculator()</expr>
<image file='predef.Gnome.Calculator.1.png' width='260' height='214'>../images/gnome_calculator.png</image></p>
<p>  Signals:
 <b>result_changed</b>
 This signal is emited by the widget when the result has been changed.</p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Calculator.pike' first-line='19'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Resets the calculator back to zero. If reset is TRUE, results
 stored in memory and the calculator mode are cleared also.</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Calculator.pike' first-line='21'/>
<arguments><argument name='reset'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Calculator'>Gnome.Calculator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new calculator widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Calculator.pike' first-line='27'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.Calculator'>Gnome.Calculator</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_result' homogen-type='method'><doc><text><p>Value currently stored in calculator buffer.</p>
</text></doc>
<method name='get_result'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Calculator.pike' first-line='32'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Sets the value stored in the calculator's result buffer to the
 given result.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Calculator.pike' first-line='37'/>
<arguments><argument name='result'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Calculator'>Gnome.Calculator</object></returntype>
</method>
</docgroup>
</class>

<class name='PixmapEntry'><doc><text><p>Entry for large images with a preview. Unlike GnomeIconEntry, it
 does not scale the images to a specific size and shows them
 1:1. This is perfect for selection of backgrounds and such. It also
 allows DND to be performed on the preview box. It also provides all
 the GnomeEntry functionality as well.
<expr> Gnome.PixmapEntry("","browse...",1);</expr>
<image file='predef.Gnome.PixmapEntry.1.png' width='228' height='123'>../images/gnome_pixmapentry.png</image></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='12'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new pixmap entry widget, if do_preview is false, the
 preview is hidden but the files are still loaded so that it's easy
 to show it. For a pixmap entry without preview, use the
 W(GnomeFileEntry) widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments><argument name='history_id'><type><string/></type></argument><argument name='browse_dialog_title'><type><string/></type></argument><argument name='do_preview'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.PixmapEntry'>Gnome.PixmapEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_filename' homogen-type='method'><doc><text><p>Gets the filename of the image if the preview successfully loaded.</p>
</text></doc>
<method name='get_filename'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='22'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_entry' homogen-type='method'><doc><text><p>Get the W(GnomeEntry) component of the W(GnomePixmapEntry) widget
 for lower-level manipulation.</p>
</text></doc>
<method name='gnome_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='27'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Entry'>Gnome.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_file_entry' homogen-type='method'><doc><text><p>Get the W(GnomeFileEntry) component of the W(GnomePixmapEntry)
 widget for lower-level manipulation.</p>
</text></doc>
<method name='gnome_file_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='33'/>
<arguments/>
<returntype><object resolved='predef::Gnome.FileEntry'>Gnome.FileEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixmap_subdir' homogen-type='method'><doc><text><p>Sets the default path for the file entry. The new subdirectory
 should be specified relative to the default GNOME pixmap directory.</p>
</text></doc>
<method name='set_pixmap_subdir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='39'/>
<arguments><argument name='dir'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.PixmapEntry'>Gnome.PixmapEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_preview' homogen-type='method'><doc><text><p>Sets whether or not previews of the currently selected pixmap
 should be shown in the file selector.</p>
</text></doc>
<method name='set_preview'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='45'/>
<arguments><argument name='do_preview'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.PixmapEntry'>Gnome.PixmapEntry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_preview_size' homogen-type='method'><doc><text><p>Sets the minimum size of the preview frame in pixels.</p>
</text></doc>
<method name='set_preview_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PixmapEntry.pike' first-line='51'/>
<arguments><argument name='min_w'><type><int/></type></argument><argument name='min_h'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.PixmapEntry'>Gnome.PixmapEntry</object></returntype>
</method>
</docgroup>
</class>

<class name='Dialog'><doc><text><p>Gnome.Dialog gives dialogs a consistent look and feel, while making
 them more convenient to program. Gnome.Dialog makes it easy to use
 stock buttons, makes it easier to handle delete_event, and adds
 some cosmetic touches (such as a separator above the buttons, and a
 bevel around the edge of the window).</p>
<p>  Signals:
 <b>clicked</b></p>
<p> <b>close</b></p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='14'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='append_button_with_pixmap' homogen-type='method'><doc/>
<method name='append_button_with_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='16'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='pixmap_file'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='button_connect' homogen-type='method'><doc><text><p>Simply a signal_connect to the "clicked" signal of the specified button.</p>
</text></doc>
<method name='button_connect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='19'/>
<arguments><argument name='button'><type><int/></type></argument><argument name='callback_cb'><type><function/></type></argument><argument name='callback_arg'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>See also close_hides(). This function emits the "close" signal(
 which either hides or destroys the dialog (destroy by default). If
 you connect to the "close" signal, and your callback returns TRUE,
 the hide or destroy will be blocked. You can do this to avoid
 closing the dialog if the user gives invalid input, for example.</p>
<p> Using close() in place of hide() or destroy() allows you to easily
 catch all sources of dialog closure, including delete_event and
 button clicks, and handle them in a central location.</p>
</text></doc>
<method name='close'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.Dialog, with the given title, and any button
 names in the arg list. Buttons can be simple names, such as "My
 Button", or gnome-stock defines such as GNOME.StockButtonOK,
 etc. The last argument should be NULL to terminate the list.</p>
<p> Buttons passed to this function are numbered from left to right,
 starting with 0. So the first button in the arglist is button 0,
 then button 1, etc. These numbers are used throughout the
 Gnome.Dialog API.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='37'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><string/></type></argument><argument name='buttons'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='editable_enters' homogen-type='method'><doc><text><p>Normally if there's an editable widget (such as GtkEntry) in your
 dialog, pressing Enter will activate the editable rather than the
 default dialog button. However, in most cases, the user expects to
 type something in and then press enter to close the dialog. This
 function enables that behavior.</p>
</text></doc>
<method name='editable_enters'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='51'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Editable'>GTK.Editable</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vbox' homogen-type='method'><doc/>
<method name='get_vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='60'/>
<arguments/>
<returntype><object resolved='predef::GTK.Vbox'>GTK.Vbox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='run' homogen-type='method'><doc><text><p>Blocks until the user clicks a button or closes the dialog with
 the window manager's close decoration (or by pressing Escape).</p>
<p> You need to set up the dialog to do the right thing when a button
 is clicked or delete_event is received; you must consider both of
 those possibilities so that you know the status of the dialog when
 run() returns. A common mistake is to forget about Escape and the
 window manager close decoration; by default, these call close(),
 which by default destroys the dialog. If your button clicks do not
 destroy the dialog, you don't know whether the dialog is destroyed
 when run() returns. This is bad.</p>
<p> So you should either close the dialog on button clicks as well, or
 change the close() behavior to hide instead of destroy. You can do
 this with close_hides().</p>
</text></doc>
<method name='run'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='63'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='run_and_close' homogen-type='method'><doc><text><p>See run(). The only difference is that this function calls close()
 before returning if the dialog was not already closed.</p>
</text></doc>
<method name='run_and_close'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='83'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_accelerator' homogen-type='method'><doc/>
<method name='set_accelerator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='89'/>
<arguments><argument name='button'><type><int/></type></argument><argument name='accelerator_key'><type><int/></type></argument><argument name='accelerator_mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_close' homogen-type='method'><doc><text><p>This is a convenience function so you don't have to connect
 callbacks to each button just to close the dialog. By default,
 Gnome.Dialog has this parameter set the FALSE and it will not close
 on any click. (This was a design error.) However, almost all the
 Gnome.Dialog subclasses, such as Gnome.MessageBox and
 Gnome.PropertyBox, have this parameter set to TRUE by default.</p>
</text></doc>
<method name='set_close'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='92'/>
<arguments><argument name='click_closes'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default' homogen-type='method'><doc><text><p>The default button will be activated if the user just presses
 return. Usually you should make the least-destructive button the
 default. Otherwise, the most commonly-used button.</p>
</text></doc>
<method name='set_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='102'/>
<arguments><argument name='button'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_parent' homogen-type='method'><doc><text><p>Dialogs have "parents," usually the main application window which
 spawned them. This function will let the window manager know about
 the parent-child relationship. Usually this means the dialog must
 stay on top of the parent, and will be minimized when the parent
 is. Gnome also allows users to request dialog placement above the
 parent window (vs. at the mouse position, or at a default window
 manger location).</p>
</text></doc>
<method name='set_parent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='109'/>
<arguments><argument name='parent'><type><object resolved='predef::GTK.Window'>GTK.Window</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_sensitive' homogen-type='method'><doc><text><p>Calls set_sensitive() on the specified button number.</p>
</text></doc>
<method name='set_sensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Dialog.pike' first-line='120'/>
<arguments><argument name='button'><type><int/></type></argument><argument name='sensitive'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
</class>

<class name='App'><doc><text><p>Toplevel GNOME applications would normally use one Gnome.App widget
 as their toplevel window. You can create as many Gnome.App widgets
 as you want, for example, some people use one GnomeApp per document
 their application loads.</p>
<p> Once you have created one instance of this widget, you would add
 your main application view information to this window by using
 set_contents() routine.</p>
<p> The GnomeApp has support for including a menubar, one or more
 toolbars and a statusbar for your application. It also takes care
 of intalling the accelerators for you when used in conjuction with
 the gnome-app-helper routines. The toolbars are inserted into
 Gnome.Dock widgets.</p>
<p> The gnome-app-helper module provides various helper routines to
 simplify the configuration of your menus and toolbars, but you can
 create those yourself and use the set_menus(), add_toolbar(),
 set_toolbar(), add_dock_item() and add_docked().</p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='23'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='add_dock_item' homogen-type='method'><doc><text><p>Create a new Gnome.DockItem widget containing widget, and add it
 to app's dock with the specified layout information. Notice that,
 if automatic layout configuration is enabled, the layout is
 overridden by the saved configuration, if any.</p>
<p> item : Item to be added to app's dock
 placement :  Placement for the new dock item, one of Gnome.DockTop,  Gnome.DockRight,  Gnome.DockBottom,  Gnome.DockLeft and  Gnome.DockFloating 
 band_num : Number of the band where the dock item should be placed 
 band_position : Position of the new dock item in band band_num
 offset : Offset from the previous dock item in the band; if there is no previous item, offset from the beginning of the band.</p>
</text></doc>
<method name='add_dock_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='25'/>
<arguments><argument name='item'><type><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument><argument name='band_position'><type><int/></type></argument><argument name='offset'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_docked' homogen-type='method'><doc><text><p>Create a new Gnome.DockItem widget containing widget, and add it
 to app's dock with the specified layout information. Notice that,
 if automatic layout configuration is enabled, the layout is
 overridden by the saved configuration, if any.</p>
<p> widget : Widget to be added to app's dock
 name : Name for the dock item that will contain toolbar
 behavior : Behavior for the new dock item. One of <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_EXCLUSIVE'>GNOME_DOCK_ITEM_BEH_EXCLUSIVE</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_LOCKED'>GNOME_DOCK_ITEM_BEH_LOCKED</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_FLOATING'>GNOME_DOCK_ITEM_BEH_NEVER_FLOATING</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL'>GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL'>GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL</ref> and <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NORMAL'>GNOME_DOCK_ITEM_BEH_NORMAL</ref>
 placement :  Placement for the new dock item, one of Gnome.DockTop,  Gnome.DockRight,  Gnome.DockBottom,  Gnome.DockLeft and  Gnome.DockFloating 
 band_num : Number of the band where the dock item should be placed 
 band_position : Position of the new dock item in band band_num 
 offset : Offset from the previous dock item in the band; if there is no previous item, offset from the beginning of the band.</p>
</text></doc>
<method name='add_docked'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='41'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='name'><type><string/></type></argument><argument name='behavior'><type><int/></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument><argument name='band_position'><type><int/></type></argument><argument name='offset'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_toolbar' homogen-type='method'><doc><text><p>Create a new Gnome.DockItem widget containing toolbar, and add it
 to app's dock with the specified layout information. Notice that,
 if automatic layout configuration is enabled, the layout is
 overridden by the saved configuration, if any.</p>
<p> toolbar : Toolbar to be added to app's dock
 name : Name for the dock item that will contain toolbar
 behavior : Behavior for the new dock item. One or more of <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_EXCLUSIVE'>GNOME_DOCK_ITEM_BEH_EXCLUSIVE</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_LOCKED'>GNOME_DOCK_ITEM_BEH_LOCKED</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_FLOATING'>GNOME_DOCK_ITEM_BEH_NEVER_FLOATING</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL'>GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL</ref>, <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL'>GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL</ref> and <ref resolved='predef::GTK.GNOME_DOCK_ITEM_BEH_NORMAL'>GNOME_DOCK_ITEM_BEH_NORMAL</ref>
 placement :  Placement for the new dock item, one of Gnome.DockTop,  Gnome.DockRight,  Gnome.DockBottom,  Gnome.DockLeft and  Gnome.DockFloating 
 band_num : Number of the band where the dock item should be placed
 band_position : Position of the new dock item in band band_num
 offset : Offset from the previous dock item in the band; if there is no previous item, offset from the beginning of the band.</p>
</text></doc>
<method name='add_toolbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='59'/>
<arguments><argument name='toolbar'><type><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></type></argument><argument name='name'><type><string/></type></argument><argument name='behavior'><type><int/></type></argument><argument name='placement'><type><int/></type></argument><argument name='band_num'><type><int/></type></argument><argument name='band_position'><type><int/></type></argument><argument name='offset'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new (empty) application window. You must specify the
 application's name (used internally as an identifier). title can be
 left as 0, in which case the window's title will not be set.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='77'/><modifiers><static/></modifiers>
<arguments><argument name='appname'><type><string/></type></argument><argument name='title'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable_layout_config' homogen-type='method'><doc><text><p>Specify whether the the dock's layout configuration should be
 automatically saved via gnome-config whenever it changes, or not.</p>
</text></doc>
<method name='enable_layout_config'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='84'/>
<arguments><argument name='enable'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='error' homogen-type='method'><doc><text><p>An important fatal error; if it appears in the statusbar, it might
 gdk_beep() and require acknowledgement.</p>
</text></doc>
<method name='error'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='90'/>
<arguments><argument name='error'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='flash' homogen-type='method'><doc><text><p>Flash the message in the statusbar for a few moments; if no
 statusbar, do nothing. For trivial little status messages,
 e.g. "Auto saving..."</p>
</text></doc>
<method name='flash'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='96'/>
<arguments><argument name='flash'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dock' homogen-type='method'><doc><text><p>retrieved the Gnome.Dock widget contained in the App</p>
</text></doc>
<method name='get_dock'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='103'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Dock'>Gnome.Dock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dock_item_by_name' homogen-type='method'><doc/>
<method name='get_dock_item_by_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='108'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='message' homogen-type='method'><doc><text><p>A simple message, in an OK dialog or the status bar. Requires
 confirmation from the user before it goes away.
 Returns 0 or a dialog widget. If 0, the message is displayed in the
 status bar.</p>
</text></doc>
<method name='message'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='111'/>
<arguments><argument name='message'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='ok_cancel' homogen-type='method'><doc><text><p>Ask a ok or cancel question
 and call the callback when it's answered.</p>
</text></doc>
<method name='ok_cancel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='119'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='ok_cancel_modal' homogen-type='method'><doc><text><p>Ask a ok or cancel question, block the application while it is asked,
 and call the callback when it's answered.</p>
</text></doc>
<method name='ok_cancel_modal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='125'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='progress_manual' homogen-type='method'><doc/>
<method name='progress_manual'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='131'/>
<arguments><argument name='prompt'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppProgressKey'>Gnome.AppProgressKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='progress_timeout' homogen-type='method'><doc/>
<method name='progress_timeout'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='134'/>
<arguments><argument name='prompt'><type><string/></type></argument><argument name='interval'><type><int/></type></argument><argument name='cb'><type><function/></type></argument><argument name='cb_arg1'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppProgressKey'>Gnome.AppProgressKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='question' homogen-type='method'><doc><text><p>Ask a yes or no question, and call the callback when it's answered.</p>
</text></doc>
<method name='question'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='137'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='reply_callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='question_modal' homogen-type='method'><doc><text><p>Ask a yes or no question, block the application while it is asked,
 and call the callback when it's answered.</p>
</text></doc>
<method name='question_modal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='142'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='request_password' homogen-type='method'><doc><text><p>As request string, but do not show the string</p>
</text></doc>
<method name='request_password'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='148'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='request_string' homogen-type='method'><doc><text><p>Request a string, and call the callback when it's answered.</p>
</text></doc>
<method name='request_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='153'/>
<arguments><argument name='question'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='cb_arg2'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_contents' homogen-type='method'><doc><text><p>Sets the status bar of the application window.</p>
</text></doc>
<method name='set_contents'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='158'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_menus' homogen-type='method'><doc><text><p>Sets the menu bar of the application window.</p>
</text></doc>
<method name='set_menus'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='163'/>
<arguments><argument name='menu_bar'><type><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_statusbar' homogen-type='method'><doc><text><p>Sets the status bar of the application window.</p>
</text></doc>
<method name='set_statusbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='168'/>
<arguments><argument name='statusbar'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_toolbar' homogen-type='method'><doc><text><p>Sets the main toolbar of the application window.</p>
</text></doc>
<method name='set_toolbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='173'/>
<arguments><argument name='toolbar'><type><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.App'>Gnome.App</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='warning' homogen-type='method'><doc><text><p>A not-so-important error, but still marked better than a flash</p>
</text></doc>
<method name='warning'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/App.pike' first-line='178'/>
<arguments><argument name='warning'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Dialog'>Gnome.Dialog</object></returntype>
</method>
</docgroup>
</class>

<class name='PropertyBox'><doc><text><p>The Gnome.PropertyBox widget simplifies coding a consistent dialog
 box for configuring properties of any kind.</p>
<p> The Gnome.PropertyBox is a toplevel widget (it will create its own
 window), inside it contains a GtkNotebook which is used to hold the
 various property pages.</p>
<p> The box will include ok, cancel, apply and help buttons (the actual
 buttons depends on the settings the user has, for example, apply
 can be hidden). The ok and apply buttons will start up in
 non-sensitive state, the programmer needs to configure the widgets
 inserted into the property box to inform the widget of any state
 changes to enable the ok and apply buttons. This is done by calling
 the changed() function.</p>
<p> To use this widget, you create the widget and then you call
 append_page() for each property page you want in the property box.</p>
<p> The widget emits two signals: "apply" and "help". To make a
 functional dialog box you will want to connect to at least the
 "apply" signal. Your function will be invoked once for each page
 and one more time at the end, passing a special value of -1 for the
 page number.</p>
<p>  Signals:
 <b>apply</b>
 This signal is invoked with the page number that is being
 applied. The signal is emited with the special page number -1 when
 it has finished emiting the signals for all of the property pages.</p>
<p> <b>help</b>
 This signal is invoked when the user clicks on the help button in
 the property box. An argument is passed that identifies the
 currently active page number.</p>
</text></doc><docgroup homogen-name='Dialog' homogen-type='inherit'><doc>
</doc>
<inherit name='Dialog'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PropertyBox.pike' first-line='41'/><classname resolved='predef::Gnome.Dialog'>Gnome.Dialog</classname></inherit>
</docgroup>
<docgroup homogen-name='append_page' homogen-type='method'><doc><text><p>Appends a new page to the Gnome.PropertyBox.
 widget is the widget that is being inserted, and tab_label will be
 used as the label for this configuration page.</p>
</text></doc>
<method name='append_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PropertyBox.pike' first-line='43'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='tab_label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='changed' homogen-type='method'><doc><text><p>When a setting has changed, the code needs to invoke this routine
 to make the Ok/Apply buttons sensitive.</p>
</text></doc>
<method name='changed'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PropertyBox.pike' first-line='50'/>
<arguments/>
<returntype><object resolved='predef::Gnome.PropertyBox'>Gnome.PropertyBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.PropertyBox widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PropertyBox.pike' first-line='56'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.PropertyBox'>Gnome.PropertyBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_state' homogen-type='method'><doc/>
<method name='set_state'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/PropertyBox.pike' first-line='61'/>
<arguments><argument name='state'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.PropertyBox'>Gnome.PropertyBox</object></returntype>
</method>
</docgroup>
</class>

<class name='DockLayoutItem'><doc><text><p>Information about an item in a gnome_dock_layout</p>
</text></doc><docgroup homogen-name='get_item' homogen-type='method'><doc><text><p>The W(gnome_dock_item) this information applies to.</p>
</text></doc>
<method name='get_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayoutItem.pike' first-line='5'/>
<arguments/>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_placement' homogen-type='method'><doc><text><p>One of</p>
</text></doc>
<method name='get_placement'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayoutItem.pike' first-line='10'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='position' homogen-type='method'><doc><text><p>Get the position of the item</p>
</text></doc>
<method name='position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockLayoutItem.pike' first-line='15'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
</class>

<class name='MessageBox'><doc><text><p>The GnomeMessageBox widget creates dialog boxes (of type
 GnomeDialog) that contain a severity level (indicated by an icon
 and a title), a message to be displayed and a list of buttons that
 will be in the dialog.</p>
<p> The programmer will use strings desired for each button. If the
 strings are any of the GNOME_STOCK macros, then instead of creating
 a button with the text, the button will be a GNOME stock button
 with a stock icon.</p>
<p> The list of known types for message boxes are:
 <ref resolved='predef::GTK.GNOME_MESSAGE_BOX_ERROR'>GNOME_MESSAGE_BOX_ERROR</ref>, <ref resolved='predef::GTK.GNOME_MESSAGE_BOX_GENERIC'>GNOME_MESSAGE_BOX_GENERIC</ref>, <ref resolved='predef::GTK.GNOME_MESSAGE_BOX_INFO'>GNOME_MESSAGE_BOX_INFO</ref>, <ref resolved='predef::GTK.GNOME_MESSAGE_BOX_QUESTION'>GNOME_MESSAGE_BOX_QUESTION</ref> and <ref resolved='predef::GTK.GNOME_MESSAGE_BOX_WARNING'>GNOME_MESSAGE_BOX_WARNING</ref>.
<expr> Gnome.MessageBox( "This is a nice message", Gnome.MessageBoxInfo, Gnome.StockButtonOk,  Gnome.StockButtonCancel );</expr>
<image file='predef.Gnome.MessageBox.1.png' width='219' height='32'>../images/gnome_messagebox.png</image></p>
<p><expr> Gnome.MessageBox( "This is another not so nice message", Gnome.MessageBoxError, Gnome.StockButtonClose,  Gnome.StockButtonCancel );</expr>
<image file='predef.Gnome.MessageBox.2.png' width='219' height='32'>../images/gnome_messagebox_2.png</image></p>
</text></doc><docgroup homogen-name='Dialog' homogen-type='inherit'><doc>
</doc>
<inherit name='Dialog'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/MessageBox.pike' first-line='23'/><classname resolved='predef::Gnome.Dialog'>Gnome.Dialog</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a dialog box of type message_box_type with message. A
 number of buttons are inserted on it. You can use the GNOME stock
 identifiers to create gnome stock buttons.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/MessageBox.pike' first-line='25'/><modifiers><static/></modifiers>
<arguments><argument name='message'><type><string/></type></argument><argument name='messagebox_type'><type><string/></type></argument><argument name='buttons'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gnome.MessageBox'>Gnome.MessageBox</object></returntype>
</method>
</docgroup>
</class>

<class name='About'><doc><text><p>A standard way of providing a small about box for your
 application. You provide the name of your application, version,
 copyright, a list of authors and some comments about your
 application. It also allows the programmer to provide a logo to be
 displayed.</p>
<p><expr> Gnome.About( "Example", "1.0", "(c) Roxen IS 2000\n(c) IDA, LiU 2002", ({"Per Hedbor"}), "Some nice documentation\nabout this example" );</expr>
<image file='predef.Gnome.About.1.png' width='180' height='228'>../images/gnome_about.png</image></p>
</text></doc><docgroup homogen-name='Dialog' homogen-type='inherit'><doc>
</doc>
<inherit name='Dialog'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/About.pike' first-line='14'/><classname resolved='predef::Gnome.Dialog'>Gnome.Dialog</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GNOME About dialog. title, version, copyright, and
 authors are displayed first, in that order. comments is typically
 the location for multiple lines of text, if necessary. (Separate
 with "\n".) logo is the filename of a optional pixmap to be
 displayed in the dialog, typically a product or company logo of
 some sort; omit this argument if no logo file is available.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/About.pike' first-line='16'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><string/></type></argument><argument name='version'><type><string/></type></argument><argument name='copyright'><type><string/></type></argument><argument name='authors'><type><array/></type></argument><argument name='comment'><type><string/></type></argument><argument name='logo'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.About'>Gnome.About</object></returntype>
</method>
</docgroup>
</class>

<class name='Appbar'><doc><text><p>A bar that GNOME applications put on the bottom of the windows to
  display status, progress, hints for menu items or a minibuffer for
  getting some sort of response. It has a stack for status messages
<expr> Gnome.Appbar( 1, 1, Gnome.PreferencesUser )-&gt;set_progress( 0.4 );</expr>
<image file='predef.Gnome.Appbar.1.png' width='159' height='20'>../images/gnome_appbar.png</image></p>
<p>  Signals:
 <b>clear_prompt</b>
 Emitted when the prompt is cleared</p>
<p> <b>user_response</b>
 Emitted when the user hits enter after a prompt</p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='19'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='clear_prompt' homogen-type='method'><doc><text><p>Remove any prompt.</p>
</text></doc>
<method name='clear_prompt'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='21'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear_stack' homogen-type='method'><doc><text><p>Remove all status messages from appbar, and display default status
 message (if present).</p>
</text></doc>
<method name='clear_stack'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='26'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GNOME application status bar. If has_progress is TRUE,
 a small progress bar widget will be created, and placed on the left
 side of the appbar. If has_status is TRUE, a status bar, possibly
 an editable one, is created.</p>
<p> interactivity determines whether the appbar is an interactive
 "minibuffer" or just a status bar. If it is set to
 Gnome.PREFERENCES_NEVER, it is never interactive. If it is set to
 Gnome.PREFERENCES_USER we respect user preferences from
 ui-properties. If it's Gnome.PREFERENCES_ALWAYS we are interactive
 whether the user likes it or not. Basically, if your app supports
 both interactive and not (for example, if you use the
 gnome-app-util interfaces), you should use
 Gnome.PREFERENCES_USER. Otherwise, use the setting you
 support. Please note that "interactive" mode is not functional now;
 GtkEntry is inadequate and so a custom widget will be written eventually.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='32'/><modifiers><static/></modifiers>
<arguments><argument name='has_progress'><type><int/></type></argument><argument name='has_status'><type><int/></type></argument><argument name='interactivity'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_progress' homogen-type='method'><doc><text><p>Returns GTK.Progress widget pointer, so that the progress bar may
 be manipulated further.</p>
</text></doc>
<method name='get_progress'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='53'/>
<arguments/>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_response' homogen-type='method'><doc><text><p>Get the response to the prompt, if any.</p>
</text></doc>
<method name='get_response'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='59'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop' homogen-type='method'><doc><text><p>Remove current status message, and display previous status message,
 if any. It is OK to call this with an empty stack.</p>
</text></doc>
<method name='pop'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='64'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push a new status message onto the status bar stack, and display it.</p>
</text></doc>
<method name='push'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='70'/>
<arguments><argument name='what'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='refresh' homogen-type='method'><doc><text><p>Reflect the current state of stack/default. Useful to force a
 set_status to disappear.</p>
</text></doc>
<method name='refresh'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='75'/>
<arguments/>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default' homogen-type='method'><doc><text><p>What to show when showing nothing else; defaults to "".</p>
</text></doc>
<method name='set_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='81'/>
<arguments><argument name='default_status'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_progress' homogen-type='method'><doc><text><p>Sets progress bar to the given percentage. Pure sugar - with a bad
 name, in light of the get_progress name which is not the opposite
 of set_progress. Maybe this function should die.</p>
</text></doc>
<method name='set_progress'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='86'/>
<arguments><argument name='percentage'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_prompt' homogen-type='method'><doc><text><p>Put a prompt in the appbar and wait for a response. When the user
 responds or cancels, a user_response signal is emitted.</p>
</text></doc>
<method name='set_prompt'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='93'/>
<arguments><argument name='prompt'><type><string/></type></argument><argument name='modal'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_status' homogen-type='method'><doc><text><p>Sets the status label without changing widget state; next set or
 push will destroy this permanently.</p>
</text></doc>
<method name='set_status'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Appbar.pike' first-line='99'/>
<arguments><argument name='status'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Appbar'>Gnome.Appbar</object></returntype>
</method>
</docgroup>
</class>

<class name='Href'><doc><text><p>This widget is a GtkButton button that contains a URL. When clicked
 it invokes the configured browser for the URL you provided.</p>
<p><expr> Gnome.Href( "http://www.gnome.org", "GNOME Web Site" )</expr>
<image file='predef.Gnome.Href.1.png' width='90' height='21'>../images/gnome_href.png</image></p>
<p><expr> Gnome.Href( "http://www.gnome.org" )</expr>
<image file='predef.Gnome.Href.2.png' width='119' height='23'>../images/gnome_href_2.png</image></p>
</text></doc><docgroup homogen-name='Button' homogen-type='inherit'><doc>
</doc>
<inherit name='Button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='14'/><classname resolved='predef::GTK.Button'>GTK.Button</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Created a GNOME href object, a label widget with a clickable action
 and an associated URL. If label is set to 0, url is used as the
 label.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='16'/><modifiers><static/></modifiers>
<arguments><argument name='url'><type><string/></type></argument><argument name='label'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Href'>Gnome.Href</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_label' homogen-type='method'><doc><text><p>Returns the contents of the label widget used to display the link text.</p>
</text></doc>
<method name='get_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='23'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_url' homogen-type='method'><doc><text><p>Return the url</p>
</text></doc>
<method name='get_url'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='28'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_label' homogen-type='method'><doc><text><p>Sets the internal label widget text (used to display a URL's link
 text) to the given value.</p>
</text></doc>
<method name='set_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='33'/>
<arguments><argument name='label'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Href'>Gnome.Href</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_url' homogen-type='method'><doc><text><p>Sets the internal URL</p>
</text></doc>
<method name='set_url'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/Href.pike' first-line='39'/>
<arguments><argument name='url'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.Href'>Gnome.Href</object></returntype>
</method>
</docgroup>
</class>

<class name='DruidPage'><doc><text><p>This widget is a virtual widget to define the interface to a druid
 page. It's descendants are placed in a W(Gnome.Druid) widget.</p>
<p>  Signals:
 <b>back</b></p>
<p> <b>cancel</b></p>
<p> <b>finish</b></p>
<p> <b>next</b></p>
<p> <b>prepare</b></p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPage.pike' first-line='17'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
</class>

<class name='DruidPageStandard'><doc><text><p>This is a W(GnomeDruidPage).</p>
</text></doc><docgroup homogen-name='DruidPage' homogen-type='inherit'><doc>
</doc>
<inherit name='DruidPage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='5'/><classname resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.DruidPageStandard widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='7'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.DruidPageStandard'>Gnome.DruidPageStandard</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bg_color' homogen-type='method'><doc><text><p>This will set the background color to be the specified color.</p>
</text></doc>
<method name='set_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='12'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStandard'>Gnome.DruidPageStandard</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_bg_color' homogen-type='method'><doc><text><p>This will set the background color of the logo</p>
</text></doc>
<method name='set_logo_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='17'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStandard'>Gnome.DruidPageStandard</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the title</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='22'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStandard'>Gnome.DruidPageStandard</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title_color' homogen-type='method'><doc><text><p>Set the title color</p>
</text></doc>
<method name='set_title_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStandard.pike' first-line='27'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStandard'>Gnome.DruidPageStandard</object></returntype>
</method>
</docgroup>
</class>

<class name='DruidPageStart'><doc><text><p>This is a W(GnomeDruidPage). It is meant to be used to introduce
 the user to what is being installed in a consistent manner.</p>
</text></doc><docgroup homogen-name='DruidPage' homogen-type='inherit'><doc>
</doc>
<inherit name='DruidPage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='6'/><classname resolved='predef::Gnome.DruidPage'>Gnome.DruidPage</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new Gnome.DruidPageStart widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='8'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bg_color' homogen-type='method'><doc><text><p>This will set the background color to be the specified color.</p>
</text></doc>
<method name='set_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='13'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_logo_bg_color' homogen-type='method'><doc><text><p>This will set the background color of the logo</p>
</text></doc>
<method name='set_logo_bg_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='18'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='23'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text_color' homogen-type='method'><doc><text><p>Set the text color</p>
</text></doc>
<method name='set_text_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='28'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_textbox_color' homogen-type='method'><doc><text><p>This will set the textbox color to be the specified color.</p>
</text></doc>
<method name='set_textbox_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='33'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the title</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='38'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title_color' homogen-type='method'><doc><text><p>Set the title color</p>
</text></doc>
<method name='set_title_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DruidPageStart.pike' first-line='43'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DruidPageStart'>Gnome.DruidPageStart</object></returntype>
</method>
</docgroup>
</class>

<class name='DockItem'><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='3'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GnomeDockItem named name, with the specified behavior.
  Gnome.DockItemBehExclusive specifies that the dock item is always the only one in its band. 
  Gnome.DockItemBehNeverFloating specifies that users cannot detach the dock item from the dock. 
  Gnome.DockItemBehNeverVertical specifies that the dock item must be kept horizontal, and users cannot move it to a vertical band.
  Gnome.DockItemBehNeverHorizontal specifies that the dock item must be kept horizontal, and users cannot move it to a vertical band.
  Gnome.DockItemBehLocked specifies that users cannot drag the item around.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='5'/><modifiers><static/></modifiers>
<arguments><argument name='name'><type><string/></type></argument><argument name='behavior'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_behavior' homogen-type='method'><doc/>
<method name='get_behavior'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='16'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_child' homogen-type='method'><doc><text><p>Retrieve the child of the item.</p>
</text></doc>
<method name='get_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='19'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_name' homogen-type='method'><doc><text><p>Retrieve the name</p>
</text></doc>
<method name='get_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='24'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_orientation' homogen-type='method'><doc/>
<method name='get_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='29'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_shadow_type' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='get_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='32'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_orientation' homogen-type='method'><doc/>
<method name='set_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='37'/>
<arguments><argument name='orientation'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/DockItem.pike' first-line='40'/>
<arguments><argument name='shadow_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.DockItem'>Gnome.DockItem</object></returntype>
</method>
</docgroup>
</class>

<class name='AppProgressKey'><doc><text><p>Wrapper for the opaque GnomeAppProgressKey type</p>
</text></doc><docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppProgressKey.pike' first-line='5'/>
<arguments/>
<returntype><object resolved='predef::Gnome.AppProgressKey'>Gnome.AppProgressKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='done' homogen-type='method'><doc/>
<method name='done'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppProgressKey.pike' first-line='8'/>
<arguments/>
<returntype><object resolved='predef::Gnome.AppProgressKey'>Gnome.AppProgressKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc/>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/AppProgressKey.pike' first-line='11'/>
<arguments><argument name='percent'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Gnome.AppProgressKey'>Gnome.AppProgressKey</object></returntype>
</method>
</docgroup>
</class>

<class name='StatusDocklet'><doc><text><p>Some apps want to embed a very small icon or widget in the panel to
 display the status of the app. This can be done without the
 operational overhead of an applet. The status docklet will embed a
 22 by 22 window inside the panel. This is not a separate applet and
 thus is minimally intrusive to the user and is meant for very
 temporary status displays for which a full applet would not be
 appropriate.</p>
<p> The way StatusDocklet works is a little different from how the
 AppletWidget works. Firstly, StatusDocklet object is not a widget,
 it is just an abstract GTK+ object. You create a new StatusDocklet
 object and then bind
 the "build_plug" signal which is emitted when the panel was
 contacted and a widget must be built. After binding the
 "build_plug" signal, you call run() to actually start
 trying to contacting the panel. StatusDocklet is safe to use
 without a panel. By default it will try to locate a panel for 15
 minutes and after that it will give up. It will also handle panel
 restarts by default. If it does, your widget will be destroyed and
 "build_plug" will be emitted again when the new panel starts. Even
 though the panel will never restart by itself, the user might not
 run session management and thus might restart panel by hand, or due
 to a bug, the panel might crash and restart itself.</p>
<p> Docklets are not available in GNOME 1.0.</p>
<p>  Signals:
 <b>build_plug</b>
 This signal is emitted when you actually need to build the widget
 that you want to place inside the plug in the status docklet. It
 should be 22 by 22, and if it is larger it will be cropped.</p>
</text></doc><docgroup homogen-name='Object' homogen-type='inherit'><doc>
</doc>
<inherit name='Object'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/StatusDocklet.pike' first-line='37'/><classname resolved='predef::GTK.Object'>GTK.Object</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new status docklet object with the default parameters. By
 default the docklet object will try to contact a panel 20 times. It
 will try to find a panel every 15 seconds. You need to bind the
 build_plug signal in which you build your own widget and add it to
 the provided container. By default the docklet object will handle a
 panel restart, in which case your widget will be destroyed and when
 the panel is contacted again the build_plug signal will be emitted
 again. You also must call the status_docklet_run function after you
 bind the build_plug signal.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/StatusDocklet.pike' first-line='39'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gnome.StatusDocklet'>Gnome.StatusDocklet</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_plug' homogen-type='method'><doc><text><p>the current W(plug) holding the docklet</p>
</text></doc>
<method name='get_plug'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/StatusDocklet.pike' first-line='52'/>
<arguments/>
<returntype><object resolved='predef::GTK.Plug'>GTK.Plug</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='run' homogen-type='method'><doc><text><p>Search for the panel and add the plug if it finds it. This function
 is also called internally from the timeout. If called externally
 more times, a panel lookup will be forced and one try will be
 wasted. You need to call this function at least once after binding
 the build_plug signal to tell the status docklet to start looking
 for the panel. If the status docklet handles restarts you don't
 have to call this function ever again.</p>
</text></doc>
<method name='run'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/Gnome.pmod/StatusDocklet.pike' first-line='57'/>
<arguments/>
<returntype><object resolved='predef::Gnome.StatusDocklet'>Gnome.StatusDocklet</object></returntype>
</method>
</docgroup>
</class></module>

<module name='Getopt'><doc><text><p><ref resolved='predef::Getopt'>Getopt</ref> is a group of functions which can be used to find command
 line options.</p>
<p> Command line options come in two flavors: long and short. The short ones
 consists of a dash followed by a character (<tt>-t</tt>), the long ones
 consist of two dashes followed by a string of text (<tt>--test</tt>).
 The short options can also be combined, which means that you can write
 <tt>-tda</tt> instead of <tt>-t -d -a</tt>.</p>
<p> Options can also require arguments, in which case they cannot be
 combined. To write an option with an argument you write
 <tt>-t <i>argument</i></tt> or <tt>-t<i>argument</i></tt> or
 <tt>--test=<i>argument</i></tt>.</p>
</text></doc><docgroup homogen-name='find_option' homogen-type='method'><doc><text><p>This is a generic function to parse command line options of the
   type <tt>-f</tt>, <tt>--foo</tt> or <tt>--foo=bar</tt>.</p>
</text><group><param name='argv'/><text><p>The first argument should be the array of strings that was sent as
   the second argument to your <expr>main()</expr> function.</p>
</text></group><group><param name='shortform'/><text><p>The second is a string with the short form of your option. The
   short form must be only one character long. It can also be an
   array of strings, in which case any of the options in the array
   will be accepted.</p>
</text></group><group><param name='longform'/><text><p>This is an alternative and maybe more readable way to give the
   same option. If you give <expr>"foo"</expr> as <ref resolved='predef::Getopt.find_option.longform'>longform</ref> your program
   will accept <tt>--foo</tt> as argument. This argument can also be
   an array of strings, in which case any of the options in the
   array will be accepted.</p>
</text></group><group><param name='envvars'/><text><p>This argument specifies an environment variable that can be used
   to specify the same option, to make it easier to customize
   program usage. It can also be an array of strings, in which case
   any of the mentioned variables in the array may be used.</p>
</text></group><group><param name='def'/><text><p>This argument has two functions: It specifies if the option takes an
   argument or not, and it informs <ref resolved='predef::Getopt.find_option'>find_option()</ref> what to return if the
   option is not present. If <ref resolved='predef::Getopt.find_option.def'>def</ref> is given and the option does not have an
   argument <ref resolved='predef::Getopt.find_option'>find_option()</ref> will fail. <ref resolved='predef::Getopt.find_option.def'>def</ref> can be specified as
   <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> or left out if the option does not take an argument.</p>
</text></group><group><param name='throw_errors'/><text><p>If <ref resolved='predef::Getopt.find_option.throw_errors'>throw_errors</ref> has been specified <ref resolved='predef::Getopt.find_option'>find_option()</ref> will
   throw errors on failure. If it has been left out, or is
   <expr>0</expr> (zero), it will instead print an error message on
   <ref resolved='predef::Stdio.stderr'>Stdio.stderr</ref> and exit the program with result code 1 on
   failure.</p>
</text></group><group><returns/><text><p>Returns the value the option has been set to if any.</p>
<p>   If the option is present, but has not been set to anything
   <expr>1</expr> will be returned.</p>
<p>   Otherwise if any of the environment variables specified in <ref resolved='predef::Getopt.find_option.envvars'>envvars</ref> has
   been set, that value will be returned.</p>
<p>   If all else fails, <ref resolved='predef::Getopt.find_option.def'>def</ref> will be returned.</p>
</text></group><group><throws/><text><p>If an option that requires an argument lacks an argument and
   <ref resolved='predef::Getopt.find_option.throw_errors'>throw_errors</ref> is set an error will be thrown.</p>
</text></group><group><note/><text><p><ref resolved='predef::Getopt.find_option'>find_option()</ref> modifies <ref resolved='predef::Getopt.find_option.argv'>argv</ref>. Parsed options will be removed
   from <ref resolved='predef::Getopt.find_option.argv'>argv</ref>. Elements of <ref resolved='predef::Getopt.find_option.argv'>argv</ref> that have been removed entirely will
   be replaced with zeroes.</p>
<p>   This function reads options even if they are written after the first
   non-option on the line.</p>
<p>   Index <expr>0</expr> (zero) of <ref resolved='predef::Getopt.find_option.argv'>argv</ref> is not scanned for options,
   since it is reserved for the program name.</p>
<p>   Only the first ocurrance of an option will be parsed. To parse
   multiple ocurrances, call <ref resolved='predef::Getopt.find_option'>find_option()</ref> multiple times.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Getopt.get_args'>Getopt.get_args()</ref></p>
</text></group></doc>
<method name='find_option'><source-position first-line='97' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/>
<arguments><argument name='argv'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='shortform'><type><or><array><valuetype><string/></valuetype></array><string/></or></type></argument><argument name='longform'><type><or><array><valuetype><string/></valuetype></array><string/><void/></or></type></argument><argument name='envvars'><type><or><array><valuetype><string/></valuetype></array><string/><void/></or></type></argument><argument name='def'><type><or><string/><int><min>0</min><max>1</max></int><void/></or></type></argument><argument name='throw_errors'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><string/><int><min>0</min><max>1</max></int></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='HAS_ARG'><doc><text><p>Used with <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> to indicate that an option
 requires an argument.</p>
</text><group><seealso/><text><p><ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref></p>
</text></group></doc>
<constant name='HAS_ARG'><source-position first-line='176' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NO_ARG'><doc><text><p>Used with <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> to indicate that an option
 does not take an argument.</p>
</text><group><seealso/><text><p><ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref></p>
</text></group></doc>
<constant name='NO_ARG'><source-position first-line='182' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='MAY_HAVE_ARG'><doc><text><p>Used with <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> to indicate that an option
 takes an optional argument.</p>
</text><group><seealso/><text><p><ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref></p>
</text></group></doc>
<constant name='MAY_HAVE_ARG'><source-position first-line='188' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/></constant>
</docgroup>
<docgroup homogen-name='find_all_options' homogen-type='method'><doc><text><p>This function does the job of several calls to <ref resolved='predef::Getopt.find_option'>find_option()</ref>.
   The main advantage of this is that it allows it to handle the
   <tt><b>POSIX_ME_HARDER</b></tt> environment variable better. When the either
   the argument <ref resolved='predef::Getopt.find_all_options.posix_me_harder'>posix_me_harder</ref> or the environment variable
   <tt><b>POSIX_ME_HARDER</b></tt> is true, no arguments will be parsed after
   the first non-option on the command line.</p>
</text><group><param name='argv'/><text><p>The should be the array of strings that was sent as the second
   argument to your <expr>main()</expr> function.</p>
</text></group><group><param name='options'/><text><p>Each element in the array <ref resolved='predef::Getopt.find_all_options.options'>options</ref> should be an array on the
   following form:</p>
<array><group><elem><type><string/></type><index>name</index></elem><text><p>Name is a tag used to identify the option in the output.</p>
</text></group><group><elem><type><int/></type><index>type</index></elem><text><p>Type is one of <ref resolved='predef::Getopt.HAS_ARG'>Getopt.HAS_ARG</ref>, <ref resolved='predef::Getopt.NO_ARG'>Getopt.NO_ARG</ref> and
   	  <ref resolved='predef::Getopt.MAY_HAVE_ARG'>Getopt.MAY_HAVE_ARG</ref> and it affects how the error handling
   	  and parsing works.
   	  You should use <ref resolved='predef::Getopt.HAS_ARG'>HAS_ARG</ref> for options that require a path, a number
       or similar. <ref resolved='predef::Getopt.NO_ARG'>NO_ARG</ref> should be used for options that do not need an
   	  argument, such as <tt>--version</tt>. <ref resolved='predef::Getopt.MAY_HAVE_ARG'>MAY_HAVE_ARG</ref> should be used
   	  for options that may or may not need an argument.</p>
</text></group><group><elem><type><or><string/><array><valuetype><string/></valuetype></array></or></type><index>aliases</index></elem><text><p>This is a string or an array of string of options that will be
   	  looked for. Short and long options can be mixed, and short options
   	  can be combined into one string. Note that you must include the
       dashes so that <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> can distinguish between
   	  long and short options. Example: <expr>({"-tT","--test"})</expr>
   	  This would make <ref resolved='predef::Getopt.find_all_options'>find_all_options</ref> look for <tt>-t</tt>,
   	  <tt>-T</tt> and <tt>--test</tt>.</p>
</text></group><group><elem><type><or><void/><string/><array><valuetype><string/></valuetype></array></or></type><index>env_var</index></elem><text><p>This is a string or an array of strings containing names of
   	  environment variables that can be used instead of the
   	  command line option.</p>
</text></group><group><elem><type><or><void/><mixed/></or></type><index>default</index></elem><text><p>This is the default value a <ref resolved='predef::Getopt.MAY_HAVE_ARG'>MAY_HAVE_ARG</ref> option will have in the
       output if it was set but not assigned any value.</p>
</text></group></array><p>Only the first three elements need to be included.</p>
</text></group><group><param name='posix_me_harder'/><text><p>Don't scan for arguments after the first non-option.</p>
</text></group><group><param name='throw_errors'/><text><p>If <ref resolved='predef::Getopt.find_all_options.throw_errors'>throw_errors</ref> has been specified <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> will
   throw errors on failure. If it has been left out, or is
   <expr>0</expr> (zero), it will instead print an error message on
   <ref resolved='predef::Stdio.stderr'>Stdio.stderr</ref> and exit the program with result code 1 on
   failure.</p>
</text></group><group><returns/><text><p>The good news is that the output from this function is a lot simpler.
   <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> returns an array where each element is an array on
   this form:</p>
<array><group><elem><type><string/></type><index>name</index></elem><text><p>Option identifier name from the input.</p>
</text></group><group><elem><type><mixed/></type><index>value</index></elem><text><p>Value given. If no value was specified, and no default has been
   	  specified, the value will be 1.</p>
</text></group></array>
</text></group><group><note/><text><p><ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> modifies <ref resolved='predef::Getopt.find_all_options.argv'>argv</ref>.</p>
<p>   Index <expr>0</expr> (zero) of <ref resolved='predef::Getopt.find_all_options.argv'>argv</ref> is not scanned for options,
   since it is reserved for the program name.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Getopt.get_args'>Getopt.get_args()</ref>, <ref resolved='predef::Getopt.find_option'>Getopt.find_option()</ref></p>
</text></group></doc>
<method name='find_all_options'><source-position first-line='277' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/>
<arguments><argument name='argv'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='options'><type><array><valuetype><array><valuetype><or><array><valuetype><string/></valuetype></array><string/><int/></or></valuetype></array></valuetype></array></type></argument><argument name='posix_me_harder'><type><or><void/><int><min>-1</min><max>1</max></int></or></type></argument><argument name='throw_errors'><type><or><void/><int/></or></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_args' homogen-type='method'><doc><text><p>This function returns the remaining command line arguments after
 you have run <ref resolved='predef::Getopt.find_option'>find_option()</ref> or <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref> to find
 all the options in the argument list. If there are any options
 left not handled by <ref resolved='predef::Getopt.find_option'>find_option()</ref> or <ref resolved='predef::Getopt.find_all_options'>find_all_options()</ref>
 this function will fail.</p>
<p> If <ref resolved='predef::Getopt.get_args.throw_errors'>throw_errors</ref> has been specified <ref resolved='predef::Getopt.get_args'>get_args()</ref> will throw errors
 on failure. If it has been left out, or is <tt>0</tt> (zero), it will
 instead print an error message on <ref resolved='predef::Stdio.stderr'>Stdio.stderr</ref> and exit the
 program with result code 1 on failure.</p>
</text><group><returns/><text><p>On success a new <ref resolved='predef::Getopt.get_args.argv'>argv</ref> array without the parsed options is
 returned.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Getopt.find_option'>Getopt.find_option()</ref>, <ref resolved='predef::Getopt.find_all_options'>Getopt.find_all_options()</ref></p>
</text></group></doc>
<method name='get_args'><source-position first-line='420' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Getopt.pmod'/>
<arguments><argument name='argv'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='posix_me_harder'><type><or><void/><int><min>-1</min><max>1</max></int></or></type></argument><argument name='throw_errors'><type><or><void/><int/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='Thread'>

<class name='Fifo'><source-position first-line='47' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><modifiers><optional/></modifiers><doc><text><p><ref resolved='predef::Thread.Fifo'>Fifo</ref> implements a fixed length first-in, first-out queue.
 A fifo is a queue of values and is often used as a stream of data
 between two threads.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue'>Queue</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='r_cond'><doc>
</doc>
<inherit name='r_cond'><source-position first-line='48' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Condition'>Condition</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='w_cond'><doc>
</doc>
<inherit name='w_cond'><source-position first-line='49' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Condition'>Condition</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='lock'><doc>
</doc>
<inherit name='lock'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Mutex'>Mutex</classname></inherit>
</docgroup>
<docgroup homogen-name='size' homogen-type='method'><doc><text><p>This function returns the number of elements currently in the fifo.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read'>read()</ref>, <ref resolved='predef::Thread.Fifo.write'>write()</ref></p>
</text></group></doc>
<method name='size'><source-position first-line='61' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>This function retrieves a value from the fifo. Values will be
 returned in the order they were written. If there are no values
 present in the fifo the current thread will sleep until some other
 thread writes one.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.try_read'>try_read()</ref>, <ref resolved='predef::Thread.Fifo.read_array'>read_array()</ref>, <ref resolved='predef::Thread.Fifo.write'>write()</ref></p>
</text></group></doc>
<method name='read'><source-position first-line='87' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_read' homogen-type='method'><doc><text><p>This function retrieves a value from the fifo if there is any
 there. Values will be returned in the order they were written.
 If there are no values present in the fifo then <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref>
 will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read'>read()</ref></p>
</text></group></doc>
<method name='try_read'><source-position first-line='104' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_array' homogen-type='method'><doc><text><p>This function returns all values in the fifo as an array. The
 values in the array will be in the order they were written. If
 there are no values present in the fifo the current thread will
 sleep until some other thread writes one.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read'>read()</ref>, <ref resolved='predef::Thread.Fifo.try_read_array'>try_read_array()</ref></p>
</text></group></doc>
<method name='read_array'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_read_array' homogen-type='method'><doc><text><p>This function returns all values in the fifo as an array but
 doesn't wait if there are no values there. The values in the
 array will be in the order they were written.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read_array'>read_array()</ref></p>
</text></group></doc>
<method name='try_read_array'><source-position first-line='170' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Append a <ref resolved='predef::Thread.Fifo.write.value'>value</ref> to the end of the fifo. If there is no more
 room in the fifo the current thread will sleep until space is
 available. The number of items in the queue after the write is
 returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read'>read()</ref></p>
</text></group></doc>
<method name='write'><source-position first-line='200' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_write' homogen-type='method'><doc><text><p>Append a <ref resolved='predef::Thread.Fifo.try_write.value'>value</ref> to the end of the fifo. If there is no more
 room in the fifo then zero will be returned, otherwise the
 number of items in the fifo after the write is returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo.read'>read()</ref></p>
</text></group></doc>
<method name='try_write'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a fifo. If the optional <ref resolved='predef::Thread.Fifo.create.size'>size</ref> argument is present it
 sets how many values can be written to the fifo without blocking.
 The default <ref resolved='predef::Thread.Fifo.create.size'>size</ref> is 128.</p>
</text></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='size'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Queue'><source-position first-line='255' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><modifiers><optional/></modifiers><doc><text><p><ref resolved='predef::Thread.Queue'>Queue</ref> implements a queue, or a pipeline. The main difference
 between <ref resolved='predef::Thread.Queue'>Queue</ref> and <ref resolved='predef::Thread.Fifo'>Fifo</ref> is that <ref resolved='predef::Thread.Queue'>Queue</ref>
 will never block in write(), only allocate more memory.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Fifo'>Fifo</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='r_cond'><doc>
</doc>
<inherit name='r_cond'><source-position first-line='256' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Condition'>Condition</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='lock'><doc>
</doc>
<inherit name='lock'><source-position first-line='257' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Mutex'>Mutex</classname></inherit>
</docgroup>
<docgroup homogen-name='size' homogen-type='method'><doc><text><p>This function returns the number of elements currently in the queue.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.read'>read()</ref>, <ref resolved='predef::Thread.Queue.write'>write()</ref></p>
</text></group></doc>
<method name='size'><source-position first-line='267' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>This function retrieves a value from the queue. Values will be
 returned in the order they were written. If there are no values
 present in the queue the current thread will sleep until some other
 thread writes one.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.try_read'>try_read()</ref>, <ref resolved='predef::Thread.Queue.write'>write()</ref></p>
</text></group></doc>
<method name='read'><source-position first-line='277' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_read' homogen-type='method'><doc><text><p>This function retrieves a value from the queue if there is any
 there. Values will be returned in the order they were written.
 If there are no values present in the fifo then <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref>
 will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.write'>write()</ref></p>
</text></group></doc>
<method name='try_read'><source-position first-line='296' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_array' homogen-type='method'><doc><text><p>This function returns all values in the queue as an array. The
 values in the array will be in the order they were written. If
 there are no values present in the queue the current thread will
 sleep until some other thread writes one.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.read'>read()</ref>, <ref resolved='predef::Thread.Queue.try_read_array'>try_read_array()</ref></p>
</text></group></doc>
<method name='read_array'><source-position first-line='339' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='try_read_array' homogen-type='method'><doc><text><p>This function returns all values in the queue as an array but
 doesn't wait if there are no values there. The values in the
 array will be in the order they were written.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.read_array'>read_array()</ref></p>
</text></group></doc>
<method name='try_read_array'><source-position first-line='355' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>This function puts a <ref resolved='predef::Thread.Queue.write.value'>value</ref> last in the queue. If the queue is
 too small to hold the <ref resolved='predef::Thread.Queue.write.value'>value</ref> it will be expanded to make room.
 The number of items in the queue after the write is returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Queue.read'>read()</ref></p>
</text></group></doc>
<method name='write'><source-position first-line='371' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='Thread'><doc>
</doc>
<inherit name='Thread'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Thread.pmod'/><classname resolved='predef::Thread.Thread'>Thread</classname></inherit>
</docgroup>


<class name='Thread'><docgroup homogen-type='method' homogen-name='create'><doc><text><p>This function creates a new thread which will run simultaneously
 to the rest of the program. The new thread will call the function
 <ref resolved='predef::Thread.Thread.create.f'>f</ref> with the arguments <ref resolved='predef::Thread.Thread.create.args'>args</ref>. When <ref resolved='predef::Thread.Thread.create.f'>f</ref> returns the thread will cease
 to exist.</p>
<p> All Pike functions are 'thread safe' meaning that running
 a function at the same time from different threads will not corrupt
 any internal data in the Pike process.</p>
</text><group><returns/><text><p>The returned value will be the same as the return value of
   <ref resolved='predef::Thread.this_thread'>this_thread()</ref> for the new thread.</p>
</text></group><group><note/><text><p>This function is only available on systems with POSIX or UNIX or WIN32
   threads support.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Mutex'>Mutex</ref>, <ref resolved='predef::Thread.Condition'>Condition</ref>, <ref resolved='predef::Thread.this_thread'>this_thread()</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='f'><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><void/></returntype></function></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='backtrace'><doc><text><p>Returns the current call stack for the thread.</p>
</text><group><returns/><text><p>The result has the same format as for <ref resolved='predef::backtrace'>predef::backtrace()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::backtrace'>predef::backtrace()</ref></p>
</text></group></doc>
<method name='backtrace'>
<arguments/>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='status'><doc><text><p>Returns the status of the thread.</p>
</text><group><returns/><text><int><group><value>Thread.THREAD_NOT_STARTED</value><value>Thread.THREAD_RUNNING</value><value>Thread.THREAD_EXITED</value></group></int></text></group></doc>
<method name='status'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sprintf'><doc><text><p>Returns a string identifying the thread.</p>
</text></doc>
<method name='_sprintf'><modifiers><static/></modifiers>
<arguments><argument name='c'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='id_number'><doc><text><p>Returns an id number identifying the thread.</p>
</text><group><note/><text><p>This function was added in Pike 7.2.204.</p>
</text></group></doc>
<method name='id_number'><modifiers><static/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='wait'><doc><text><p>Waits for the thread to complete, and then returns
 the value returned from the thread function.</p>
</text></doc>
<method name='wait'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='Mutex'><doc><text><p><ref resolved='predef::Thread.Mutex'>Mutex</ref> is a class that implements mutual exclusion locks.
 Mutex locks are used to prevent multiple threads from simultaneously
 execute sections of code which access or change shared data. The basic
 operations for a mutex is locking and unlocking. If a thread attempts
 to lock an already locked mutex the thread will sleep until the mutex
 is unlocked.</p>
</text><group><note/><text><p>This class is simulated when Pike is compiled without thread support,
   so it's always available.</p>
<p> In POSIX threads, mutex locks can only be unlocked by the same thread
 that locked them. In Pike any thread can unlock a locked mutex.</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='lock'><doc><text><p>This function attempts to lock the mutex. If the mutex is already
 locked by a different thread the current thread will sleep until the
 mutex is unlocked. The value returned is the 'key' to the lock. When
 the key is destructed or has no more references the mutex will
 automatically be unlocked.</p>
<p> The <ref resolved='predef::Thread.Mutex.lock.type'>type</ref> argument specifies what <ref resolved='predef::Thread.Mutex.lock'>lock()</ref> should do if the
 mutex is already locked by this thread:</p>
<int><group><value>0</value><text><p>Throw an error.</p>
</text></group><group><value>1</value><text><p>Sleep until the mutex is unlocked. Useful if some
     other thread will unlock it.</p>
</text></group><group><value>2</value><text><p>Return zero. This allows recursion within a locked region of
     code, but in conjunction with other locks it easily leads
     to unspecified locking order and therefore a risk for deadlocks.</p>
</text></group></int>
</text><group><note/><text><p>If the mutex is destructed while it's locked or while threads are
 waiting on it, it will continue to exist internally until the last
 thread has stopped waiting and the last <ref resolved='predef::Thread.MutexKey'>MutexKey</ref> has
 disappeared, but further calls to the functions in this class will
 fail as is usual for destructed objects.</p>
</text></group><group><note/><text><p>Pike 7.4 and earlier destructed any outstanding lock when the
 mutex was destructed, but threads waiting in <ref resolved='predef::Thread.Mutex.lock'>lock</ref> still got
 functioning locks as discussed above. This is inconsistent no
 matter how you look at it, so it was changed in 7.6. The old
 behavior is retained in compatibility mode for applications that
 explicitly destruct mutexes to unlock them.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Mutex.trylock'>trylock()</ref></p>
</text></group></doc>
<method name='lock'>
<arguments/>
<returntype><object resolved='predef::Thread.MutexKey'>MutexKey</object></returntype>
</method>
<method name='lock'>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Thread.MutexKey'>MutexKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='trylock'><doc><text><p>This function performs the same operation as <ref resolved='predef::Thread.Mutex.lock'>lock()</ref>, but if the mutex
 is already locked, it will return zero instead of sleeping until it's
 unlocked.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Mutex.lock'>lock()</ref></p>
</text></group></doc>
<method name='trylock'>
<arguments/>
<returntype><object resolved='predef::Thread.MutexKey'>MutexKey</object></returntype>
</method>
<method name='trylock'>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Thread.MutexKey'>MutexKey</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='current_locking_thread'><doc><text><p>This mutex method returns the object that identifies the thread that
 has locked the mutex. 0 is returned if the mutex isn't locked.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Thread'>Thread()</ref></p>
</text></group></doc>
<method name='current_locking_thread'>
<arguments/>
<returntype><object resolved='predef::Thread.Thread'>Thread.Thread</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='current_locking_key'><doc><text><p>This mutex method returns the key object currently governing
 the lock on this mutex. 0 is returned if the mutex isn't locked.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Thread'>Thread()</ref></p>
</text></group></doc>
<method name='current_locking_key'>
<arguments/>
<returntype><object resolved='predef::Thread.MutexKey'>Thread.MutexKey</object></returntype>
</method>
</docgroup>
</class>

<class name='MutexKey'><doc><text><p>Objects of this class are returned by <ref resolved='predef::Thread.Mutex.lock'>Mutex()-&gt;lock()</ref>
 and <ref resolved='predef::Thread.Mutex.trylock'>Mutex()-&gt;trylock()</ref>. They are also passed as arguments
 to <ref resolved='predef::Thread.Condition.wait'>Condition()-&gt;wait()</ref>.</p>
<p> As long as they are held, the corresponding mutex will be locked.</p>
<p> The corresponding mutex will be unlocked when the object
 is destructed (eg by not having any references left).</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Mutex'>Mutex</ref>, <ref resolved='predef::Thread.Condition'>Condition</ref></p>
</text></group></doc></class>

<class name='Condition'><doc><text><p>Implementation of condition variables.</p>
<p> Condition variables are used by threaded programs
 to wait for events happening in other threads.</p>
</text><group><note/><text><p>Condition variables are only available on systems with thread
   support. The Condition class is not simulated otherwise, since that
   can't be done accurately without continuations.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Mutex'>Mutex</ref></p>
</text></group></doc><docgroup homogen-type='method' homogen-name='wait'><doc><text><p>Wait for contition.</p>
<p> This function makes the current thread sleep until the condition
 variable is signalled. The argument should be a <ref resolved='predef::Thread.MutexKey'>Thread.MutexKey</ref>
 object for a <ref resolved='predef::Thread.Mutex'>Thread.Mutex</ref>. It will be unlocked atomically
 before waiting for the signal and then relocked atomically when
 the signal is received.</p>
<p> The thread that sends the signal should have the mutex locked
 while sending it. Otherwise it's impossible to avoid races where
 signals are sent while the listener(s) haven't arrived to the
 <ref resolved='predef::Thread.Condition.wait'>wait</ref> calls yet.</p>
</text><group><note/><text><p>In Pike 7.2 and earlier it was possible to call <ref resolved='predef::Thread.Condition.wait'>wait()</ref>
   without arguments. This possibility was removed in later
   versions since it unavoidably leads to programs with races
   and/or deadlocks.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Mutex.lock'>Mutex-&gt;lock()</ref></p>
</text></group></doc>
<method name='wait'>
<arguments><argument name='mutex_key'><type><object resolved='predef::Thread.MutexKey'>Thread.MutexKey</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='signal'><doc><text><p><ref resolved='predef::Thread.Condition.signal'>signal()</ref> wakes up one of the threads currently waiting for the
 condition.</p>
</text><group><note/><text><p>Sometimes more than one thread is woken up.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Condition.broadcast'>broadcast()</ref></p>
</text></group></doc>
<method name='signal'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='broadcast'><doc><text><p><ref resolved='predef::Thread.Condition.broadcast'>broadcast()</ref> wakes up all threads currently waiting for this condition.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Condition.signal'>signal()</ref></p>
</text></group></doc>
<method name='broadcast'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Local'><doc><text><p>Thread local variable storage.</p>
<p> This class allows you to have variables which are separate for each
 thread that uses it. It has two methods: <ref resolved='predef::Thread.Local.get'>get()</ref> and <ref resolved='predef::Thread.Local.set'>set()</ref>. A value
 stored in an instance of <ref resolved='predef::Thread.Local'>Local</ref> can only be retrieved by that
 same thread.</p>
</text><group><note/><text><p>This class is simulated when Pike is compiled without thread support,
   so it's always available.</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='get'><doc><text><p>Get the thread local value.</p>
<p> This returns the value prevoiusly stored in the <ref resolved='predef::Thread.Local'>Local</ref> object by
 the <ref resolved='predef::Thread.Local.set'>set()</ref> method by this thread.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Local.set'>set()</ref></p>
</text></group></doc>
<method name='get'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set'><doc><text><p>Set the thread local value.</p>
<p> This sets the value returned by the <ref resolved='predef::Thread.Local.get'>get</ref> method.</p>
<p> Calling this method does not affect the value returned by <ref resolved='predef::Thread.Local.get'>get()</ref> when
 it's called by another thread (ie multiple values can be stored at the
 same time, but only one value per thread).</p>
</text><group><returns/><text><p>This function returns its argument.</p>
</text></group><group><note/><text><p>Note that the value set can only be retreived by the same thread.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Thread.Local.get'>get()</ref></p>
</text></group></doc>
<method name='set'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='all_threads'><doc><text><p>This function returns an array with the thread ids of all threads.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Thread'>Thread()</ref></p>
</text></group></doc>
<method name='all_threads'>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Thread.Thread'>Thread.Thread</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='thread_set_concurrency'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='thread_set_concurrency'>
<arguments><argument name='concurrency'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='this_thread'><doc><text><p>This function returns the object that identifies this thread.</p>
</text><group><seealso/><text><p><ref resolved='predef::Thread.Thread'>Thread()</ref></p>
</text></group></doc>
<method name='this_thread'>
<arguments/>
<returntype><object resolved='predef::Thread.Thread'>Thread.Thread</object></returntype>
</method>
</docgroup>
</module>

<module name='Mapping'><docgroup homogen-type='constant' homogen-name='delete'><doc><text><p>Alias for <ref resolved='predef::m_delete'>m_delete()</ref></p>
</text></doc>
<constant name='delete'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Mapping.pmod'/></constant>
</docgroup>


<class name='Iterator'><doc><text><p>An object of this class is returned by <ref resolved='predef::get_iterator'>get_iterator()</ref> when
   called with a mapping.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_iterator'>get_iterator</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='predef::Iterator'><doc>
</doc>
<inherit name='predef::Iterator'><classname resolved='predef::Iterator'>predef::Iterator</classname></inherit>
</docgroup>
</class></module>



<module name='Colors'><docgroup homogen-name='rgb_to_hsv' homogen-type='method'><doc><text><p>This function returns the HSV value of the color
 described by the provided RGB value. It is essentially
 calling Image.Color.rgb(r,g,b)-&gt;hsv().</p>
</text><group><seealso/><text><p><ref resolved='predef::Colors.hsv_to_rgb'>Colors.hsv_to_rgb()</ref>
 <ref resolved='predef::Image.Color.Color.rgb'>Image.Color.Color.hsv()</ref></p>
</text></group></doc>
<method name='rgb_to_hsv'>
<arguments><argument name='rgb'><type><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
<method name='rgb_to_hsv'>
<arguments><argument name='r'><type><int><min>0</min><max>255</max></int></type></argument><argument name='g'><type><int><min>0</min><max>255</max></int></type></argument><argument name='b'><type><int><min>0</min><max>255</max></int></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='hsv_to_rgb' homogen-type='method'><doc><text><p>This function returns the RGB value of the color
 described by the provided HSV value. It is essentially
 calling Image.Color.hsv(h,s,v)-&gt;rgb().</p>
</text><group><seealso/><text><p><ref resolved='predef::Colors.rgb_to_hsv'>Colors.rgb_to_hsv()</ref>
 <ref resolved='predef::Image.Color.rgb'>Image.Color.hsv()</ref></p>
</text></group></doc>
<method name='hsv_to_rgb'>
<arguments><argument name='hsv'><type><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
<method name='hsv_to_rgb'>
<arguments><argument name='h'><type><int><min>0</min><max>255</max></int></type></argument><argument name='s'><type><int><min>0</min><max>255</max></int></type></argument><argument name='v'><type><int><min>0</min><max>255</max></int></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='rgb_to_cmyk' homogen-type='method'><doc><text><p>This function returns the CMYK value of the color
 described by the provided RGB value. It is essentially
 calling Image.Color.rgb(r,g,b)-&gt;cmyk().</p>
</text><group><seealso/><text><p><ref resolved='predef::Colors.cmyk_to_rgb'>Colors.cmyk_to_rgb()</ref>
 <ref resolved='predef::Image.Color.Color.rgb'>Image.Color.Color.cmyk()</ref></p>
</text></group></doc>
<method name='rgb_to_cmyk'>
<arguments><argument name='rgb'><type><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>100</max></int></valuetype></array></returntype>
</method>
<method name='rgb_to_cmyk'>
<arguments><argument name='r'><type><int><min>0</min><max>255</max></int></type></argument><argument name='g'><type><int><min>0</min><max>255</max></int></type></argument><argument name='b'><type><int><min>0</min><max>255</max></int></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>100</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='cmyk_to_rgb' homogen-type='method'><doc><text><p>This function return the RGB value of the color
 describe by the provided CMYK value. It is essentially
 calling Image.Color.cmyk(c,m,y,k)-&gt;rgb()</p>
</text><group><seealso/><text><p><ref resolved='predef::Colors.rgb_to_cmyk'>Colors.rgb_to_cmyk()</ref>
 <ref resolved='predef::Image.Color.rgb'>Image.Color.cmyk()</ref></p>
</text></group></doc>
<method name='cmyk_to_rgb'>
<arguments><argument name='cmyk'><type><array><valuetype><int><min>0</min><max>100</max></int></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
<method name='cmyk_to_rgb'>
<arguments><argument name='c'><type><int><min>0</min><max>100</max></int></type></argument><argument name='m'><type><int><min>0</min><max>100</max></int></type></argument><argument name='y'><type><int><min>0</min><max>100</max></int></type></argument><argument name='k'><type><int><min>0</min><max>100</max></int></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_color' homogen-type='method'><doc><text><p>This function returns the RGB values that corresponds to the
 color that is provided by name to the function. It is
 essentially calling <ref resolved='predef::Image.Color.guess'>Image.Color.guess()</ref>, but returns the
 default value (or black if none is provided) if it failes.</p>
</text></doc>
<method name='parse_color'><source-position first-line='83' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Colors.pmod'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='def'><type><or><void/><array><valuetype><int/></valuetype></array></or></type></argument></arguments>
<returntype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='color_name' homogen-type='method'><doc><text><p>Tries to find a name to color described by  the provided RGB
 values. Partially an inverse function to <ref resolved='predef::Colors.parse_color'>Colors.parse_color()</ref>,
 although it can not find all the names that <ref resolved='predef::Colors.parse_color'>Colors.parse_color()</ref>
 can find RGB values for. Returns the colors rgb hex value prepended
 with "#" upon failure.</p>
</text></doc>
<method name='color_name'><source-position first-line='103' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Colors.pmod'/>
<arguments><argument name='rgb'><type><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='Int'><docgroup homogen-name='parity' homogen-type='method'><doc><text><p>Returns the parity of the integer <ref resolved='predef::Int.parity.value'>value</ref>. If the
 parity is odd 1 is returned. If it is even 0 is
 returned.</p>
</text></doc>
<method name='parity'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Int.pmod'/>
<arguments><argument name='value'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>The limits for using the native representation of integers on the
 current architecture. Any integer that is outside this range uses
 a more complex and slower representation. Also, some builtin
 functions that don't expect very large integers might start to
 complain about invalid argument type when given values outside
 this range (they typically say something like "Expected integer,
 got object").</p>
<p> <ref resolved='predef::Int.NATIVE_MIN'>NATIVE_MIN</ref> is not greater than <expr>-2147483648</expr>
 (<expr>-0x80000000</expr>).</p>
<p> <ref resolved='predef::Int.NATIVE_MAX'>NATIVE_MAX</ref> is not less than <expr>2147483647</expr>
 (<expr>0x7fffffff</expr>).</p>
</text><group><note/><text><p>The size of the native integers can be controlled when Pike is
 compiled with the configure flags <expr>--with-int-int</expr>,
 <expr>--with-long-int</expr>, and <expr>--with-long-long-int</expr>. The
 default is to use the longest available integer type that fits
 inside a pointer, which typically means that it's 64 bit on "true"
 64 bit architectures.</p>
</text></group><group><note/><text><p>If Pike is compiled with the configure flag
 <expr>--without-bignum</expr> (which is discouraged), then all
 arithmetic operations will instead silently wrap around at these
 limits.</p>
</text></group></doc>
<constant name='NATIVE_MIN'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Int.pmod'/></constant>
<constant name='NATIVE_MAX'><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Int.pmod'/></constant>
</docgroup>
<docgroup homogen-name='swap_word' homogen-type='method'><doc><text><p>Swaps the upper and lower byte in a word.</p>
</text></doc>
<method name='swap_word'><source-position first-line='46' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Int.pmod'/>
<arguments><argument name='i'><type><int><min>0</min><max>65535</max></int></type></argument></arguments>
<returntype><int><min>0</min><max>65535</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='swap_long' homogen-type='method'><doc><text><p>Swaps the upper and lower word in a longword, and the upper and
 lower bytes in the words. Simply put, the bytes are reversed.</p>
</text></doc>
<method name='swap_long'><source-position first-line='52' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Int.pmod'/>
<arguments><argument name='i'><type><int><min>0</min><max>4294967295</max></int></type></argument></arguments>
<returntype><int><min>0</min><max>4294967295</max></int></returntype>
</method>
</docgroup>
</module>

<module name='Array'><doc><text><p>General functions to operate on arrays.</p>
</text></doc><docgroup homogen-name='reduce' homogen-type='method'><doc><text><p><ref resolved='predef::Array.reduce'>reduce()</ref> sends the first two elements in <ref resolved='predef::Array.reduce.arr'>arr</ref> to <ref resolved='predef::Array.reduce.fun'>fun</ref>,
 then the result and the next element in <ref resolved='predef::Array.reduce.arr'>arr</ref> to <ref resolved='predef::Array.reduce.fun'>fun</ref> and
 so on. Then it returns the result. The function will return
 <ref resolved='predef::Array.reduce.zero'>zero</ref> if <ref resolved='predef::Array.reduce.arr'>arr</ref> is the empty array. If <ref resolved='predef::Array.reduce.arr'>arr</ref> has
 only one element, that element will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.rreduce'>rreduce()</ref></p>
</text></group></doc>
<method name='reduce'><source-position first-line='36' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='fun'><type><function/></type></argument><argument name='arr'><type><array/></type></argument><argument name='zero'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rreduce' homogen-type='method'><doc><text><p><ref resolved='predef::Array.rreduce'>rreduce()</ref> sends the last two elements in <ref resolved='predef::Array.rreduce.arr'>arr</ref> to <ref resolved='predef::Array.rreduce.fun'>fun</ref>,
 then the third last element in <ref resolved='predef::Array.rreduce.arr'>arr</ref> and the result to <ref resolved='predef::Array.rreduce.fun'>fun</ref> and
 so on. Then it returns the result. The function will return
 <ref resolved='predef::Array.rreduce.zero'>zero</ref> if <ref resolved='predef::Array.rreduce.arr'>arr</ref> is the empty array. If <ref resolved='predef::Array.rreduce.arr'>arr</ref> has
 only one element, that element will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.reduce'>reduce()</ref></p>
</text></group></doc>
<method name='rreduce'><source-position first-line='54' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='fun'><type><function/></type></argument><argument name='arr'><type><array/></type></argument><argument name='zero'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='shuffle' homogen-type='method'><doc><text><p><ref resolved='predef::Array.shuffle'>shuffle()</ref> gives back the same elements, but in random order.
 The array is modified destructively.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.permute'>permute()</ref></p>
</text></group></doc>
<method name='shuffle'><source-position first-line='69' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='arr'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='search_array' homogen-type='method'><doc><text><p><ref resolved='predef::Array.search_array'>search_array()</ref> works like <ref resolved='predef::map'>map()</ref>, only it returns the index
 of the first call that returnes true instead.</p>
<p> If no call returns true, -1 is returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.sum'>sum()</ref>, <ref resolved='predef::map'>map()</ref></p>
</text></group></doc>
<method name='search_array'><source-position first-line='92' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='arr'><type><array/></type></argument><argument name='fun'><type><or><string/><function/><int/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sum_arrays' homogen-type='method'><doc><text><p>Applies the function <ref resolved='predef::Array.sum_arrays.sum'>sum</ref> columnwise on the elements in the
 provided arrays. E.g. <expr>sum_array(`+,a,b,c)</expr> does the same
 as <expr>`+(a[*],b[*],c[*])</expr>.</p>
</text></doc>
<method name='sum_arrays'><source-position first-line='124' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='sum'><type><function><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='args'><type><varargs><array/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sort_array' homogen-type='method'><doc><text><p>This function sorts the array <ref resolved='predef::Array.sort_array.arr'>arr</ref> after a compare-function
 <ref resolved='predef::Array.sort_array.cmp'>cmp</ref> which takes two arguments and should return <expr>1</expr> if the
 first argument is larger then the second. Returns the sorted array
 - <ref resolved='predef::Array.sort_array.arr'>arr</ref> is not sorted destructively.</p>
<p> The remaining arguments <ref resolved='predef::Array.sort_array.args'>args</ref> will be sent as 3rd, 4th etc. argument
 to <ref resolved='predef::Array.sort_array.cmp'>cmp</ref>.</p>
<p> If <ref resolved='predef::Array.sort_array.cmp'>cmp</ref> is omitted, <ref resolved='predef::`&gt;'>`&gt;()</ref> is used instead.</p>
</text><group><seealso/><text><p><ref resolved='predef::map'>map()</ref>, <ref resolved='predef::sort'>sort()</ref>, <ref resolved='predef::`&gt;'>`&gt;()</ref>, <ref resolved='predef::Array.dwim_sort_func'>dwim_sort_func</ref>, <ref resolved='predef::Array.lyskom_sort_func'>lyskom_sort_func</ref>,
 <ref resolved='predef::Array.oid_sort_func'>oid_sort_func</ref></p>
</text></group></doc>
<method name='sort_array'>
<arguments><argument name='arr'><type><array/></type></argument><argument name='cmp'><type><or><function/><void/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='columns' homogen-type='method'><doc><text><p>Get multiple columns from an array.</p>
<p> This function is equvivalent to
 <pre>
   map(ind, lambda(mixed i) { return column(x, i); })
 </pre></p>
</text><group><seealso/><text><p><ref resolved='predef::column'>column()</ref></p>
</text></group></doc>
<method name='columns'><source-position first-line='225' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='x'><type><array/></type></argument><argument name='ind'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='diff3' homogen-type='method'><doc><text><p>Return the three-way difference between the arrays.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>Array.diff()</ref>, <ref resolved='predef::Array.diff_longest_sequence'>Array.diff_longest_sequence()</ref></p>
</text></group></doc>
<method name='diff3'><source-position first-line='246' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument><argument name='b'><type><array/></type></argument><argument name='c'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><array/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='dwim_sort_func' homogen-type='method'><doc><text><p>Sort without respect to number formatting (most notably leading
 zeroes).</p>
</text></doc>
<method name='dwim_sort_func'><source-position first-line='416' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><string/></type></argument><argument name='b'><type><string/></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='lyskom_sort_func' homogen-type='method'><doc><text><p>Sort comparison function that does not care about case, nor about
 the contents of any parts of the string enclosed with '()'</p>
<p> Example: "Foo (bar)" is given the same weight as "foo (really!)"</p>
</text></doc>
<method name='lyskom_sort_func'><source-position first-line='472' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><string/></type></argument><argument name='b'><type><string/></type></argument></arguments>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='flatten' homogen-type='method'><doc><text><p>Flatten a multi-dimensional array to a one-dimensional array.</p>
</text><group><note/><text><p>Prior to Pike 7.5.7 it was not safe to call this function
   with cyclic data-structures.</p>
</text></group></doc>
<method name='flatten'><source-position first-line='493' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument><argument name='state'><type><or><mapping><indextype><array/></indextype><valuetype><array/></valuetype></mapping><void/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sum' homogen-type='method'><doc><text><p>Sum the elements of an array using `+. The empty array
 results in 0.</p>
</text></doc>
<method name='sum'><source-position first-line='507' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='uniq2' homogen-type='method'><doc><text><p>Perform the same action as the Unix uniq command on an array,
 that is, fold consecutive occurrences of the same element into
 a single element of the result array:</p>
<p> aabbbcaababb -&gt; abcabab.</p>
<p> See also the <ref resolved='predef::Array.uniq'>uniq</ref> function.</p>
</text></doc>
<method name='uniq2'><source-position first-line='531' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='arrayify' homogen-type='method'><doc><text><p>Make an array of the argument, if it isn't already. A zero_type
 argument gives the empty array. This is useful when something is
 either an array or a basic datatype, for instance in headers from
 the MIME module or Protocols.HTTP.Server.</p>
</text><group><param name='x'/><text><p>Result depends of the argument type:</p>
<dl><group><item name='arrayp(x)'/><text><p>arrayify(x) =&gt; x</p>
</text></group><group><item name='zero_type(x)'/><text><p>arrayify(x) =&gt; ({})</p>
</text></group><group><item name='otherwise'/><text><p>arrayify(x) =&gt; ({ x })</p>
</text></group></dl>
</text></group></doc>
<method name='arrayify'><source-position first-line='556' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='x'><type><or><void/><array/><mixed/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='oid_sort_func' homogen-type='method'><doc><text><p>Sort with care of numerical sort for OID values:
 "1.2.1" before "1.11.1"</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.sort_array'>sort_array</ref></p>
</text></group></doc>
<method name='oid_sort_func'><source-position first-line='567' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a0'><type><string/></type></argument><argument name='b0'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='greedy_diff' homogen-type='method'><doc><text><p>Like <ref resolved='predef::Array.diff'>Array.diff</ref>, but tries to generate bigger continuous chunks of the
 differences, instead of maximizing the number of difference chunks. More
 specifically, <ref resolved='predef::Array.greedy_diff'>greedy_diff</ref> optimizes the cases where <ref resolved='predef::Array.diff'>Array.diff</ref> returns
 <expr>({ ..., A, Z, B, ({}), C, ... })</expr>
 <expr>({ ..., A, X, B,  Y+B, C, ... })</expr>
 into the somewhat shorter diff arrays
 <expr>({ ..., A, Z,     B+C, ... })</expr>
 <expr>({ ..., A, X+B+Y, B+C, ... })</expr></p>
</text></doc>
<method name='greedy_diff'><source-position first-line='627' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='from'><type><array/></type></argument><argument name='to'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><array/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='count' homogen-type='method'><doc><text><p>Returns the number of occurrences of <ref resolved='predef::Array.count.needle'>needle</ref> in <ref resolved='predef::Array.count.haystack'>haystack</ref>.
   If the optional <ref resolved='predef::Array.count.needle'>needle</ref> argument is omitted, <ref resolved='predef::Array.count'>count</ref> instead
   works similar to the unix command <tt>sort|uniq -c</tt>, returning
   a mapping with the number of occurrences of each element in
   <ref resolved='predef::Array.count.haystack'>haystack</ref>. For array or mapping <ref resolved='predef::Array.count.haystack'>haystack</ref>s, it's the values
   that are counted, for multisets the indices, as you'd expect.</p>
</text><group><seealso/><text><p><ref resolved='predef::String.count'>String.count</ref>, <ref resolved='predef::search'>search</ref>, <ref resolved='predef::has_value'>has_value</ref></p>
</text></group></doc>
<method name='count'>
<arguments><argument name='haystack'><type><or><array/><mapping/><multiset/></or></type></argument><argument name='needle'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='count'>
<arguments><argument name='haystack'><type><or><array/><mapping/><multiset/></or></type></argument></arguments>
<returntype><mapping><indextype><mixed/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='common_prefix' homogen-type='method'><doc><text><p>Find the longest common prefix from an array of arrays.</p>
</text><group><seealso/><text><p><ref resolved='predef::String.common_prefix'>String.common_prefix</ref></p>
</text></group></doc>
<method name='common_prefix'><source-position first-line='663' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='arrs'><type><array><valuetype><array/></valuetype></array></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='all' homogen-type='method'><doc><text><p>Returns 1 if all of the elements in <ref resolved='predef::Array.all.a'>a</ref> fulfills the requirement
 <ref resolved='predef::Array.all.predicate'>predicate</ref>( <ref resolved='predef::Array.all.a'>a</ref>[<i>i</i>], @<ref resolved='predef::Array.all.extra_args'>extra_args</ref> ), otherwise 0. The
 predicate should return non-zero for an element that meets the
 requirements and zero for those that do not.</p>
</text><group><example/><text><p>Array.all( ({ 2, 4, 6, 8 }), `&lt;, 17 )</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Array.any'>any</ref>, <ref resolved='predef::has_value'>has_value</ref></p>
</text></group></doc>
<method name='all'><source-position first-line='690' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument><argument name='predicate'><type><function><argtype><mixed/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='extra_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='any' homogen-type='method'><doc><text><p>Returns 1 if any of the elements in <ref resolved='predef::Array.any.a'>a</ref> fulfills the requirement
 <ref resolved='predef::Array.any.predicate'>predicate</ref>( <ref resolved='predef::Array.any.a'>a</ref>[<i>i</i>], @<ref resolved='predef::Array.any.extra_args'>extra_args</ref> ), otherwise 0. The
 predicate should return non-zero for an element that meets the
 requirements and zero for those that do not.</p>
</text><group><example/><text><p>Array.any( ({ 2, 4, 6, 8 }), `&gt;, 5 )</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Array.all'>all</ref>, <ref resolved='predef::has_value'>has_value</ref></p>
</text></group></doc>
<method name='any'><source-position first-line='707' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument><argument name='predicate'><type><function><argtype><mixed/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='extra_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='partition' homogen-type='method'><doc><text><p>Splits an array in two, according to an arbitration function
 <ref resolved='predef::Array.partition.arbiter'>arbiter</ref>. The elements in <ref resolved='predef::Array.partition.a'>a</ref> who return non-zero for the
 expression <ref resolved='predef::Array.partition.arbiter'>arbiter</ref>( <ref resolved='predef::Array.partition.a'>a</ref>[<i>i</i>], @<ref resolved='predef::Array.partition.extra_args'>extra_args</ref> ) end up in
 the first sub-array, the others in the second. The order is
 preserved from the original array.</p>
</text><group><example/><text><p>Array.partition( enumerate( 9 ), lambda(int n) { return n&gt;3 &amp;&amp; n&lt;7; } );
   &gt; ({ ({ 4, 5, 6 }), ({ 0, 1, 2, 3, 7, 8 }) })</p>
</text></group><group><seealso/><text><p><ref resolved='predef::filter'>filter</ref>, <ref resolved='predef::`/'>`/</ref>, <ref resolved='predef::`%'>`%</ref></p>
</text></group></doc>
<method name='partition'><source-position first-line='726' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Array.pmod'/>
<arguments><argument name='a'><type><array/></type></argument><argument name='arbiter'><type><function><argtype><mixed/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><mixed/></returntype></function></type></argument><argument name='extra_args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>


<class name='Iterator'><doc><text><p>An object of this class is returned by <ref resolved='predef::get_iterator'>get_iterator()</ref> when
   called with an array.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_iterator'>get_iterator</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='predef::Iterator'><doc>
</doc>
<inherit name='predef::Iterator'><classname resolved='predef::Iterator'>predef::Iterator</classname></inherit>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='interleave_array'><doc><text><p>Interleave a sparse matrix.</p>
<p>   Returns an array with offsets that describe how to interleave
   the rows of <ref resolved='predef::Array.interleave_array.tab'>tab</ref>.</p>
</text></doc>
<method name='interleave_array'>
<arguments><argument name='tab'><type><array><valuetype><mapping><indextype><int/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='longest_ordered_sequence'><doc><text><p>Find the longest ordered sequence of elements.</p>
<p>   This function returns an array of the indices in the longest
   ordered sequence of elements in the array.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>diff()</ref></p>
</text></group></doc>
<method name='longest_ordered_sequence'>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='permute'><doc><text><p>Give a specified permutation of an array.</p>
<p>   The number of permutations is equal to <expr>sizeof(<ref resolved='predef::Array.permute.in'>in</ref>)!</expr>
   (the factorial of the size of the given array).</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.shuffle'>shuffle()</ref></p>
</text></group></doc>
<method name='permute'>
<arguments><argument name='in'><type><array/></type></argument><argument name='number'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='diff'><doc><text><p>Calculates which parts of the arrays that are common to both, and
   which parts that are not.</p>
</text><group><returns/><text><p>Returns an array with two elements, the first is an array of parts in
   array <ref resolved='predef::Array.diff.a'>a</ref>, and the second is an array of parts in array <ref resolved='predef::Array.diff.b'>b</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Array.diff_compare_table'>diff_compare_table()</ref>, <ref resolved='predef::Array.diff_longest_sequence'>diff_longest_sequence()</ref>,
   <ref resolved='predef::String.fuzzymatch'>String.fuzzymatch()</ref></p>
</text></group></doc>
<method name='diff'>
<arguments><argument name='a'><type><array/></type></argument><argument name='b'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><array/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='diff_compare_table'><doc><text><p>Returns an array which maps from index in <ref resolved='predef::Array.diff_compare_table.a'>a</ref> to corresponding
   indices in <ref resolved='predef::Array.diff_compare_table.b'>b</ref>.</p>
<p> <pre>
 &gt; Array.diff_compare_table( ({ "a","b","c" }), ({ "b", "b", "c", "d", "b" }));
 Result: ({
             ({ }),
             ({
                 0,
                 1,
                 4
             }),
             ({
                 2
 	        })
         })
 </pre></p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>diff()</ref>, <ref resolved='predef::Array.diff_longest_sequence'>diff_longest_sequence()</ref>, <ref resolved='predef::String.fuzzymatch'>String.fuzzymatch()</ref></p>
</text></group></doc>
<method name='diff_compare_table'>
<arguments><argument name='a'><type><array/></type></argument><argument name='b'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><int/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='diff_longest_sequence'><doc><text><p>Gives the longest sequence of indices in <ref resolved='predef::Array.diff_longest_sequence.b'>b</ref> that have corresponding
   values in the same order in <ref resolved='predef::Array.diff_longest_sequence.a'>a</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff'>diff()</ref>, <ref resolved='predef::Array.diff_compare_table'>diff_compare_table()</ref>, <ref resolved='predef::String.fuzzymatch'>String.fuzzymatch()</ref></p>
</text></group></doc>
<method name='diff_longest_sequence'>
<arguments><argument name='a'><type><array/></type></argument><argument name='b'><type><array/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='diff_dyn_longest_sequence'><doc><text><p>Gives the longest sequence of indices in <ref resolved='predef::Array.diff_dyn_longest_sequence.b'>b</ref> that have corresponding
   values in the same order in <ref resolved='predef::Array.diff_dyn_longest_sequence.a'>a</ref>.</p>
<p>   This function performs the same operation as <ref resolved='predef::Array.diff_longest_sequence'>diff_longest_sequence()</ref>,
   but uses a different algorithm, which in some rare cases might be faster
   (usually it's slower though).</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.diff_longest_sequence'>diff_longest_sequence()</ref>, <ref resolved='predef::Array.diff'>diff()</ref>, <ref resolved='predef::Array.diff_compare_table'>diff_compare_table()</ref>,
   <ref resolved='predef::String.fuzzymatch'>String.fuzzymatch()</ref></p>
</text></group></doc>
<method name='diff_dyn_longest_sequence'>
<arguments><argument name='a'><type><array/></type></argument><argument name='b'><type><array/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='uniq'><doc><text><p>Remove elements that are duplicates.</p>
</text><group><returns/><text><p>This function returns an copy of the array <ref resolved='predef::Array.uniq.a'>a</ref> with all
   duplicate values removed. The order of the values is kept in the
   result; it's always the first of several equal elements that is
   kept.</p>
</text></group><group><note/><text><p>Elements are compared with <ref resolved='predef::`=='>`==</ref>. They are also hashed (see
   <ref resolved='lfun::__hash'>lfun::__hash</ref> for further details if the array contains
   objects).</p>
</text></group></doc>
<method name='uniq'>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='splice'><doc><text><p>Splice two or more arrays.</p>
<p>   This means that the returned array has the first element in the
   first given array, then the first argument in next array and so
   on for all arrays. Then the second elements are added, etc.</p>
</text><group><seealso/><text><p><ref resolved='predef::`/'>`/()</ref>, <ref resolved='predef::`*'>`*()</ref>, <ref resolved='predef::`+'>`+()</ref>, <ref resolved='predef::`-'>`-()</ref>, <ref resolved='predef::Array.everynth'>everynth()</ref></p>
</text></group></doc>
<method name='splice'>
<arguments><argument name='arr1'><type><array><valuetype><mixed/></valuetype></array></type></argument><argument name='arr2'><type><array><valuetype><mixed/></valuetype></array></type></argument><argument name='more_arrays'><type><varargs><array><valuetype><mixed/></valuetype></array></varargs></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='everynth'><doc><text><p>Return an array with every <ref resolved='predef::Array.everynth.n'>n</ref>:th element of the array <ref resolved='predef::Array.everynth.a'>a</ref>.</p>
<p>   If <ref resolved='predef::Array.everynth.n'>n</ref> is zero every other element will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Array.splice'>splice()</ref>, <ref resolved='predef::`/'>`/()</ref></p>
</text></group></doc>
<method name='everynth'>
<arguments><argument name='a'><type><array><valuetype><mixed/></valuetype></array></type></argument><argument name='n'><type><or><void/><int/></or></type></argument><argument name='start'><type><or><void/><int/></or></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='transpose'><doc><text><p>Takes an array of equally sized arrays (essentially a matrix of size M*N)
 and returns the transposed (N*M) version of it, where rows and columns
 are exchanged for one another.</p>
</text></doc>
<method name='transpose'>
<arguments><argument name='matrix'><type><array><valuetype><array/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='GLU'><doc><text><p>The GL Utilities module is a partial implementation of the
 GLU library. This module only contains functions that someone
 at some point actually needed to get his work done. If you
 need a GLU function that isn't in here, copy the C code from
 the GLU library (Mesa was used last time), tweak it so that
 it compiles as Pike code and then check it in into the CVS.</p>
</text></doc><docgroup homogen-type='import'><doc>
</doc>
<import><source-position first-line='17' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLU.pmod'/><classname resolved='predef::GL'>GL</classname></import>
</docgroup>
<docgroup homogen-name='gluLookAt' homogen-type='method'><doc><text><p>gluLookAt creates a viewing matrix derived from an <ref resolved='predef::GLU.gluLookAt.eye'>eye</ref> point,
 a reference point indicating the <ref resolved='predef::GLU.gluLookAt.center'>center</ref> of the scene, and an
 <ref resolved='predef::GLU.gluLookAt.up'>up</ref> vector. The matrix maps the reference point to the negative
 z axis and the eye point to the origin, so that, when a typical
 projection matrix is used, the center of the scene maps to the
 center of the viewport. Similarly, the direction described by the
 up vector projected onto the viewing plane is mapped to the positive
 y axis so that it points upward in the viewport. The up vector must
 not be parallel to the line of sight from the eye to the reference
 point.</p>
<p> The matrix generated by gluLookAt postmultiplies the current matrix.</p>
<p> The relation between the matrix objects and the float values are</p>
<code><text><p>Math.Matrix eye = Math.Matrix( ({ eyex, eyey, eyez }) );</p>
</text></code>
</text><group><seealso/><text><p><ref resolved='predef::GL.glFrustum'>GL.glFrustum</ref>, <ref resolved='predef::GLU.gluPerspective'>gluPerspective</ref></p>
</text></group></doc>
<method name='gluLookAt'>
<arguments><argument name='eyex'><type><float/></type></argument><argument name='eyey'><type><float/></type></argument><argument name='eyez'><type><float/></type></argument><argument name='centerx'><type><float/></type></argument><argument name='centery'><type><float/></type></argument><argument name='centerz'><type><float/></type></argument><argument name='upx'><type><float/></type></argument><argument name='upy'><type><float/></type></argument><argument name='upz'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='gluLookAt'>
<arguments><argument name='eye'><type><object resolved='predef::Math.Matrix'>Math.Matrix</object></type></argument><argument name='center'><type><object resolved='predef::Math.Matrix'>Math.Matrix</object></type></argument><argument name='up'><type><object resolved='predef::Math.Matrix'>Math.Matrix</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gluOrtho2D' homogen-type='method'><doc><text><p>gluOrtho2D sets up a two-dimensional orthographic viewing region.
 This is equivalent to calling</p>
<code><text><p>glOrtho(left, right, bottom, top, -1.0, 1.0);</p>
</text></code></text><group><fixme/><text><p>The GLU manual says <expr>glOrtho(a,b,c,d, 0, 1)</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::GL.glOrtho'>GL.glOrtho</ref>, <ref resolved='predef::GLU.gluPerspective'>gluPerspective</ref></p>
</text></group></doc>
<method name='gluOrtho2D'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLU.pmod'/>
<arguments><argument name='left'><type><float/></type></argument><argument name='right'><type><float/></type></argument><argument name='bottom'><type><float/></type></argument><argument name='top'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gluPerspective' homogen-type='method'><doc><text><p>gluPerspective specifies a viewing frustum into the world coordinate
 system. In general, the aspect ratio in gluPerspective should match
 the aspect ratio of the associated viewport. For example, aspect =
 2.0 means the viewer's angle of view is twice as wide in x as it is
 in y. If the viewport is twice as wide as it is tall, it displays the
 image without distortion.</p>
<p> The matrix generated by gluPerspective is multipled by the current
 matrix, just as if <ref resolved='predef::GL.glMultMatrix'>GL.glMultMatrix</ref> were called with the generated
 matrix. To load the perspective matrix onto the current matrix stack
 instead, precede the call to gluPerspective with a call to
 <ref resolved='predef::GL.glLoadIdentity'>GL.glLoadIdentity</ref>.</p>
</text></doc>
<method name='gluPerspective'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLU.pmod'/>
<arguments><argument name='fovy'><type><float/></type></argument><argument name='aspect'><type><float/></type></argument><argument name='zNear'><type><float/></type></argument><argument name='zFar'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gluPickMatrix' homogen-type='method'><doc><text><p>gluPickMatrix creates a projection matrix that can be used to
 restrict drawing to a small region of the viewport. This is
 typically useful to determine what objects are being drawn
 near the cursor. Use gluPickMatrix to restrict drawing to a
 small region around the cursor. Then, enter selection mode
 (with <ref resolved='predef::GL.glRenderMode'>GL.glRenderMode</ref> and rerender the scene. All primitives
 that would have been drawn near the cursor are identified and
 stored in the selection buffer.</p>
<p> The matrix created by gluPickMatrix is multiplied by the current
 matrix just as if <ref resolved='predef::GL.glMultMatrix'>GL.glMultMatrix</ref> is called with the generated
 matrix. To effectively use the generated pick matrix for picking,
 first call <ref resolved='predef::GL.glLoadIdentity'>GL.glLoadIdentity</ref> to load an identity matrix onto
 the perspective matrix stack. Then call gluPickMatrix, and
 finally, call a command (such as <ref resolved='predef::GLU.gluPerspective'>gluPerspective</ref>) to multiply
 the perspective matrix by the pick matrix.</p>
<p> When using gluPickMatrix to pick NURBS, be careful to turn off the
 NURBS property GLU_AUTO_LOAD_MATRIX. If GLU_AUTO_LOAD_MATRIX is not
 turned off, then any NURBS surface rendered is subdivided
 differently with the pick matrix than the way it was subdivided
 without the pick matrix.</p>
</text><group><param name='viewport'/><text><p>The viewport is an array with four integers.</p>
</text></group><group><fixme/><text><p>Does the NURB remark apply?</p>
</text></group><group><seealso/><text><p><ref>GL.glGet</ref>, <ref>gluLoadIdentity</ref>, <ref>gluMultMatrix</ref>, <ref>gluRenderMode</ref>,
   <ref resolved='predef::GLU.gluPerspective'>gluPerspective</ref></p>
</text></group></doc>
<method name='gluPickMatrix'><source-position first-line='160' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLU.pmod'/>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='width'><type><float/></type></argument><argument name='height'><type><float/></type></argument><argument name='viewport'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gluProject' homogen-type='method'><doc><text><p>gluProject transforms the specified object coordinates into window
 coordinates using <ref resolved='predef::GLU.gluProject.model'>model</ref>, <ref resolved='predef::GLU.gluProject.proj'>proj</ref>, and <ref resolved='predef::GLU.gluProject.viewport'>viewport</ref>. The result is
 returned in a three valued array.</p>
</text></doc>
<method name='gluProject'><source-position first-line='197' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GLU.pmod'/>
<arguments><argument name='objx'><type><float/></type></argument><argument name='objy'><type><float/></type></argument><argument name='objz'><type><float/></type></argument><argument name='model'><type><array><valuetype><float/></valuetype></array></type></argument><argument name='proj'><type><array><valuetype><float/></valuetype></array></type></argument><argument name='viewport'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
</module>

<module name='Function'><docgroup homogen-name='splice_call' homogen-type='method'><doc><text><p>Calls the given function with the <ref resolved='predef::Function.splice_call.args'>args</ref> array plus the optional
 extra arguments as its arguments and returns the result.</p>
<p> Most useful in conjunction with <ref resolved='predef::map'>map</ref>, and particularly in combination
 with <ref resolved='predef::sscanf'>sscanf</ref> with <expr>"...%{...%}..."</expr> scan strings (which indeed
 was what it was invented for in the first place).</p>
</text><group><param name='args'/><text><p>The first arguments the function <ref resolved='predef::Function.splice_call.f'>f</ref> expects.</p>
</text></group><group><param name='f'/><text><p>The function to apply the arguments on.</p>
</text></group><group><param name='extra'/><text><p>Optional extra arguments to send to <ref resolved='predef::Function.splice_call.f'>f</ref>.</p>
</text></group><group><returns/><text><p>Whatever the supplied function <ref resolved='predef::Function.splice_call.f'>f</ref> returns.</p>
</text></group><group><example/><text><code><text><p>class Product(string name, string version)
   {
     string _sprintf()
     {
       return sprintf("Product(%s/%s)", name, version);
     }
   }
   map(({ ({ "pike",   "7.1.11" }),
          ({ "whitefish", "0.1" }) }),
       Function.splice_call, Product);
   ({ /* 2 elements */
	 Product(pike/7.1.11),
	 Product(whitefish/0.1)
   })</p>
</text></code>
</text></group></doc>
<method name='splice_call'><source-position first-line='38' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Function.pmod'/>
<arguments><argument name='args'><type><array/></type></argument><argument name='f'><type><function/></type></argument><argument name='extra'><type><varargs><or><mixed/><void/></or></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='Y' homogen-type='method'><doc><text><p>The dreaded fixpoint combinator "Y".</p>
<p> The Y combinator is useful when writing recursive lambdas.  It
 converts a lambda that expects a self-reference as its first argument
 into one which can be called without this argument.</p>
</text><group><example/><text><p>This example creates a lambda that computes the faculty function.</p>
<code><text><p>Function.Y(lambda(function f, int n) { return n&gt;1? n*f(n-1) : 1; })</p>
</text></code>
</text></group></doc>
<method name='Y'><source-position first-line='55' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Function.pmod'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='curry' homogen-type='method'><doc><text><p>Partially evaluate a function call.</p>
<p> This function allows N parameters to be given to a function taking
 M parameters (N&lt;=M), yielding a new function taking M-N parameters.</p>
<p> What is actually returned from this function is a function taking N
 parameters, and returning a function taking M-N parameters.</p>
</text><group><example/><text><p>This example creates a function adding 7 to its argument.</p>
<code><text><p>Function.curry(`+)(7)</p>
</text></code>
</text></group></doc>
<method name='curry'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Function.pmod'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-name='call_callback' homogen-type='method'><doc><text><p>Call a callback function, but send throws from the callback
 function (ie, errors) to master()-&gt;handle_error.
 Also accepts if f is zero (0) without error.</p>
</text><group><example/><text><code><text><p>Functions.call_callback(the_callback,some,arguments);</p>
</text></code><p>equals</p>
<code><text><p>{
      mixed err=catch { if (the_callback) the_callback(some,arguments); };
      if (err) master()-&gt;handle_error(err);
   }</p>
</text></code><p>(Approximately, since call_callback also calls handle_error
 if 0 were thrown.)</p>
</text></group></doc>
<method name='call_callback'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Function.pmod'/>
<arguments><argument name='f'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='defined'><doc><text><p>Returns a string with filename and linenumber where <ref resolved='predef::Function.defined.fun'>fun</ref>
   was defined.</p>
<p>   Returns <expr>0</expr> (zero) when no line can be found, e.g. for
   builtin functions and functions in destructed objects.</p>
</text></doc>
<method name='defined'>
<arguments><argument name='fun'><type><function/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>



<module name='Local'><doc><text><p><ref resolved='predef::Local'>Local</ref> gives a local module namespace used for locally
 installed pike modules. Modules are searched for in
 the directory <tt>pike_modules</tt> which can be located in
 the user's home directory or profile directory, or in any
 of the system directories <tt>/opt/share, /usr/local/share,
 /opt</tt> or <tt>/usr/local/</tt>. The user's home directory is
 determined by examining the environment variable HOME, and
 if that fails the environment variable USERPROFILE. If the 
 environment variable PIKE_LOCAL_PATH is set, the paths specified
 there will be searched first.</p>
</text><group><seealso/><text><p><ref resolved='predef::Local.add_path'>Local.add_path()</ref>, <ref resolved='predef::Local.remove_path'>Local.remove_path()</ref></p>
</text></group></doc><docgroup homogen-name='add_path' homogen-type='method'><doc><text><p>This function prepends <ref resolved='predef::Local.add_path.path'>path</ref> to the <ref resolved='predef::Local'>Local</ref> module
 searchpath.</p>
</text><group><param name='path'/><text><p>The path to the directory to be added.</p>
</text></group><group><returns/><text><p>Returns 1 on success, otherwise 0.</p>
</text></group></doc>
<method name='add_path'><source-position first-line='95' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Local.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_path' homogen-type='method'><doc><text><p>This function removes <ref resolved='predef::Local.remove_path.path'>path</ref> from the <ref resolved='predef::Local'>Local</ref> module
 searchpath. If <ref resolved='predef::Local.remove_path.path'>path</ref> is not in the search path, this is
 a noop.</p>
</text><group><param name='path'/><text><p>The path to be removed.</p>
</text></group></doc>
<method name='remove_path'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Local.pmod'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module>

<module name='Program'><docgroup homogen-name='all_inherits' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='all_inherits'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Program.pmod'/>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><array><valuetype><program/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='inherit_tree' homogen-type='method'><doc><text><p>Recursively builds a inheritance tree by
 fetching programs inheritance lists.</p>
</text><group><returns/><text><p>Returns an array with programs or arrays
  as elements.</p>
</text></group><group><example/><text><p>&gt; class a{}
  &gt; class b{}
  &gt; class c{ inherit a; }
  &gt; class d{ inherit b; inherit c; }
  &gt; Program.inherit_tree(d);
  Result: ({ /* 3 elements */
              d,
              ({ /* 1 element */
                  program
              }),
              ({ /* 2 elements */
                  c,
                  ({ /* 1 element */
                      program
                  })
              })
          })</p>
</text></group></doc>
<method name='inherit_tree'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Program.pmod'/>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='inherit_list'><doc><text><p>Returns an array with the programs that <ref resolved='predef::Program.inherit_list.p'>p</ref> has inherited.</p>
</text></doc>
<method name='inherit_list'>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><array><valuetype><program/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='implements' homogen-type='method'><doc><text><p>Returns 1 if <ref resolved='predef::Program.implements.prog'>prog</ref> implements <ref resolved='predef::Program.implements.api'>api</ref>.</p>
</text></doc>
<method name='implements'>
<arguments><argument name='prog'><type><program/></type></argument><argument name='api'><type><program/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='inherits' homogen-type='method'><doc><text><p>Returns 1 if <ref resolved='predef::Program.inherits.child'>child</ref> has inherited <ref resolved='predef::Program.inherits.parent'>parent</ref>.</p>
</text></doc>
<method name='inherits'>
<arguments><argument name='child'><type><program/></type></argument><argument name='parent'><type><program/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='defined' homogen-type='method'><doc><text><p>Returns a string with filename and linenumber describing where
 the program <ref resolved='predef::Program.defined.p'>p</ref> was defined.</p>
<p> The returned string is of the format <expr>"filename:linenumber"</expr>.</p>
<p> If it cannot be determined where the program was defined, <expr>0</expr>
 (zero) will be returned.</p>
</text></doc>
<method name='defined'>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup></module>

<module name='Process'>

<class name='Process'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/><doc><text><p>Slightly polished version of <ref resolved='predef::Process.create_process'>create_process</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Process.create_process'>create_process</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='create_process'><doc>
</doc>
<inherit name='create_process'><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/><classname resolved='predef::Process.create_process'>create_process</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='args'/><text><p>Either a command line array, as the command_args
   argument to <ref resolved='predef::Process.create_process'>create_process()</ref>, or a string that
   will be splitted into a command line array by
   calling <ref resolved='predef::Process.split_quoted_string'>split_quoted_string()</ref> in an operating
   system dependant mode.</p>
</text></group><group><param name='m'/><text><p>In addition to the modifiers that <ref resolved='predef::Process.create_process'>create_process</ref> accepts,
   this object also accepts</p>
<mapping><group><member><type><function><argtype><object resolved='predef::Process.Process'>Process</object></argtype><returntype><void/></returntype></function></type><index>"read_callback"</index></member><text><p>This callback is called when there is data to be read
       from the process.</p>
</text></group><group><member><type><function><argtype><object resolved='predef::Process.Process'>Process</object></argtype><returntype><void/></returntype></function></type><index>"timeout_callback"</index></member><text><p>This callback is called if the process times out.</p>
</text></group><group><member><type><int/></type><index>"timeout"</index></member><text><p>The time it takes for the process to time out. Default is
       15 seconds.</p>
</text></group></mapping></text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>create_process</ref>, <ref resolved='predef::Process.split_quoted_string'>split_quoted_string</ref></p>
</text></group></doc>
<method name='create'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/><modifiers><static/></modifiers>
<arguments><argument name='args'><type><or><string/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='m'><type><or><void/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Spawn'><source-position first-line='303' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position first-line='373' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='cmd'><type><string/></type></argument><argument name='args'><type><or><void/><array><valuetype><string/></valuetype></array></or></type></argument><argument name='env'><type><or><void/><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></or></type></argument><argument name='cwd'><type><or><string/><void/></or></type></argument><argument name='ownpipes'><type><or><void/><array><valuetype><or><object resolved='predef::Stdio.File'>Stdio.File</object><void/></or></valuetype></array></or></type></argument><argument name='fds_to_close'><type><or><void/><array><valuetype><or><object resolved='predef::Stdio.File'>Stdio.File</object><void/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='kill' homogen-type='method'><doc/>
<method name='kill'><source-position first-line='400' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='signal'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='wait' homogen-type='method'><doc/>
<method name='wait'><source-position first-line='407' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='exec' homogen-type='method'><doc/>
<method name='exec'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='file'><type><string/></type></argument><argument name='foo'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='search_path' homogen-type='method'><doc/>
<method name='search_path'><source-position first-line='107' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='command'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sh_quote' homogen-type='method'><doc/>
<method name='sh_quote'><source-position first-line='146' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='split_quoted_string' homogen-type='method'><doc/>
<method name='split_quoted_string'><source-position first-line='154' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='nt_mode'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='spawn' homogen-type='method'><doc/>
<method name='spawn'><source-position first-line='236' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='s'><type><string/></type></argument><argument name='stdin'><type><or><object resolved='predef::Process.spawn'/><void/></or></type></argument><argument name='stdout'><type><or><object resolved='predef::Process.spawn'/><void/></or></type></argument><argument name='stderr'><type><or><object resolved='predef::Process.spawn'/><void/></or></type></argument><argument name='cleanup'><type><or><function/><void/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Process.Process'>Process</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='popen' homogen-type='method'><doc/>
<method name='popen'><source-position first-line='258' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='system' homogen-type='method'><doc/>
<method name='system'><source-position first-line='286' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/Process.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>


<class name='create_process'><doc><text><p>This is the recommended and most portable way to start processes
 in Pike. The process object is a pike abstraction of the running
 system process, with methods for various process housekeeping.</p>
</text></doc><docgroup homogen-type='method' homogen-name='wait'><doc><text><p>Waits for the process to end.</p>
</text><group><returns/><text><int><group><value><minvalue>0</minvalue></value><text><p>The exit code of the process.</p>
</text></group><group><value>-1</value><text><p>The process was killed by a signal.</p>
</text></group></int>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.TraceProcess.wait'>TraceProcess()-&gt;wait()</ref></p>
</text></group></doc>
<method name='wait'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='status'><doc><text><p>Returns the status of the process:</p>
<int><group><value>-1</value><text><p>Unknown</p>
</text></group><group><value>0</value><text><p>Running</p>
</text></group><group><value>1</value><text><p>Stopped</p>
</text></group><group><value>2</value><text><p>Exited</p>
</text></group></int>
</text><group><note/><text><p>Prior to Pike 7.5 the value 1 was returned for exited processes.</p>
</text></group></doc>
<method name='status'>
<arguments/>
<returntype><int><min>-1</min><max>2</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='last_signal'><doc><text><p>Returns the last signal that was sent to the process.</p>
</text></doc>
<method name='last_signal'>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pid'><doc><text><p>Returns the process identifier of the process.</p>
</text></doc>
<method name='pid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_priority'><doc><text><p>Sets the priority of the process. <ref resolved='predef::Process.create_process.set_priority.priority'>priority</ref> is one of the strings</p>
<dl><group><item name='realtime'/><item name='highest'/><item name='higher'/><item name='high'/><item name='low'/><item name='lowest'/></group></dl></text></doc>
<method name='set_priority'>
<arguments><argument name='priority'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='limit_value'><doc><text><p>Each <i>limit_value</i> may be either of:</p>
<dl><group><item name='integer'/><text><p>sets current limit, max is left as it is.</p>
</text></group><group><item name='mapping'/><text><p>([ "hard":int, "soft":int ]) Both values are optional,
   hard &lt;= soft.</p>
</text></group><group><item name='array'/><text><p>({ hard, soft }), both can be set to the string
   "unlimited". A value of -1 means 'keep the old value'.</p>
</text></group><group><item name='string'/><text><p>The string "unlimited" sets both the hard and soft limit to unlimited</p>
</text></group></dl></text></doc>
<constant name='limit_value'><source-position first-line='2371' file='/home/peter/hack/Pike/7.6-distmaker/src/signal_handler.c'/></constant>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><group><param name='command_args'/><text><p>The command name and its command-line arguments. You do not have
 to worry about quoting them; pike does this for you.</p>
</text></group><group><param name='modifiers'/><text><p>This optional mapping can can contain zero or more of the
 following parameters:</p>
<mapping><group><member><type><string/></type><index>"cwd"</index></member><text><p>Execute the command in another directory than the current
  directory of this process. Please note that if the command is
  given is a relative path, it will be relative to this directory
  rather than the current directory of this process.</p>
</text></group><group><member><type><string/></type><index>"chroot"</index></member><text><p>Chroot to this directory before executing the command.</p>
</text></group><group><member><type><object resolved='predef::Stdio.File'>Stdio.File</object></type><index>"stdin"</index></member><member><type><object resolved='predef::Stdio.File'>Stdio.File</object></type><index>"stdout"</index></member><member><type><object resolved='predef::Stdio.File'>Stdio.File</object></type><index>"stderr"</index></member><text><p>These parameters allows you to change the standard input, output
  and error streams of the newly created process. This is
  particularly useful in combination with <ref resolved='predef::Stdio.File.pipe'>Stdio.File.pipe</ref>.</p>
</text></group><group><member><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type><index>"env"</index></member><text><p>This mapping will become the environment variables for the
  created process. Normally you will want to only add or change
  variables which can be achived by getting the environment mapping
  for this process with <ref resolved='predef::getenv'>getenv</ref>. See the examples section.</p>
</text></group><group><member><type><or><int/><string/></or></type><index>"uid"</index></member><text><p>This parameter changes which user the new process will execute
  as. Note that the current process must be running as UID 0 to use
  this option. The uid can be given either as an integer as a
  string containing the login name of that user.</p>
<p>  The "gid" and "groups" for the new process will be set to the
  right values for that user unless overriden by options below.</p>
<p>  (See <ref>setuid</ref> and <ref resolved='predef::getpwuid'>getpwuid</ref> for more info.)</p>
</text></group><group><member><type><or><int/><string/></or></type><index>"gid"</index></member><text><p>This parameter changes the primary group for the new process.
  When the new process creates files, they will will be created
  with this group. The group can either be given as an int or a
  string containing the name of the group. (See <ref>setuid</ref>
  and <ref resolved='predef::getgrgid'>getgrgid</ref> for more info.)</p>
</text></group><group><member><type><or><int><min>0</min><max>1</max></int><object resolved='predef::Stdio.File'>Stdio.File</object></or></type><index>"setsid"</index></member><text><p>Set this to <expr>1</expr> to create a new session group.
  It is also possible to set it to a File object, in which
  case a new session group will be created with this file
  as the controlling terminal.</p>
</text></group><group><member><type><array><valuetype><or><int/><string/></or></valuetype></array></type><index>"setgroups"</index></member><text><p>This parameter allows you to the set the list of groups that the
  new process belongs to. It is recommended that if you use this
  parameter you supply at least one and no more than 16 groups.
  (Some system only support up to 8...) The groups can be given as
  gids or as strings with the group names.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"noinitgroups"</index></member><text><p>This parameter overrides a behaviour of the "uid" parameter. If
  this parameter is used, the gid and groups of the new process
  will be inherited from the current process rather than changed to
  the approperiate values for that uid.</p>
</text></group><group><member><type><string/></type><index>"priority"</index></member><text><p>This sets the priority of the new process, see
  <ref resolved='predef::Process.create_process.set_priority'>set_priority</ref> for more info.</p>
</text></group><group><member><type><int/></type><index>"nice"</index></member><text><p>This sets the nice level of the new process; the lower the
  number, the higher the priority of the process. Note that only
  UID 0 may use negative numbers.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"keep_signals"</index></member><text><p>This prevents Pike from restoring all signal handlers to their
  default values for the new process. Useful to ignore certain
  signals in the new process.</p>
</text></group><group><member><type><array><valuetype><or><object resolved='predef::Stdio.File'>Stdio.File</object><int><min>0</min><max>0</max></int></or></valuetype></array></type><index>"fds"</index></member><text><p>This parameter allows you to map files to filedescriptors 3 and
  up. The file <expr>fds[0]</expr> will be remapped to fd 3 in the new
  process, etc.</p>
</text></group><group><member><type><mapping><indextype><string/></indextype><valuetype><object resolved='predef::Process.create_process.limit_value'>limit_value</object></valuetype></mapping></type><index>"rlimit"</index></member><text><p>There are two values for each limit, the soft limit and the hard
  limit. Processes that do not have UID 0 may not raise the hard
  limit, and the soft limit may never be increased over the hard
  limit. The indices of the mapping indicate what limit to impose,
  and the values dictate what the limit should be. (See also
  <ref resolved='predef::System.setrlimit'>System.setrlimit</ref>)</p>
<mapping><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"core"</index></member><text><p>maximum core file size in bytes</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"cpu"</index></member><text><p>maximum amount of cpu time used by the process in seconds</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"data"</index></member><text><p>maximum heap (brk, malloc) size in bytes</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"fsize"</index></member><text><p>maximum size of files created by the process in bytes</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"map_mem"</index></member><text><p>maximum size of the process's mapped address space (mmap() and
  heap size) in bytes</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"mem"</index></member><text><p>maximum size of the process's total amount of available memory
  (mmap, heap and stack size) in bytes</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"nofile"</index></member><text><p>maximum number of file descriptors the process may create</p>
</text></group><group><member><type><object resolved='predef::Process.create_process.limit_value'>limit_value</object></type><index>"stack"</index></member><text><p>maximum stack size in bytes</p>
</text></group></mapping>
</text></group></mapping>
</text></group><group><example/><text><p>Process.create_process(({ "/usr/bin/env" }),
                        (["env" : getenv() + (["TERM":"vt100"]) ]));</p>
</text></group><group><example/><text><p>//! Spawn a new process with the args @[args] and optionally a
 //! standard input if you provide such a @[Stdio.File] object.
 //! @returns
 //!   Returns the new process and a pipe from which you can read
 //!   its output.
 array(Process.Process|Stdio.File) spawn(Stdio.File|void stdin, string ... args)
 {
   Stdio.File stdout = Stdio.File();
   mapping opts = ([ "stdout" : stdout-&gt;pipe() ]);
   if( stdin )
    opts-&gt;stdin = stdin;
   return ({ Process.create_process( args, opts ), stdout });
 }</p>
</text></group><group><note/><text><p>All parameters that accept both string or int input can be
   noticeably slower using a string instead of an integer; if maximum
   performance is an issue, please use integers.</p>
<p>   The modifiers <expr>"fds"</expr>, <expr>"uid"</expr>, <expr>"gid"</expr>,
   <expr>"nice"</expr>, <expr>"noinitgroups"</expr>, <expr>"setgroups"</expr>,
   <expr>"keep_signals"</expr> and <expr>"rlimit"</expr> only exist on unix.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='command_args'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='modifiers'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='kill'><doc><group><note/><text><p>This function is only available on platforms that
   support signals.</p>
</text></group></doc>
<method name='kill'>
<arguments><argument name='signal'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='TraceProcess'><doc><text><p>Class that enables tracing of processes.</p>
<p>   The new process will be started in stopped state.
   Use <ref resolved='predef::Process.TraceProcess.cont'>cont()</ref> to let it start executing.</p>
</text><group><note/><text><p>This class currently only exists on systems that
   implement <tt>ptrace()</tt>.</p>
</text></group></doc>

<class name='Registers'><doc><text><p>Interface to the current register contents of
   a stopped process.</p>
</text><group><seealso/><text><p><ref resolved='predef::Process.TraceProcess'>TraceProcess</ref></p>
</text></group></doc><docgroup homogen-type='method' homogen-name='`[]'><doc><text><p>Get the contents of register <ref resolved='predef::Process.TraceProcess.Registers.`[].regno'>regno</ref>.</p>
</text></doc>
<method name='`[]'>
<arguments><argument name='regno'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='create_process'><doc/>
<inherit name='create_process'><source-position first-line='1677' file='/home/peter/hack/Pike/7.6-distmaker/src/signal_handler.c'/><classname resolved='predef::Process.create_process'>create_process</classname></inherit>
</docgroup>
<docgroup homogen-type='method' homogen-name='wait'><doc><text><p>Waits for the process to stop.</p>
</text><group><returns/><text><int><group><value><minvalue>0</minvalue></value><text><p>The exit code of the process.</p>
</text></group><group><value>-1</value><text><p>The process was killed by a signal.</p>
</text></group><group><value>-2</value><text><p>The process has stopped.</p>
</text></group></int>
</text></group><group><seealso/><text><p><ref>create_process::wait()</ref></p>
</text></group></doc>
<method name='wait'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cont'><doc><text><p>Allow a traced process to continue.</p>
</text><group><param name='signal'/><text><p>Deliver this signal to the process.</p>
</text></group><group><note/><text><p>This function may only be called for stopped processes.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.TraceProcess.wait'>wait()</ref></p>
</text></group></doc>
<method name='cont'>
<arguments><argument name='signal'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='exit'><doc><text><p>Cause the traced process to exit.</p>
</text><group><note/><text><p>This function may only be called for stopped processes.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.TraceProcess.cont'>cont()</ref>, <ref resolved='predef::Process.TraceProcess.wait'>wait()</ref></p>
</text></group></doc>
<method name='exit'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='GDK'><docgroup homogen-type='import'><doc/>
<import><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GDK.pmod'/><classname resolved='predef::GTK'>GTK</classname></import>
</docgroup>
<docgroup homogen-type='constant' homogen-name='Atom'><doc/>
<constant name='Atom'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/GDK.pmod'/></constant>
</docgroup>


<class name='Color'><doc><text><p>The GDK.Color object is used to represent a color.
 When you call GDK.Color(r,g,b) the color will be allocated
 from the X-server. The constructor can return an  exception if there are
 no more colors to allocate.
 NOIMG</p>
</text></doc><docgroup homogen-name='blue' homogen-type='method'><doc><text><p>Returns the blue color component.</p>
</text></doc>
<method name='blue'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='9'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>r g and b are in the range 0 to 255, inclusive.
 If color is specified, it should be an Image.Color object, and the
 only argument.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments><argument name='color_or_r'><type><or><object resolved='predef::GDK.Color.create'/><int/></or></type></argument><argument name='g'><type><or><int/><void/></or></type></argument><argument name='b'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Destroys the color object. Please note that this function does
 not free the color from the X-colormap (in case of pseudocolor)
 right now.</p>
</text></doc>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='21'/>
<arguments/>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='green' homogen-type='method'><doc><text><p>Returns the green color component.</p>
</text></doc>
<method name='green'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='28'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='image_color_object' homogen-type='method'><doc><text><p>Return a Image.Color.Color instance.
 This gives better precision than the rgb function.</p>
</text></doc>
<method name='image_color_object'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='33'/>
<arguments/>
<returntype><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pixel' homogen-type='method'><doc><text><p>Returns the pixel value of the color. See <url href='gdk.image.xml#set_pixel'>GDK.Image-&gt;set_pixel</url>.</p>
</text></doc>
<method name='pixel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='39'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='red' homogen-type='method'><doc><text><p>Returns the red color component.</p>
</text></doc>
<method name='red'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='44'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rgb' homogen-type='method'><doc><text><p>Returns the red green and blue color components as an array.</p>
</text></doc>
<method name='rgb'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Color.pike' first-line='49'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<class name='Bitmap'><doc><text><p>A bitmap is a black and white pixmap. Most commonly used as masks
 for images, widgets and pixmaps.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='Drawable' homogen-type='inherit'><doc>
</doc>
<inherit name='Drawable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Bitmap.pike' first-line='8'/><classname resolved='predef::GDK.Drawable'>GDK.Drawable</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GDK.Bitmap object.
 Argument is either an Image.image object, or {xsisze,ysize,xbitmapdata}.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Bitmap.pike' first-line='10'/><modifiers><static/></modifiers>
<arguments><argument name='xsize_or_image'><type><or><int/><object resolved='predef::Image.Image'>Image.Image</object></or></type></argument><argument name='ysize'><type><or><int/><void/></or></type></argument><argument name='bitmap'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Destructor. Destroys the bitmap. This will free the bitmap on the X-server.</p>
</text></doc>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Bitmap.pike' first-line='16'/>
<arguments/>
<returntype><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='ref' homogen-type='method'><doc><text><p>Add a reference</p>
</text></doc>
<method name='ref'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Bitmap.pike' first-line='21'/>
<arguments/>
<returntype><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unref' homogen-type='method'><doc><text><p>Remove a reference</p>
</text></doc>
<method name='unref'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Bitmap.pike' first-line='26'/>
<arguments/>
<returntype><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></returntype>
</method>
</docgroup>
</class>

<class name='Region'><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new (empty) region</p>
<p> NOIMG</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='3'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='10'/>
<arguments/>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='equal' homogen-type='method'><doc><text><p>Return true if the region used as an argument is equal to the
 current region. Also available as a==b when a is a region.</p>
</text></doc>
<method name='equal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='13'/>
<arguments><argument name='victim'><type><object resolved='predef::GDK.Region'>GDK.Region</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='intersect' homogen-type='method'><doc><text><p>Computes the intersection of the given region and the region. Also
 available as region &amp;amp; region</p>
</text></doc>
<method name='intersect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='19'/>
<arguments><argument name='victim'><type><object resolved='predef::GDK.Region'>GDK.Region</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='offset' homogen-type='method'><doc><text><p>Offset(move) the region by dx,dy pixels.</p>
</text></doc>
<method name='offset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='25'/>
<arguments><argument name='dx'><type><int/></type></argument><argument name='dy'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='point_in' homogen-type='method'><doc><text><p>Returns true if the given point resides in the given region</p>
</text></doc>
<method name='point_in'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='30'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rect_in' homogen-type='method'><doc><text><p>Returns true if the given rectangle resides inside the given region</p>
</text></doc>
<method name='rect_in'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='35'/>
<arguments><argument name='r'><type><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='shrink' homogen-type='method'><doc><text><p>reduces the size of a region by a
 specified amount.  Positive values shrink the size of the
 region, and negative values expand the region.</p>
</text></doc>
<method name='shrink'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='40'/>
<arguments><argument name='dx'><type><int/></type></argument><argument name='dy'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='subtract' homogen-type='method'><doc><text><p>Computes the difference of the given region and the region.
 Also available as region - region</p>
</text></doc>
<method name='subtract'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='47'/>
<arguments><argument name='victim'><type><object resolved='predef::GDK.Region'>GDK.Region</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='union' homogen-type='method'><doc><text><p>Computes the union of the given rectangle or region and the region. 
 Also available as region | rectangle, region | region, region +
 region and region + rectangle.</p>
</text></doc>
<method name='union'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='53'/>
<arguments><argument name='victim'><type><object resolved='predef::GDK.Region'>GDK.Region</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='xor' homogen-type='method'><doc><text><p>Computes the exlusive or of the given region and the region.
 Also available as region ^ region</p>
</text></doc>
<method name='xor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Region.pike' first-line='60'/>
<arguments><argument name='victim'><type><object resolved='predef::GDK.Region'>GDK.Region</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Region'>GDK.Region</object></returntype>
</method>
</docgroup>
</class>

<class name='Pixmap'><doc><text><p>This class creates a GDK.Pixmap from either an GDK.Image or
 Image.image object (or a numeric ID, see your X-manual for XIDs).
  The GDK.Pixmap object can be used in a lot
 of different GTK widgets.  The most notable is the W(Pixmap)
 widget.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='Drawable' homogen-type='inherit'><doc>
</doc>
<inherit name='Drawable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='11'/><classname resolved='predef::GDK.Drawable'>GDK.Drawable</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GDK.Pixmap object.
 Argument is a GDK.Image object or a Image.Image object</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='13'/><modifiers><static/></modifiers>
<arguments><argument name='image'><type><or><int/><object resolved='predef::GDK.Pixmap.create'/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Destructor. Destroys the pixmap.</p>
</text></doc>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='19'/>
<arguments/>
<returntype><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='ref' homogen-type='method'><doc/>
<method name='ref'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Argument is a GDK.Image object or an Image.image object.
 It is much faster to use an gdkImage object, especially one
 allocated in shared memory. This is only an issue if you are
 going to change the contents of the pixmap often, toggling between
 a small number of images.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='27'/>
<arguments><argument name='image'><type><object resolved='predef::GDK.Image'>GDK.Image</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unref' homogen-type='method'><doc/>
<method name='unref'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Pixmap.pike' first-line='36'/>
<arguments/>
<returntype><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></returntype>
</method>
</docgroup>
</class>

<class name='Drawable'><doc><text><p>The GDK.Bitmap, GDK.Window and GDK.Pixmap classes are all GDK drawables.</p>
<p> This means that you can use the same set of functions to draw in them.</p>
<p> Pixmaps are offscreen drawables. They can be drawn upon with the
 standard drawing primitives, then copied to another drawable (such
 as a GDK.Window) with window-&gt;draw_pixmap(), set as the background
 for a window or widget, or otherwise used to show graphics (in a
 W(Pixmap), as an example). The depth of a pixmap is the number of
 bits per pixels. Bitmaps are simply pixmaps with a depth of
 1. (That is, they are monochrome bitmaps - each pixel can be either
 on or off).</p>
<p> Bitmaps are mostly used as masks when drawing pixmaps, or as a
 shape for a GDK.Window or a W(Widget)</p>
</text></doc><docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Either clears the rectangle defined by the arguments, of if no
 arguments are specified, the whole drawable.</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='20'/>
<arguments><argument name='x'><type><or><int/><void/></or></type></argument><argument name='y'><type><or><int/><void/></or></type></argument><argument name='width'><type><or><int/><void/></or></type></argument><argument name='height'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='copy_area' homogen-type='method'><doc><text><p>Copies the rectangle defined by xsource,ysource and width,height
 from the source drawable, and places the results at xdest,ydest in
 the drawable in which this function is called.</p>
</text></doc>
<method name='copy_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='26'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='source'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='xsource'><type><int/></type></argument><argument name='ysource'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_arc' homogen-type='method'><doc><text><p>Draws a single circular or elliptical arc.  Each arc is specified
 by a rectangle and two angles. The center of the circle or ellipse
 is the center of the rectangle, and the major and minor axes are
 specified by the width and height.  Positive angles indicate
 counterclockwise motion, and negative angles indicate clockwise
 motion. If the magnitude of angle2 is greater than 360 degrees,
 it is truncated to 360 degrees.</p>
</text></doc>
<method name='draw_arc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='33'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='filledp'><type><int/></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument><argument name='angle1'><type><int/></type></argument><argument name='angle2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_bitmap' homogen-type='method'><doc><text><p>Draw a GDK(Bitmap) in this drawable.
 <b>NOTE:</b> This drawable must be a bitmap as well. This will be
 fixed in GTK 1.3</p>
</text></doc>
<method name='draw_bitmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='44'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='bitmap'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_image' homogen-type='method'><doc><text><p>Draw the rectangle specified by xsrc,ysrc+width,height from the
 GDK(Image) at xdest,ydest in the destination drawable</p>
</text></doc>
<method name='draw_image'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='51'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='image'><type><object resolved='predef::GDK.Image'>GDK.Image</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_line' homogen-type='method'><doc><text><p>img_begin
 w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay: g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay:  for(int x = 0; x&lt;10; x++) w-&gt;draw_line(g,x*10,0,100-x*10,99);
 img_end</p>
</text></doc>
<method name='draw_line'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='57'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_pixmap' homogen-type='method'><doc><text><p>Draw the rectangle specified by xsrc,ysrc+width,height from the
 GDK(Pixmap) at xdest,ydest in the destination drawable</p>
</text></doc>
<method name='draw_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='66'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_point' homogen-type='method'><doc><text><p>img_begin
 w = GTK.DrawingArea()-&gt;set_usize(10,10);
 delay: g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay:  for(int x = 0; x&lt;10; x++) w-&gt;draw_point(g, x, x);
 img_end</p>
</text></doc>
<method name='draw_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='72'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_rectangle' homogen-type='method'><doc><text><p>img_begin
  w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay:  g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay: for(int x = 0; x&lt;10; x++) w-&gt;draw_rectangle(g,0,x*10,0,100-x*10,99);
 img_end
 img_begin
 w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay:   g = GDK.GC(w);
 delay:  for(int x = 0; x&lt;30; x++) {
 delay:   g-&gt;set_foreground(GDK.Color(random(255),random(255),random(255)) );
 delay:   w-&gt;draw_rectangle(g,1,x*10,0,100-x*10,99);
 delay: }
 img_end</p>
</text></doc>
<method name='draw_rectangle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='81'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='filledp'><type><int/></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_text' homogen-type='method'><doc><text><p>y is used as the baseline for the text.
 If forcewide is true, the string will be expanded to a wide string
 even if it is not already one. This is useful when writing text
 using either unicode or some other 16 bit font.</p>
</text></doc>
<method name='draw_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='98'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='font'><type><object resolved='predef::GDK.Font'>GDK.Font</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='text'><type><string/></type></argument><argument name='forcewide'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Drawable'>GDK.Drawable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_geometry' homogen-type='method'><doc><text><p>Get width, height position and depth of the drawable as a mapping.</p>
<p> ([ "x":xpos, "y":ypos, "width":xsize, "height":ysize,
    "depth":bits_per_pixel ])</p>
</text></doc>
<method name='get_geometry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='106'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='xid' homogen-type='method'><doc/>
<method name='xid'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='114'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='xsize' homogen-type='method'><doc><text><p>Returns the width of the drawable specified in pixels</p>
</text></doc>
<method name='xsize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='117'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ysize' homogen-type='method'><doc><text><p>Returns the height of the drawable specified in pixels</p>
</text></doc>
<method name='ysize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Drawable.pike' first-line='122'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Font'><doc><text><p>The GdkFont data type represents a font for drawing on the
 screen. These functions provide support for loading fonts, and also
 for determining the dimensions of characters and strings when drawn
 with a particular font.</p>
<p> Fonts in X are specified by a X Logical Font Description. The
 following description is considerably simplified. For definitive
 information about XLFD's see the X reference documentation. A X
 Logical Font Description (XLFD) consists of a sequence of fields
 separated (and surrounded by) '-' characters. For example, Adobe
 Helvetica Bold 12 pt, has the full description: 
 <i> "-adobe-helvetica-bold-r-normal--12-120-75-75-p-70-iso8859-1"</i></p>
<p>The fields in the XLFD are:
 <matrix>
 <r><c> Foundry</c>
 <c>the company or organization where the font originated.</c></r>
 <r><c> Family</c>
 <c>the font family (a group of related font designs).</c></r>
 <r><c> Weight</c>
 <c>A name for the font's typographic weight For example, 'bold' or 'medium').</c></r>
 <r><c> Slant</c>
 <c>The slant of the font. Common values are 'R' for Roman, 'I' for italoc, and 'O' for oblique.</c></r>
 <r><c> Set Width</c>
 <c>A name for the width of the font. For example, 'normal' or 'condensed'.</c></r>
 <r><c> Add Style</c>
 <c>Additional information to distinguish a font from other fonts of the same family.</c></r>
 <r><c> Pixel Size</c>
 <c>The body size of the font in pixels.</c></r>
 <r><c> Point Size</c>
 <c>The body size of the font in 10ths of a point. (A point is 1/72.27 inch) </c></r>
 <r><c> Resolution X</c>
 <c>The horizontal resolution that the font was designed for.</c></r>
 <r><c> Resolution Y</c>
 <c>The vertical resolution that the font was designed for .</c></r>
 <r><c> Spacing</c>
 <c>The type of spacing for the font - can be 'p' for proportional, 'm' for monospaced or 'c' for charcell.</c></r>
 <r><c> Average Width</c>
 <c>The average width of a glyph in the font. For monospaced and charcell fonts, all glyphs in the font have this width</c></r>
 <r><c>Charset Registry</c>
 <c>                          The registration authority that owns the encoding for the font. Together with the Charset Encoding field, this                        defines the character set for the font.</c></r>
 <r><c>Charset Encoding</c>
 <c>An identifier for the particular character set encoding.</c></r>
 </matrix></p>
<p> When specifying a font via a X logical Font Description, '*' can be
 used as a wildcard to match any portion of the XLFD. For instance,
 the above example could also be specified as
 <i>"-*-helvetica-bold-r-normal--*-120-*-*-*-*-iso8859-1"</i></p>
<p> It is generally a good idea to use wildcards for any portion of the
 XLFD that your program does not care about specifically, since that
 will improve the chances of finding a matching font.</p>
</text></doc><docgroup homogen-name='char_width' homogen-type='method'><doc><text><p>Return the width, in pixels, of the specified character, if
 rendered with this font. The character can be between 0 and 65535,
 the character encoding is font specific.</p>
</text></doc>
<method name='char_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Font.pike' first-line='58'/>
<arguments><argument name='character'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new font object. The string is the font XLFD.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Font.pike' first-line='65'/><modifiers><static/></modifiers>
<arguments><argument name='font_name'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Font'>GDK.Font</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Free the font, called automatically by pike when the object is destroyed.</p>
</text></doc>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Font.pike' first-line='70'/>
<arguments/>
<returntype><object resolved='predef::GDK.Font'>GDK.Font</object></returntype>
</method>
</docgroup>
</class>

<class name='DragContext'><doc><text><p>The drag context contains all information about the drag'n'drop
 connected to the signal to which it is an argument.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='drag_abort' homogen-type='method'><doc><text><p>Abort the drag</p>
</text></doc>
<method name='drag_abort'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='9'/>
<arguments><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_drop' homogen-type='method'><doc/>
<method name='drag_drop'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='14'/>
<arguments><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_finish' homogen-type='method'><doc><text><p>If success is true, the drag succeded.
 If del is true, the source should be deleted.
 time is the current time.</p>
</text></doc>
<method name='drag_finish'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='17'/>
<arguments><argument name='success'><type><int/></type></argument><argument name='del'><type><int/></type></argument><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_set_icon_default' homogen-type='method'><doc><text><p>Use the default drag icon associated with the source widget.</p>
</text></doc>
<method name='drag_set_icon_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_set_icon_pixmap' homogen-type='method'><doc><text><p>Set the drag pixmap, and optionally mask.
 The hot_x and hot_y coordinates will be the location of the mouse pointer,
 relative to the upper left corner of the pixmap.</p>
</text></doc>
<method name='drag_set_icon_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='29'/>
<arguments><argument name='p'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='b'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='hot_x'><type><int/></type></argument><argument name='hot_y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_set_icon_widget' homogen-type='method'><doc><text><p>Set the drag widget. This is a widget that will be shown, and then
 dragged around by the user during this drag.</p>
</text></doc>
<method name='drag_set_icon_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='36'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='hot_x'><type><int/></type></argument><argument name='hot_y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_status' homogen-type='method'><doc><text><p>Setting action to -1 means use the suggested action</p>
</text></doc>
<method name='drag_status'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='42'/>
<arguments><argument name='action'><type><int/></type></argument><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drop_reply' homogen-type='method'><doc/>
<method name='drop_reply'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='47'/>
<arguments><argument name='ok'><type><int/></type></argument><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_action' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.GDK_ACTION_ASK'>GDK_ACTION_ASK</ref>, <ref resolved='predef::GTK.GDK_ACTION_COPY'>GDK_ACTION_COPY</ref>, <ref resolved='predef::GTK.GDK_ACTION_DEFAULT'>GDK_ACTION_DEFAULT</ref>, <ref resolved='predef::GTK.GDK_ACTION_LINK'>GDK_ACTION_LINK</ref>, <ref resolved='predef::GTK.GDK_ACTION_MOVE'>GDK_ACTION_MOVE</ref> and <ref resolved='predef::GTK.GDK_ACTION_PRIVATE'>GDK_ACTION_PRIVATE</ref>;</p>
</text></doc>
<method name='get_action'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='50'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_actions' homogen-type='method'><doc><text><p>A bitwise or of one or more of <ref resolved='predef::GTK.GDK_ACTION_ASK'>GDK_ACTION_ASK</ref>, <ref resolved='predef::GTK.GDK_ACTION_COPY'>GDK_ACTION_COPY</ref>, <ref resolved='predef::GTK.GDK_ACTION_DEFAULT'>GDK_ACTION_DEFAULT</ref>, <ref resolved='predef::GTK.GDK_ACTION_LINK'>GDK_ACTION_LINK</ref>, <ref resolved='predef::GTK.GDK_ACTION_MOVE'>GDK_ACTION_MOVE</ref> and <ref resolved='predef::GTK.GDK_ACTION_PRIVATE'>GDK_ACTION_PRIVATE</ref>;</p>
</text></doc>
<method name='get_actions'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='55'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_is_source' homogen-type='method'><doc><text><p>Is this application the source?</p>
</text></doc>
<method name='get_is_source'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='60'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_protocol' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.GDK_DRAG_PROTO_MOTIF'>GDK_DRAG_PROTO_MOTIF</ref>, <ref resolved='predef::GTK.GDK_DRAG_PROTO_ROOTWIN'>GDK_DRAG_PROTO_ROOTWIN</ref> and <ref resolved='predef::GTK.GDK_DRAG_PROTO_XDND'>GDK_DRAG_PROTO_XDND</ref></p>
</text></doc>
<method name='get_protocol'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='65'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_source_widget' homogen-type='method'><doc><text><p>Return the drag source widget.</p>
</text></doc>
<method name='get_source_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='70'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_start_time' homogen-type='method'><doc><text><p>The start time of this drag, as a unix time_t (seconds since 0:00 1/1 1970)</p>
</text></doc>
<method name='get_start_time'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='75'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_suggested_action' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.GDK_ACTION_ASK'>GDK_ACTION_ASK</ref>, <ref resolved='predef::GTK.GDK_ACTION_COPY'>GDK_ACTION_COPY</ref>, <ref resolved='predef::GTK.GDK_ACTION_DEFAULT'>GDK_ACTION_DEFAULT</ref>, <ref resolved='predef::GTK.GDK_ACTION_LINK'>GDK_ACTION_LINK</ref>, <ref resolved='predef::GTK.GDK_ACTION_MOVE'>GDK_ACTION_MOVE</ref> and <ref resolved='predef::GTK.GDK_ACTION_PRIVATE'>GDK_ACTION_PRIVATE</ref>;</p>
</text></doc>
<method name='get_suggested_action'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/DragContext.pike' first-line='80'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='_Atom'><doc><text><p>An X-atom. You most likely want to use GDK.Atom.atom_name
 instead of GDK._Atom(name).</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new low-level atom. You should normally not call this
 function directly. Use GDK.Atom[name] instead of GDK._Atom(name,0).</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/_Atom.pike' first-line='6'/><modifiers><static/></modifiers>
<arguments><argument name='atom_name'><type><string/></type></argument><argument name='only_if_exists'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK._Atom'>GDK._Atom</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_name' homogen-type='method'><doc><text><p>Returns the name of the atom.</p>
</text></doc>
<method name='get_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/_Atom.pike' first-line='12'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='GC'><doc><text><p>A GC, or Graphics Context, is used for most low-level drawing operation.</p>
<p> As an example, the foreground color, background color and drawing
 function is stored in the GC.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>The argument is a either a W(Widget) or a GDK(Drawable) in
 which the gc will be valid.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='10'/><modifiers><static/></modifiers>
<arguments><argument name='context'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destoy' homogen-type='method'><doc><text><p>Free the gc, called automatically by pike when the object is destroyed.</p>
</text></doc>
<method name='destoy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='16'/>
<arguments/>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_values' homogen-type='method'><doc><text><p>Get all (or rather most) values from the GC.</p>
</text></doc>
<method name='get_values'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='21'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_background' homogen-type='method'><doc><text><p>Set the background to the specified GDK.Color.</p>
</text></doc>
<method name='set_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='26'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_clip_mask' homogen-type='method'><doc><text><p>Set the clip mask to the specified GDK.Bitmap</p>
</text></doc>
<method name='set_clip_mask'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='31'/>
<arguments><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_clip_origin' homogen-type='method'><doc><text><p>Set the clip mask origin to the specified point.</p>
</text></doc>
<method name='set_clip_origin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='36'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_font' homogen-type='method'><doc><text><p>Set the font to the specified GDK.Font.</p>
</text></doc>
<method name='set_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='41'/>
<arguments><argument name='font'><type><object resolved='predef::GDK.Font'>GDK.Font</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_foreground' homogen-type='method'><doc><text><p>Set the foreground to the specified GDK.Color.</p>
</text></doc>
<method name='set_foreground'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='46'/>
<arguments><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_function' homogen-type='method'><doc><text><p>Set the function to the specified one. One of GDK.Xor,
 GDK.Invert and GDK.Copy.</p>
</text></doc>
<method name='set_function'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='51'/>
<arguments><argument name='fun'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_subwindow' homogen-type='method'><doc><text><p>If set, anything drawn with this GC will draw on subwindows as well
 as the window in which the drawing is done.</p>
</text></doc>
<method name='set_subwindow'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/GC.pike' first-line='57'/>
<arguments><argument name='draw_on_subwindows'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
</class>

<class name='Event'><docgroup homogen-name='_index' homogen-type='method'><doc/>
<method name='_index'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Event.pike' first-line='3'/><modifiers><static/></modifiers>
<arguments><argument name='ind'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc/>
<method name='cast'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Event.pike' first-line='7'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Event.pike' first-line='10'/>
<arguments/>
<returntype><object resolved='predef::GDK.Event'>GDK.Event</object></returntype>
</method>
</docgroup>
</class>

<class name='Image'><doc><text><p>A gdk (low level) image.
 Mainly used for W(Image) objects.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GDK.Image object. The firstargument is either 0, which
 indicates that you want a 'slow' image. If you use '1', you
 indicate that you want a 'fast' image. Fast images are stored in
 shared memory, and thus are not sent over any network. But please
 limit your usage of fast images, they use up a possibly limited
 system resource set. See the man page for shmget(2) for more
 information on the limits on shared segments on your system.</p>
<p> A 'fast' image will automatically revert back to 'slow' mode if no
 shared memory is available.</p>
<p> If the second argument is specified, it is the actual image data.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='8'/><modifiers><static/></modifiers>
<arguments><argument name='fast_mode'><type><or><int/><void/></or></type></argument><argument name='image'><type><or><object resolved='predef::Image.Image'>Image.Image</object><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Image'>GDK.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Destructor. Destroys the image. Automatically called by pike when
 the object is destructed.</p>
</text></doc>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GDK.Image'>GDK.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_pixel' homogen-type='method'><doc><text><p>Get the pixel value of a pixel as a X-pixel value.
 It is usualy not very easy to convert this value to a
 rgb triple. See get_pnm.</p>
</text></doc>
<method name='get_pixel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='30'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_pnm' homogen-type='method'><doc><text><p>Returns the data in the image as a pnm object.
 Currently, this is always a P6 (true color raw) image.
 This could change in the future. To get a pike image object
 do 'Image.PNM.decode( gdkimage-&gt;get_pnm() )'</p>
</text></doc>
<method name='get_pnm'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='37'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='grab' homogen-type='method'><doc><text><p>Call this function to grab a portion of a widget (argument 1) to the image.
 Grabbing non-toplevel widgets may produce unexpected results.
 To get the size of a widget use -&amp;gt;xsize() and -&amp;gt;ysize().
 To get the offset of the upper left corner of the widget, relative to it's
 X-window (this is what you want for the offset arguments), use
 -&amp;gt;xoffset() and -&amp;gt;yoffset().</p>
</text></doc>
<method name='grab'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='45'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='yoffset'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Image'>GDK.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Call this to set this image to either the contents of a pike image
 or a blank image of a specified size.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='55'/>
<arguments><argument name='image_or_xsize'><type><or><object resolved='predef::Image.Image'>Image.Image</object><int/></or></type></argument><argument name='ysize'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Image'>GDK.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixel' homogen-type='method'><doc><text><p>Set the pixel value of a pixel. Please note that the pixel argument
 is a X-pixel value, which is not easily gotten from a RGB color. 
 See get_pixel and set.</p>
</text></doc>
<method name='set_pixel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Image.pike' first-line='61'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='pixel'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Image'>GDK.Image</object></returntype>
</method>
</docgroup>
</class>

<class name='Rectangle'><docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Normally used like (mapping)rectangle or (array)rectangle.</p>
</text></doc>
<method name='cast'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Rectangle.pike' first-line='3'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new rectangle</p>
<p> NOIMG</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Rectangle.pike' first-line='8'/><modifiers><static/></modifiers>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Rectangle.pike' first-line='15'/>
<arguments/>
<returntype><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Set the upper left corner and the size of the rectangle.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Rectangle.pike' first-line='18'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></returntype>
</method>
</docgroup>
</class>

<class name='Window'><doc><text><p>a GDK.Window object.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='Drawable' homogen-type='inherit'><doc>
</doc>
<inherit name='Drawable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='7'/><classname resolved='predef::GDK.Drawable'>GDK.Drawable</classname></inherit>
</docgroup>
<docgroup homogen-name='change_property' homogen-type='method'><doc><text><p>mode is one of <ref resolved='predef::GTK.GDK_PROP_MODE_APPEND'>GDK_PROP_MODE_APPEND</ref>, <ref resolved='predef::GTK.GDK_PROP_MODE_PREPEND'>GDK_PROP_MODE_PREPEND</ref> and <ref resolved='predef::GTK.GDK_PROP_MODE_REPLACE'>GDK_PROP_MODE_REPLACE</ref></p>
</text></doc>
<method name='change_property'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='9'/>
<arguments><argument name='property'><type><object resolved='predef::GDK.Atom'>GDK.Atom</object></type></argument><argument name='type'><type><object resolved='predef::GDK.Atom'>GDK.Atom</object></type></argument><argument name='mode'><type><int/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='children' homogen-type='method'><doc><text><p>Returns an array of GDK.Window objects.</p>
</text></doc>
<method name='children'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='14'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Not for non-experts. I promise.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='parent'><type><object resolved='predef::GDK.Window'>GDK.Window</object></type></argument><argument name='attributes'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_property' homogen-type='method'><doc/>
<method name='delete_property'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='24'/>
<arguments><argument name='a'><type><object resolved='predef::GDK.Atom'>GDK.Atom</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_geometry' homogen-type='method'><doc><text><p>Returns ([ "x":xpos, "y":ypos, "width":width, "height":height, "depth":bits_per_pixel ])</p>
</text></doc>
<method name='get_geometry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='27'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_property' homogen-type='method'><doc><text><p>Returns the value (as a string) of the specified property.
 The arguments are:</p>
<p> property: The property atom, as an example GDK.Atom.__SWM_VROOT
 offset (optional): The starting offset, in elements
 delete_when_done (optional): If set, the property will be deleted when it has
 been fetched.</p>
<p> Example usage: Find the 'virtual' root window (many window managers
 put large windows over the screen)</p>
<p> <pre>
   GDK.Window root = GTK.root_window();
   array maybe=root-&gt;children()-&gt;
               get_property(GDK.Atom.__SWM_VROOT)-({0});
   if(sizeof(maybe))
     root=GDK.Window( maybe[0]-&gt;data[0] );
 </pre></p>
</text></doc>
<method name='get_property'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='32'/>
<arguments><argument name='atom'><type><object resolved='predef::GDK.Atom'>GDK.Atom</object></type></argument><argument name='offset'><type><or><int/><void/></or></type></argument><argument name='delete_when_done'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_viewable' homogen-type='method'><doc><text><p>Return 1 if the window is mapped.</p>
</text></doc>
<method name='is_viewable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='54'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_visible' homogen-type='method'><doc><text><p>Return 1 if the window, or a part of the window, is visible right now.</p>
</text></doc>
<method name='is_visible'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='59'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='lower' homogen-type='method'><doc><text><p>Lower this window if the window manager allows that.</p>
</text></doc>
<method name='lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='64'/>
<arguments/>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='move_resize' homogen-type='method'><doc><text><p>Move and resize the window in one call.</p>
</text></doc>
<method name='move_resize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='69'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='w'><type><int/></type></argument><argument name='h'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='raise' homogen-type='method'><doc><text><p>Raise this window if the window manager allows that.</p>
</text></doc>
<method name='raise'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='74'/>
<arguments/>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_background' homogen-type='method'><doc><text><p>Set the background color or image.
 The argument is either a GDK.Pixmap or a GDK.Color object.</p>
</text></doc>
<method name='set_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='79'/>
<arguments><argument name='to'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bitmap_cursor' homogen-type='method'><doc><text><p>xhot,yhot are the locations of the x and y hotspot relative to the
 upper left corner of the cursor image.</p>
</text></doc>
<method name='set_bitmap_cursor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='85'/>
<arguments><argument name='image'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='fg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='bg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='xhot'><type><int/></type></argument><argument name='yhot'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cursor' homogen-type='method'><doc><text><p>Change the window cursor.&lt;table border="0" cellpadding="3" cellspacing="0"&gt;
 CURS(GDK.Arrow)
 CURS(GDK.BasedArrowDown)
 CURS(GDK.BasedArrowUp)
 CURS(GDK.Boat)
 CURS(GDK.Bogosity)
 CURS(GDK.BottomLeftCorner)
 CURS(GDK.BottomRightCorner)
 CURS(GDK.BottomSide)
 CURS(GDK.BottomTee)
 CURS(GDK.BoxSpiral)
 CURS(GDK.CenterPtr)
 CURS(GDK.Circle)
 CURS(GDK.Clock)
 CURS(GDK.CoffeeMug)
 CURS(GDK.Cross)
 CURS(GDK.CrossReverse)
 CURS(GDK.Crosshair)
 CURS(GDK.DiamondCross)
 CURS(GDK.Dot)
 CURS(GDK.Dotbox)
 CURS(GDK.DoubleArrow)
 CURS(GDK.DraftLarge)
 CURS(GDK.DraftSmall)
 CURS(GDK.DrapedBox)
 CURS(GDK.Exchange)
 CURS(GDK.Fleur)
 CURS(GDK.Gobbler)
 CURS(GDK.Gumby)
 CURS(GDK.Hand1)
 CURS(GDK.Hand2)
 CURS(GDK.Heart)
 CURS(GDK.Icon)
 CURS(GDK.IronCross)
 CURS(GDK.LeftPtr)
 CURS(GDK.LeftSide)
 CURS(GDK.LeftTee)
 CURS(GDK.Leftbutton)
 CURS(GDK.LlAngle)
 CURS(GDK.LrAngle)
 CURS(GDK.Man)
 CURS(GDK.Middlebutton)
 CURS(GDK.Mouse)
 CURS(GDK.Pencil)
 CURS(GDK.Pirate)
 CURS(GDK.Plus)
 CURS(GDK.QuestionArrow)
 CURS(GDK.RightPtr)
 CURS(GDK.RightSide)
 CURS(GDK.RightTee)
 CURS(GDK.Rightbutton)
 CURS(GDK.RtlLogo)
 CURS(GDK.Sailboat)
 CURS(GDK.SbDownArrow)
 CURS(GDK.SbHDoubleArrow)
 CURS(GDK.SbLeftArrow)
 CURS(GDK.SbRightArrow)
 CURS(GDK.SbUpArrow)
 CURS(GDK.SbVDoubleArrow)
 CURS(GDK.Shuttle)
 CURS(GDK.Sizing)
 CURS(GDK.Spider)
 CURS(GDK.Spraycan)
 CURS(GDK.Star)
 CURS(GDK.Target)
 CURS(GDK.Tcross)
 CURS(GDK.TopLeftArrow)
 CURS(GDK.TopLeftCorner)
 CURS(GDK.TopRightCorner)
 CURS(GDK.TopSide)
 CURS(GDK.TopTee)
 CURS(GDK.Trek)
 CURS(GDK.UlAngle)
 CURS(GDK.Umbrella)
 CURS(GDK.UrAngle)
 CURS(GDK.Watch)
 CURS(GDK.Xterm)
 &lt;/table&gt;</p>
</text></doc>
<method name='set_cursor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='91'/>
<arguments><argument name='new_cursor'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_events' homogen-type='method'><doc><text><p>events is a bitwise or of one or more of the following constants:
 GDK.ExposureMask,
 GDK.PointerMotionMask,
 GDK.PointerMotion_HINTMask,
 GDK.ButtonMotionMask,
 GDK.Button1MotionMask,
 GDK.Button2MotionMask,
 GDK.Button3MotionMask,
 GDK.ButtonPressMask,
 GDK.ButtonReleaseMask,
 GDK.KeyPressMask,
 GDK.KeyReleaseMask,
 GDK.EnterNotifyMask,
 GDK.LeaveNotifyMask,
 GDK.FocusChangeMask,
 GDK.StructureMask,
 GDK.PropertyChangeMask,
 GDK.VisibilityNotifyMask,
 GDK.ProximityInMask,
 GDK.ProximityOutMask and
 GDK.AllEventsMask</p>
</text></doc>
<method name='set_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='173'/>
<arguments><argument name='events'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon' homogen-type='method'><doc><text><p>Set the icon to the specified image (with mask) or the specified
 GDK.Window.  It is up to the window manager to display the icon.
 Most window manager handles window and pixmap icons, but only a few
 can handle the mask argument. If you want a shaped icon, the only
 safe bet is a shaped window.</p>
</text></doc>
<method name='set_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='198'/>
<arguments><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='window'><type><object resolved='predef::GDK.Window'>GDK.Window</object></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon_name' homogen-type='method'><doc><text><p>Set the icon name to the specified string.</p>
</text></doc>
<method name='set_icon_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='207'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='shape_combine_mask' homogen-type='method'><doc><text><p>Set the shape of the widget, or, rather, it's window, to that of
 the supplied bitmap.</p>
</text></doc>
<method name='shape_combine_mask'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GDK.pmod/Window.pike' first-line='212'/>
<arguments><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='yoffset'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
</class></module>

<class name='master'>

<class name='dirnode'><source-position first-line='1177' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p>Module node representing a single directory.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.joinnode'>joinnode</ref></p>
</text></group></doc></class>

<class name='joinnode'><source-position first-line='1527' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p>Module node holding possibly multiple directories,
 and optionally falling back to another level.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.dirnode'>dirnode</ref></p>
</text></group></doc></class>

<class name='CompatResolver'><source-position first-line='1868' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><docgroup homogen-type='variable' homogen-name='root_module'><doc><text><p>Actual resolver</p>
</text></doc>
<variable name='root_module'><source-position first-line='1871' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><object resolved='predef::master.joinnode'>joinnode</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='handler_root_modules'><doc><text><p>Lookup from handler module to corresponding root_module.</p>
</text></doc>
<variable name='handler_root_modules'><source-position first-line='1874' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><mapping><indextype><object resolved='predef::master.CompatResolver'/></indextype><valuetype><object resolved='predef::master.joinnode'>joinnode</object></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='system_module_path'><doc><text><p>The pike system module path, not including any set by the user.</p>
</text></doc>
<variable name='system_module_path'><source-position first-line='1877' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pike_module_path'><doc><text><p>The complete module search path</p>
</text></doc>
<variable name='pike_module_path'><source-position first-line='1880' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pike_include_path'><doc><text><p>The complete include search path</p>
</text></doc>
<variable name='pike_include_path'><source-position first-line='1883' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='pike_program_path'><doc><text><p>The complete program search path</p>
</text></doc>
<variable name='pike_program_path'><source-position first-line='1886' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><array><valuetype><string/></valuetype></array></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='fallback_resolver'><doc><text><p>If we fail to resolv, try the fallback.</p>
<p> Typical configuration:
 <pre>0.6-&gt;7.0-&gt;7.2-&gt;7.4-&gt;master</pre></p>
</text></doc>
<variable name='fallback_resolver'><source-position first-line='1895' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><object resolved='predef::master.CompatResolver'>CompatResolver</object></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The CompatResolver is initialized with a value that can be
 casted into a "%d.%d" string, e.g. a version object.</p>
<p> It can also optionally be initialized with a fallback resolver.</p>
</text></doc>
<method name='create'><source-position first-line='1901' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><modifiers><static/></modifiers>
<arguments><argument name='version'><type><mixed/></type></argument><argument name='fallback_resolver'><type><or><object resolved='predef::master.CompatResolver'>CompatResolver</object><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_include_path' homogen-type='method'><doc><text><p>Add a directory to search for include files.</p>
<p> This is the same as the command line option <tt>-I</tt>.</p>
</text><group><note/><text><p>Note that the added directory will only be searched when using
 &lt; &gt; to quote the included file.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.remove_include_path'>remove_include_path()</ref></p>
</text></group></doc>
<method name='add_include_path'><source-position first-line='1927' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_include_path' homogen-type='method'><doc><text><p>Remove a directory to search for include files.</p>
<p> This function performs the reverse operation of <ref resolved='predef::master.CompatResolver.add_include_path'>add_include_path()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.add_include_path'>add_include_path()</ref></p>
</text></group></doc>
<method name='remove_include_path'><source-position first-line='1941' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_module_path' homogen-type='method'><doc><text><p>Add a directory to search for modules.</p>
<p> This is the same as the command line option <tt>-M</tt>.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.remove_module_path'>remove_module_path()</ref></p>
</text></group></doc>
<method name='add_module_path'><source-position first-line='1954' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_module_path' homogen-type='method'><doc><text><p>Remove a directory to search for modules.</p>
<p> This function performs the reverse operation of <ref resolved='predef::master.CompatResolver.add_module_path'>add_module_path()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.add_module_path'>add_module_path()</ref></p>
</text></group></doc>
<method name='remove_module_path'><source-position first-line='1968' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_program_path' homogen-type='method'><doc><text><p>Add a directory to search for programs.</p>
<p> This is the same as the command line option <tt>-P</tt>.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.remove_program_path'>remove_program_path()</ref></p>
</text></group></doc>
<method name='add_program_path'><source-position first-line='1982' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_program_path' homogen-type='method'><doc><text><p>Remove a directory to search for programs.</p>
<p> This function performs the reverse operation of <ref resolved='predef::master.CompatResolver.add_program_path'>add_program_path()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::master.CompatResolver.add_program_path'>add_program_path()</ref></p>
</text></group></doc>
<method name='remove_program_path'><source-position first-line='1996' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='tmp'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_predefine' homogen-type='method'><doc><text><p>Add a define (without arguments) which will be implicitly
 defined in <ref resolved='predef::cpp'>cpp</ref> calls.</p>
</text></doc>
<method name='add_predefine'><source-position first-line='2004' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_predefine' homogen-type='method'><doc><text><p>Remove a define from the set that are implicitly defined in
 <ref resolved='predef::cpp'>cpp</ref> calls.</p>
</text></doc>
<method name='remove_predefine'><source-position first-line='2011' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_predefines' homogen-type='method'><doc><text><p>Returns a mapping with the current predefines.</p>
</text></doc>
<method name='get_predefines'><source-position first-line='2017' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='instantiate_static_modules' homogen-type='method'><doc><text><p>Instantiate static modules in the same way that dynamic modules
 are instantiated.</p>
</text></doc>
<method name='instantiate_static_modules'><source-position first-line='2024' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><modifiers><static/></modifiers>
<arguments><argument name='static_modules'><type><or><object resolved='predef::master.CompatResolver.instantiate_static_modules'/><mapping/></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_module' homogen-type='method'><doc/>
<method name='get_default_module'><source-position first-line='2061' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resolv_base' homogen-type='method'><doc/>
<method name='resolv_base'><source-position first-line='2128' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='identifier'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='current_handler'><type><or><object resolved='predef::master.CompatResolver.resolv_base'/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resolv_or_error' homogen-type='method'><doc><text><p>Same as <ref resolved='predef::master.CompatResolver.resolv'>resolv</ref>, but throws an error instead of returning
 <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> if the resolv failed.</p>
</text></doc>
<method name='resolv_or_error'><source-position first-line='2137' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='identifier'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='current_handler'><type><or><void/><object resolved='predef::master.CompatResolver.resolv_or_error'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resolv' homogen-type='method'><doc/>
<method name='resolv'><source-position first-line='2146' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='identifier'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='current_handler'><type><or><object resolved='predef::master.CompatResolver.resolv'/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='handle_include' homogen-type='method'><doc><text><p>This function is called whenever an #include directive is
 encountered. It receives the argument for #include and should
 return the file name of the file to include</p>
</text></doc>
<method name='handle_include'><source-position first-line='2184' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='f'><type><string/></type></argument><argument name='current_file'><type><string/></type></argument><argument name='local_include'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read_include' homogen-type='method'><doc/>
<method name='read_include'><source-position first-line='2211' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Pike06Resolver'><source-position first-line='2229' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><docgroup homogen-type='inherit' homogen-name='CompatResolver'><doc>
</doc>
<inherit name='CompatResolver'><source-position first-line='2231' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><classname resolved='predef::master.CompatResolver'>CompatResolver</classname></inherit>
</docgroup>
<docgroup homogen-name='resolv_base' homogen-type='method'><doc><text><p>In Pike 0.6 the current directory was implicitly searched.</p>
</text></doc>
<method name='resolv_base'><source-position first-line='2234' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='identifier'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='current_handler'><type><or><object resolved='predef::master.Pike06Resolver.resolv_base'/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='Encoder'><source-position first-line='3710' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p>Codec for use with <ref resolved='predef::encode_value'>encode_value</ref>. It understands all the
 standard references to builtin functions and pike modules.</p>
<p> The format of the produced identifiers are documented here to
 allow extension of this class:</p>
<p> The produced names are either strings or arrays. The string
 variant specifies the thing to look up according to the first
 character:</p>
<p> 'c'   Look up in all_constants().
 's'   Look up in _static_modules.
 'r'   Look up with resolv().
 'p'   Look up in programs.
 'o'   Look up in programs, then look up the result in objects.
 'f'   Look up in fc.</p>
<p> In the array format, the first element is a string as above and
 the rest specify a series of things to do with the result:</p>
<p> A string   Look up this string in the result.
 'm'        Get module object in dirnode.
 'p'        Do object_program(result).</p>
<p> All lowercase letters and the symbols ':', '/' and '.' are
 reserved for internal use in both cases where characters are used
 above.</p>
</text></doc><docgroup homogen-name='nameof' homogen-type='method'><doc><text><p>When <ref resolved='predef::master.Encoder.nameof.module_object'>module_object</ref> is set and the name would end with an
 <expr>object_program</expr> step (i.e. <expr>'p'</expr>), then drop that
 step so that the name corresponds to the object instead.
 <expr><ref resolved='predef::master.Encoder.nameof.module_object'>module_object</ref>[0]</expr> will receive the found object.</p>
</text></doc>
<method name='nameof'><source-position first-line='3857' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='what'><type><mixed/></type></argument><argument name='module_object'><type><or><void/><array><valuetype><object resolved='predef::master.Encoder.nameof'/></valuetype></array></or></type></argument></arguments>
<returntype><or><string/><array/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates an encoder instance. If <ref resolved='predef::master.Encoder.create.encoded'>encoded</ref> is specified, it's
 encoded instead of being reverse resolved to a name. That's
 necessary to encode programs.</p>
</text></doc>
<method name='create'><source-position first-line='4055' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><modifiers><static/></modifiers>
<arguments><argument name='encoded'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Decoder'><source-position first-line='4086' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p>Codec for use with <ref resolved='predef::decode_value'>decode_value</ref>. This is the decoder
 corresponding to <ref resolved='predef::master.Encoder'>Encoder</ref>. See that one for more details.</p>
</text></doc><docgroup><doc>
</doc>
<variable name='fname'><type><or><void/><string/></or></type></variable>
<variable name='mkobj'><type><or><void/><int/></or></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='fname'><type><or><void/><string/></or></type></argument><argument name='mkobj'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Codec'><source-position first-line='4248' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p><ref resolved='predef::master.Encoder'>Encoder</ref> and <ref resolved='predef::master.Decoder'>Decoder</ref> rolled into one. This is for mainly
 compatibility; there's typically no use combining encoding and
 decoding into the same object.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='Encoder'><doc>
</doc>
<inherit name='Encoder'><source-position first-line='4253' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><classname resolved='predef::master.Encoder'>Encoder</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Decoder'><doc>
</doc>
<inherit name='Decoder'><source-position first-line='4254' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><classname resolved='predef::master.Decoder'>Decoder</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The optional argument is the thing to encode; it's passed on to
 <ref resolved='predef::master.Encoder'>Encoder</ref>.</p>
</text></doc>
<method name='create'><source-position first-line='4256' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><modifiers><static/></modifiers>
<arguments><argument name='encoded'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Version'><source-position first-line='4269' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><doc><text><p>Contains version information about a Pike version.</p>
</text></doc><docgroup homogen-type='variable'><doc><text><p>The major and minor parts of the version.</p>
</text></doc>
<variable name='major'><source-position first-line='4273' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
<variable name='minor'><source-position first-line='4274' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Set the version in the object.</p>
</text></doc>
<method name='create'>
<arguments><argument name='major'><type><int/></type></argument><argument name='minor'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Methods define so that version objects
 can be compared and ordered.</p>
</text></doc>
<method name='`&lt;'><source-position first-line='4290' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='v'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`&gt;'><source-position first-line='4291' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='v'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`=='><source-position first-line='4292' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='v'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='_hash'><source-position first-line='4293' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>The version object can be casted into a string.</p>
</text></doc>
<method name='cast'><source-position first-line='4303' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit' homogen-name='CompatResolver'><doc>
</doc>
<inherit name='CompatResolver'><source-position first-line='2226' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><classname resolved='predef::master.CompatResolver'>CompatResolver</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Codec'><doc>
</doc>
<inherit name='Codec'><source-position first-line='4265' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><classname resolved='predef::master.Codec'>Codec</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='bt_max_string_len'><doc><text><p>This constant contains the maximum length of a function entry in a
 backtrace. Defaults to 200 if no BT_MAX_STRING_LEN define has been
 given.</p>
</text></doc>
<constant name='bt_max_string_len'><source-position first-line='43' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='out_of_date_warning'><doc><text><p>Should Pike complain about out of date compiled files.
 1 means yes and 0 means no. Controlled by the OUT_OF_DATE_WARNING
 define.</p>
</text></doc>
<constant name='out_of_date_warning'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/></constant>
</docgroup>
<docgroup homogen-type='variable' homogen-name='want_warnings'><doc><text><p>If not zero compilation warnings will be written out on stderr.</p>
</text></doc>
<variable name='want_warnings'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='compat_major'><doc/>
<variable name='compat_major'><source-position first-line='79' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='compat_minor'><doc/>
<variable name='compat_minor'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='show_if_constant_errors'><doc/>
<variable name='show_if_constant_errors'><source-position first-line='85' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><int/></type></variable>
</docgroup>






<docgroup homogen-name='master_read_file' homogen-type='method'><doc/>
<method name='master_read_file'><source-position first-line='362' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='environment'><doc><text><p>Mapping containing the environment variables.</p>
<p> The mapping currently has the following structure:</p>
<mapping><group><member><type><array><valuetype><string/></valuetype></array></type><index>index</index></member><text><p>Note that the index is <ref resolved='predef::lower_case'>lower_case()</ref>'d on NT.</p>
<array><group><elem><type><string/></type><index>varname</index></elem><text><p>Variable name with case intact.</p>
</text></group><group><elem><type><string/></type><index>value</index></elem><text><p>Variable value.</p>
</text></group></array></text></group></mapping>
</text><group><note/><text><p>This mapping should not be accessed directly; use <ref resolved='predef::getenv'>getenv()</ref>
   and <ref resolved='predef::putenv'>putenv()</ref> instead.</p>
</text></group><group><note/><text><p>This mapping is not compatible with <ref resolved='predef::Process.create_process'>Process.create_process()</ref>;
   use the mapping returned from calling <ref resolved='predef::getenv'>getenv()</ref> without arguments
   instead.</p>
</text></group></doc>
<variable name='environment'><source-position first-line='456' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><string/></valuetype></array></valuetype></mapping></type></variable>
</docgroup>




<docgroup homogen-type='variable' homogen-name='programs'><doc><text><p>Mapping containing the cache of currently compiled files.</p>
<p> This mapping currently has the following structure:</p>
<mapping><group><member><type><program/></type><index>filename</index></member></group></mapping><p>The filename path seperator is / on both NT and UNIX.</p>
</text><group><note/><text><p>As a special case the current master program is available
   under the name <expr>"/master"</expr>.</p>
</text></group></doc>
<variable name='programs'><source-position first-line='581' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><mapping><indextype><string/></indextype><valuetype><or><program/><object>NoValue</object></or></valuetype></mapping></type></variable>
</docgroup>
<docgroup homogen-name='programs_reverse_lookup' homogen-type='method'><doc><text><p>Returns the path for <ref resolved='predef::master.programs_reverse_lookup.prog'>prog</ref> in <ref resolved='predef::master.programs'>programs</ref>, if it got any.</p>
</text></doc>
<method name='programs_reverse_lookup'><source-position first-line='603' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='prog'><type><program/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='objects_reverse_lookup' homogen-type='method'><doc><text><p>Returns the program for <ref resolved='predef::master.objects_reverse_lookup.obj'>obj</ref> in <ref>objects</ref>, if it got any.</p>
</text></doc>
<method name='objects_reverse_lookup'><source-position first-line='619' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='obj'><type><object resolved='predef::master.objects_reverse_lookup'/></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fc_reverse_lookup' homogen-type='method'><doc><text><p>Returns the path for <ref resolved='predef::master.fc_reverse_lookup.obj'>obj</ref> in <ref>fc</ref>, if it got any.</p>
</text></doc>
<method name='fc_reverse_lookup'><source-position first-line='632' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='obj'><type><object resolved='predef::master.fc_reverse_lookup'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_program' homogen-type='method'><doc><text><p>This function is called when the driver wants to cast a string
 to a program, this might be because of an explicit cast, an inherit
 or a implict cast. In the future it might receive more arguments,
 to aid the master finding the right program.</p>
</text></doc>
<method name='cast_to_program'><source-position first-line='992' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='pname'><type><string/></type></argument><argument name='current_file'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::master.cast_to_program'/><void/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-name='handle_error' homogen-type='method'><doc><text><p>This function is called when an error occurs that is not caught
 with catch().</p>
</text></doc>
<method name='handle_error'><source-position first-line='1010' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='trace'><type><or><array/><object resolved='predef::master.handle_error'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>


<docgroup homogen-name='handle_inherit' homogen-type='method'><doc><text><p>This function is called whenever a inherit is called for.
 It is supposed to return the program to inherit.
 The first argument is the argument given to inherit, and the second
 is the file name of the program currently compiling. Note that the
 file name can be changed with #line, or set by compile_string, so
 it can not be 100% trusted to be a filename.
 previous_object(), can be virtually anything in this function, as it
 is called from the compiler.</p>
</text></doc>
<method name='handle_inherit'><source-position first-line='1129' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='pname'><type><string/></type></argument><argument name='current_file'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::master.handle_inherit'/><void/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_object' homogen-type='method'><doc><text><p>This function is called when the drivers wants to cast a string
 to an object because of an implict or explicit cast. This function
 may also receive more arguments in the future.</p>
</text></doc>
<method name='cast_to_object'><source-position first-line='1155' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='oname'><type><string/></type></argument><argument name='current_file'><type><string/></type></argument><argument name='current_handler'><type><or><object resolved='predef::master.cast_to_object'/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::master.cast_to_object'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>These are useful if you want to start other Pike processes
 with the same options as this one was started with.</p>
</text></doc>
<variable name='_pike_file_name'><source-position first-line='2248' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><string/></type></variable>
<variable name='_master_file_name'><source-position first-line='2249' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='asyncp' homogen-type='method'><doc><text><p>Returns 1 if we´re in async-mode, e.g. if the main method has
 returned a negative number.</p>
</text></doc>
<method name='asyncp'><source-position first-line='2256' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='backend_thread' homogen-type='method'><doc><text><p>The backend_thread() function is useful to determine if you are
 the backend thread - important when doing async/sync protocols.
 This method is only available if thread_create is present.</p>
</text></doc>
<method name='backend_thread'><source-position first-line='2267' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments/>
<returntype><object resolved='predef::master.backend_thread'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_main' homogen-type='method'><doc><text><p>This function is called when all the driver is done with all setup
 of modules, efuns, tables etc. etc. and is ready to start executing
 _real_ programs. It receives the arguments not meant for the driver
 and an array containing the environment variables on the same form as
 a C program receives them.</p>
</text></doc>
<method name='_main'><source-position first-line='2281' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='orig_argv'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='env'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compile_error' homogen-type='method'><doc><text><p>This function is called whenever a compile error occurs. <ref resolved='predef::master.compile_error.line'>line</ref>
 is zero for errors that aren't associated with any specific line.
 <ref resolved='predef::master.compile_error.err'>err</ref> is not newline terminated.</p>
</text></doc>
<method name='compile_error'><source-position first-line='2783' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='file'><type><string/></type></argument><argument name='line'><type><int/></type></argument><argument name='err'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compile_warning' homogen-type='method'><doc><text><p>This function is called whenever a compile warning occurs. <ref resolved='predef::master.compile_warning.line'>line</ref>
 is zero for warnings that aren't associated with any specific
 line. <ref resolved='predef::master.compile_warning.err'>err</ref> is not newline terminated.</p>
</text></doc>
<method name='compile_warning'><source-position first-line='2807' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='file'><type><string/></type></argument><argument name='line'><type><int/></type></argument><argument name='err'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='compile_exception' homogen-type='method'><doc><text><p>This function is called when an exception is catched during
 compilation. Its message is also reported to <ref resolved='predef::master.compile_error'>compile_error</ref> if
 this function returns zero.</p>
</text></doc>
<method name='compile_exception'><source-position first-line='2827' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='trace'><type><or><array/><object resolved='predef::master.compile_exception'/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='runtime_warning' homogen-type='method'><doc><text><p>Called for every runtime warning. The first argument identifies
 where the warning comes from, the second identifies the specific
 message, and the rest depends on that. See code below for currently
 implemented warnings.</p>
</text></doc>
<method name='runtime_warning'><source-position first-line='2856' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='where'><type><string/></type></argument><argument name='what'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_charset' homogen-type='method'><doc><text><p>This function is called by cpp() when it wants to do
 character code conversion.</p>
</text></doc>
<method name='decode_charset'><source-position first-line='2882' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='charset'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='program_path_to_name' homogen-type='method'><doc><text><p>Converts a module path on the form <expr>"Foo.pmod/Bar.pmod"</expr> or
 <expr>"/path/to/pike/lib/modules/Foo.pmod/Bar.pmod"</expr> to a module
 identifier on the form <expr>"Foo.Bar"</expr>.</p>
<p> If <ref resolved='predef::master.program_path_to_name.module_prefix'>module_prefix</ref> or <ref resolved='predef::master.program_path_to_name.module_suffix'>module_suffix</ref> are given, they are
 prepended and appended, respectively, to the returned string if
 it's a module file (i.e. ends with <expr>".pmod"</expr> or
 <expr>".so"</expr>). If <ref resolved='predef::master.program_path_to_name.object_suffix'>object_suffix</ref> is given, it's appended to the
 returned string if it's an object file (i.e. ends with
 <expr>".pike"</expr>).</p>
</text></doc>
<method name='program_path_to_name'><source-position first-line='3113' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='path'><type><string/></type></argument><argument name='module_prefix'><type><or><void/><string/></or></type></argument><argument name='module_suffix'><type><or><void/><string/></or></type></argument><argument name='object_suffix'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe_module' homogen-type='method'><doc><text><p>Describe the path to the module <ref resolved='predef::master.describe_module.mod'>mod</ref>.</p>
</text><group><param name='mod'/><text><p>If <ref resolved='predef::master.describe_module.mod'>mod</ref> is a program, attempt to describe the path
   to a clone of <ref resolved='predef::master.describe_module.mod'>mod</ref>.</p>
</text></group><group><param name='ret_obj'/><text><p>If an instance of <ref resolved='predef::master.describe_module.mod'>mod</ref> is found, it will be returned
   by changing element <expr>0</expr> of <ref resolved='predef::master.describe_module.ret_obj'>ret_obj</ref>.</p>
</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'><source-position first-line='3189' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='mod'><type><or><object resolved='predef::master.describe_module'/><program/></or></type></argument><argument name='ret_obj'><type><or><array><valuetype><object resolved='predef::master.describe_module'/></valuetype></array><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe_object' homogen-type='method'><doc/>
<method name='describe_object'><source-position first-line='3266' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='o'><type><object resolved='predef::master.describe_object'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe_program' homogen-type='method'><doc/>
<method name='describe_program'><source-position first-line='3305' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='p'><type><or><program/><function/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='describe_function' homogen-type='method'><doc/>
<method name='describe_function'><source-position first-line='3332' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>



<docgroup homogen-type='variable' homogen-name='currentversion'><doc><text><p>Version information about the current Pike version.</p>
</text></doc>
<variable name='currentversion'><source-position first-line='4314' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/><type><object resolved='predef::master.Version'>Version</object></type></variable>
</docgroup>
</class>

<module name='SDL'><doc><text><p>SDL or Simple DirectMedia Layer is a cross-platform multimedia
 library designed to provide fast access to the graphics
 framebuffer, audio device, input and other devices. This module
 implements a wrapper for SDL and other relevant libraries like
 SDL_mixer. The interface is similar to the C one, but using
 generally accepted Pike syntax.</p>
<p> This means that classes are used when appropriate and that method
 names use all lowercase letters with words separated by _. For
 example SDL_SetVideoMode is named SDL.set_video_mode. Also note
 that unless otherwise noted, errors result in an error being
 thrown rather than returning -1 or 0, as commonly done in SDL methods.</p>
</text></doc>

<class name='Rect'><doc><text><p>Used in SDL to define a rectangular area. It is sometimes also used
 to specify only points or sizes (i.e only one of the position and
 dimension is used).</p>
</text></doc><docgroup homogen-type='variable'><doc><text><p>Position of the upper-left corner of the rectangle.</p>
</text></doc>
<variable name='x'><type><int/></type></variable>
<variable name='y'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>The width and height of the rectangle.</p>
</text></doc>
<variable name='w'><type><int/></type></variable>
<variable name='h'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='cast'><doc><text><p>It is possible to cast a Rect object to an array or
 to a mapping. The array will have the values in the
 x, y, w, h order and the mapping will have the values
 associated with those names.</p>
</text></doc>
<method name='cast'>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class>

<class name='Keysym'><doc><text><p>The Keysym class is used to report key presses and releases. It's
 available from the <ref resolved='predef::SDL.Event'>SDL.Event</ref> class for keyboard events.</p>
<p> The scancode field should generally be left alone - it is the
 hardware dependent scancode returned by the keyboard. The sym
 field is extremely useful. It is the SDL-defined value of the key. 
 This field is very useful when you are checking for certain key presses.</p>
<p> mod stores the current state of the keyboard modifiers as
 explained in <ref resolved='predef::SDL.get_mod_state'>SDL.get_mod_state()</ref>. The unicode field is only used
 when UNICODE translation is enabled with <ref resolved='predef::SDL.enable_unicode'>SDL.enable_unicode()</ref>. If
 unicode is non-zero then this a the UNICODE character
 corresponding to the keypress. If the high 9 bits of the character
 are 0, then this maps to the equivalent ASCII character.</p>
</text><group><note/><text><p>UNICODE translation does have a slight overhead so don't
   enable it unless its needed.</p>
</text></group></doc><docgroup homogen-type='variable' homogen-name='scancode'><doc><text><p>Hardware specific scancode</p>
</text></doc>
<variable name='scancode'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='sym'><doc><text><p>SDL virtual keysym</p>
</text></doc>
<variable name='sym'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='mod'><doc><text><p>Current key modifiers</p>
</text></doc>
<variable name='mod'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='unicode'><doc><text><p>Translated character</p>
</text></doc>
<variable name='unicode'><type><int/></type></variable>
</docgroup>
</class>

<class name='PixelFormat'><doc><text><p>This describes the format of the pixel data stored at the pixels field
 of a <ref resolved='predef::SDL.Surface'>SDL.Surface</ref>. Every surface stores a PixelFormat in the format
 field.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='bits_per_pixel'><doc><text><p>The number of bits used to represent each pixel in a
   surface. Usually 8, 16, 24 or 32.</p>
</text></doc>
<variable name='bits_per_pixel'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='bytes_per_pixel'><doc><text><p>The number of bytes used to represent each pixel in a
   surface. Usually one to four.</p>
</text></doc>
<variable name='bytes_per_pixel'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Binary mask used to retrieve individual color values.</p>
</text></doc>
<variable name='rmask'><type><int/></type></variable>
<variable name='gmask'><type><int/></type></variable>
<variable name='bmask'><type><int/></type></variable>
<variable name='amask'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Precision loss of each color component.</p>
</text></doc>
<variable name='rloss'><type><int/></type></variable>
<variable name='gloss'><type><int/></type></variable>
<variable name='bloss'><type><int/></type></variable>
<variable name='aloss'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable'><doc><text><p>Binary left shift of each color component in the pixel value.</p>
</text></doc>
<variable name='rshift'><type><int/></type></variable>
<variable name='gshift'><type><int/></type></variable>
<variable name='bshift'><type><int/></type></variable>
<variable name='ashift'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='colorkey'><doc><text><p>Pixel value of transparent pixels.</p>
</text></doc>
<variable name='colorkey'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='alpha'><doc><text><p>Overall surface alpha value.</p>
</text></doc>
<variable name='alpha'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='losses'><doc><text><p>Convenience method returning the RGBA precision loss as an array.</p>
</text></doc>
<method name='losses'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='masks'><doc><text><p>Convenience method returning the RGBA masks as an array.</p>
</text></doc>
<method name='masks'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='shifts'><doc><text><p>Convenience method returning the RGBA shifts as an array.</p>
</text></doc>
<method name='shifts'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='map_rgb'><doc><text><p>Maps the RGB color value to the specified pixel format and
 returns the pixel value as an integer.</p>
<p> If the format has a palette (8-bit) the index of the closest
 matching color in the palette will be returned.</p>
<p> If the pixel format has an alpha component it will be
 returned as all 1 bits (fully opaque).</p>
</text><group><param name='r'/><param name='g'/><param name='b'/><text><p>The red, green and blue components specified as an integer
 between 0 and 255.</p>
</text></group><group><param name='color'/><text><p>The color as represented by an <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object.</p>
</text></group><group><returns/><text><p>A pixel value best approximating the given RGB color value for a
 given pixel format.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.PixelFormat.map_rgba'>map_rgba()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgb'>get_rgb()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgba'>get_rgba()</ref></p>
</text></group></doc>
<method name='map_rgb'>
<arguments><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='map_rgb'>
<arguments><argument name='color'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='map_rgba'><doc><text><p>Maps the RGBA color value to the specified pixel format and
 returns the pixel value as an integer.</p>
<p> If the format has a palette (8-bit) the index of the closest
 matching color in the palette will be returned.</p>
<p> If the pixel format has an alpha component it will be
 returned as all 1 bits (fully opaque).</p>
</text><group><param name='r'/><param name='g'/><param name='b'/><param name='a'/><text><p>The red, green and blue components specified as an integer
 between 0 and 255.</p>
</text></group><group><param name='color'/><text><p>The color as represented by an <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object.</p>
</text></group><group><returns/><text><p>A pixel value best approximating the given RGB color value for a
 given pixel format.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.PixelFormat.map_rgb'>map_rgb()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgb'>get_rgb()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgba'>get_rgba()</ref></p>
</text></group></doc>
<method name='map_rgba'>
<arguments><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='map_rgba'>
<arguments><argument name='color'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument><argument name='a'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_rgb'><doc><text><p>Get RGB component values from a pixel stored in this pixel format.</p>
</text><group><param name='pixel'/><text><p>A pixel retrieved from a surface with this pixel format or a color
   previously mapped with <ref resolved='predef::SDL.PixelFormat.map_rgb'>map_rgb()</ref> or <ref resolved='predef::SDL.PixelFormat.map_rgba'>map_rgba()</ref>.</p>
</text></group><group><returns/><text><p>A <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object with the RGB components of the pixel.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.PixelFormat.map_rgb'>map_rgb()</ref>, <ref resolved='predef::SDL.PixelFormat.map_rgba'>map_rgba()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgba'>get_rgba()</ref></p>
</text></group></doc>
<method name='get_rgb'>
<arguments><argument name='pixel'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_rgba'><doc><text><p>Get RGB component values from a pixel stored in this pixel format.</p>
</text><group><param name='pixel'/><text><p>A pixel retrieved from a surface with this pixel format or a color
   previously mapped with <ref resolved='predef::SDL.PixelFormat.map_rgb'>map_rgb()</ref> or <ref resolved='predef::SDL.PixelFormat.map_rgba'>map_rgba()</ref>.</p>
</text></group><group><returns/><text><p>A mapping containing with the RGBA components of the pixel as described below.</p>
<mapping><group><member><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type><index>color</index></member><text><p>The RGB color value of the pixel.</p>
</text></group><group><member><type><int/></type><index>alpha</index></member><text><p>The alpha value of the pixel in the range 0-255.</p>
</text></group></mapping></text></group><group><seealso/><text><p><ref resolved='predef::SDL.PixelFormat.map_rgb'>map_rgb()</ref>, <ref resolved='predef::SDL.PixelFormat.map_rgba'>map_rgba()</ref>, <ref resolved='predef::SDL.PixelFormat.get_rgb'>get_rgb()</ref></p>
</text></group></doc>
<method name='get_rgba'>
<arguments><argument name='pixel'><type><int/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><or><object resolved='predef::Image.Color.Color'>Image.Color.Color</object><int/></or></valuetype></mapping></returntype>
</method>
</docgroup>
</class>

<class name='VideoInfo'><doc><text><p>This (read-only) class is returned by <ref resolved='predef::SDL.get_video_info'>SDL.get_video_info()</ref>. It
 contains information on either the 'best' available mode (if
 called before <ref resolved='predef::SDL.set_video_mode'>SDL.set_video_mode()</ref>) or the current video mode.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='blit_hw_cc'><doc><text><p>Are hardware to hardware colorkey blits accelerated?</p>
</text></doc>
<variable name='blit_hw_cc'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='blit_hw_a'><doc><text><p>Are hardware to hardware alpha blits accelerated?</p>
</text></doc>
<variable name='blit_hw_a'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='blit_sw'><doc><text><p>Are software to hardware blits accelerated?</p>
</text></doc>
<variable name='blit_sw'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='blit_sw_cc'><doc><text><p>Are software to hardware colorkey blits accelerated?</p>
</text></doc>
<variable name='blit_sw_cc'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='blit_sw_a'><doc><text><p>Are software to hardware alpha blits accelerated?</p>
</text></doc>
<variable name='blit_sw_a'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='blit_fill'><doc><text><p>Are color fills accelerated?</p>
</text></doc>
<variable name='blit_fill'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='video_mem'><doc><text><p>Total amount of video memory in KB.</p>
</text></doc>
<variable name='video_mem'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='format'><doc><text><p>Pixel format of the video device.</p>
</text></doc>
<variable name='format'><type><object resolved='predef::SDL.PixelFormat'>SDL.PixelFormat</object></type></variable>
</docgroup>
</class>

<class name='Surface'><doc><text><p>Surface's represent areas of "graphical" memory, memory that can
 be drawn to.  The video framebuffer is returned as a
 <ref resolved='predef::SDL.Surface'>SDL.Surface</ref> by <ref resolved='predef::SDL.set_video_mode'>SDL.set_video_mode()</ref> and
 <ref resolved='predef::SDL.get_video_surface'>SDL.get_video_surface()</ref>.</p>
</text></doc><docgroup homogen-type='variable'><doc><text><p>The width and height of the surface in pixels.</p>
</text></doc>
<variable name='w'><type><int/></type></variable>
<variable name='h'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='clip_rect'><doc><text><p>This is the clipping rectangle as set by <ref resolved='predef::SDL.Surface.set_clip_rect'>set_clip_rect()</ref>.</p>
</text></doc>
<variable name='clip_rect'><type><object resolved='predef::SDL.Rect'>SDL.Rect</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='flags'><doc><text><p>The following are supported in the flags field.</p>
<dl><group><item name='SDL.SWSURFACE'/><text><p>Surface is stored in system memory</p>
</text></group><group><item name='SDL.HWSURFACE'/><text><p>Surface is stored in video memory</p>
</text></group><group><item name='SDL.ASYNCBLIT'/><text><p>Surface uses asynchronous blits if possible.</p>
</text></group><group><item name='SDL.ANYFORMAT'/><text><p>Allows any pixel-format (Display  surface).</p>
</text></group><group><item name='SDL.HWPALETTE'/><text><p>Surface has exclusive palette.</p>
</text></group><group><item name='SDL.DOUBLEBUF'/><text><p>Surface is double buffered (Display surface).</p>
</text></group><group><item name='SDL.FULLSCREEN'/><text><p>Surface is full screen (Display  Sur face).</p>
</text></group><group><item name='SDL.OPENGL'/><text><p>Surface has an OpenGL context (Display Surface).</p>
</text></group><group><item name='SDL.OPENGLBLIT'/><text><p>Surface supports OpenGL blitting (Display Surface).</p>
</text></group><group><item name='SDL.RESIZABLE'/><text><p>Surface is resizable (Display Surface).</p>
</text></group><group><item name='SDL.HWACCEL'/><text><p>Surface blit uses hardware acceleration.</p>
</text></group><group><item name='SDL.SRCCOLORKEY'/><text><p>Surface use colorkey blitting.</p>
</text></group><group><item name='SDL.RLEACCEL'/><text><p>Colorkey  blitting is accelerated with RLE.</p>
</text></group><group><item name='SDL.SRCALPHA'/><text><p>Surface blit uses alpha blending.</p>
</text></group><group><item name='SDL.PREALLOC'/><text><p>Surface uses preallocated memory.</p>
</text></group></dl>
</text></doc>
<variable name='flags'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='format'><doc><text><p>The pixel format of this surface.</p>
</text></doc>
<variable name='format'><type><object resolved='predef::SDL.PixelFormat'>SDL.PixelFormat</object></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_pixel'><doc><text><p>Get the value of the specified pixel. The surface needs to be
 locked before this method can be used.</p>
</text><group><param name='x'/><param name='y'/><text><p>Pixel coordinate to get.</p>
</text></group><group><returns/><text><p>The value of the specified pixel.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Surface.set_pixel'>set_pixel()</ref>, <ref resolved='predef::SDL.Surface.unlock'>unlock()</ref>, <ref resolved='predef::SDL.Surface.lock'>lock()</ref></p>
</text></group></doc>
<method name='get_pixel'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_pixel'><doc><text><p>Set the value of the specified pixel. The surface needs to be
 locked before this method can be used.</p>
</text><group><param name='x'/><param name='y'/><text><p>Pixel coordinate to modify.</p>
</text></group><group><param name='pixel'/><text><p>Pixel value to set to the specified pixel.</p>
</text></group><group><returns/><text><p>A reference to the surface itself.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Surface.get_pixel'>get_pixel()</ref>, <ref resolved='predef::SDL.Surface.unlock'>unlock()</ref>, <ref resolved='predef::SDL.Surface.lock'>lock()</ref></p>
</text></group></doc>
<method name='set_pixel'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='pixel'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='lock'><doc><text><p>This methods locks the surface to allow direct access to the pixels using the
 <ref resolved='predef::SDL.Surface.get_pixel'>get_pixel()</ref> and <ref resolved='predef::SDL.Surface.set_pixel'>set_pixel()</ref> methods. Note that although all surfaces in SDL don't require
 locking, you still need to call this method to enable the set/get pixel
 methods. You should unlock the surface when you're doing modifying it.</p>
</text><group><note/><text><p>Calling this method multiple times means that you need to call
   unlock an equal number of times for the surface to become unlocked.</p>
</text></group><group><returns/><text><p>1 for success or 0 if the surface couldn't be locked.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Surface.unlock'>unlock()</ref>, <ref resolved='predef::SDL.Surface.set_pixel'>set_pixel()</ref>, <ref resolved='predef::SDL.Surface.get_pixel'>get_pixel()</ref></p>
</text></group></doc>
<method name='lock'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='unlock'><doc><text><p>Surfaces that were previously locked using <ref resolved='predef::SDL.Surface.lock'>lock()</ref> must be
 unlocked with <ref resolved='predef::SDL.Surface.unlock'>unlock()</ref>.  Surfaces should be unlocked as soon
 as possible.</p>
</text><group><seealso/><text><p><ref resolved='predef::SDL.Surface.lock'>lock()</ref></p>
</text></group></doc>
<method name='unlock'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='init'><doc><text><p>This (re)initializes this surface using the specified
 parameters.  Any previously allocated data will be freed. 
 If <b>depth</b> is 8 bits an empty palette is allocated for the surface,
 otherwise a 'packed-pixel' <ref resolved='predef::SDL.PixelFormat'>SDL.PixelFormat</ref> is created using
 the <b>[RGBA]mask</b>'s provided. <b>width</b> and <b>height</b> specifies
 the desired size of the image. The <b>flags</b> specifies the type of
 surface that should be created. It is an OR'd combination of the
 following possible values:</p>
<dl><group><item name='SDL.SWSURFACE'/><text><p>SDL will create the surface in system memory. This improves
     the performance of pixel level access, however you may not
     be able to take advantage of some types of hardware
     blitting.</p>
</text></group><group><item name='SDL.HWSURFACE'/><text><p>SDL will attempt to create the surface in video memory. This
     will allow SDL to take advantage of Video-&gt;Video blits
     (which are often accelerated).</p>
</text></group><group><item name='SDL.SRCCOLORKEY'/><text><p>This flag turns on colourkeying for blits from this
     surface. If SDL.HWSURFACE is also specified and colourkeyed
     blits are hardware-accelerated, then SDL will attempt to
     place the surface in video memory. Use <ref resolved='predef::SDL.Surface.set_color_key'>set_color_key()</ref> to
     set or clear this flag after surface creation.</p>
</text></group><group><item name='SDL.SRCALPHA'/><text><p>This flag turns on alpha-blending for blits from this
     surface. If SDL.HWSURFACE is also specified and alpha
     blending blits are hardware-accelerated, then the surface
     will be placed in video memory if possible.  Use
     <ref resolved='predef::SDL.Surface.set_alpha'>set_alpha()</ref> to set or clear this flag after surface
     creation.</p>
</text></group></dl>
</text><group><note/><text><p>If an alpha-channel is specified (that is, if Amask is
   nonzero), then the SDL.SRCALPHA flag is automatically set. You
   may remove this flag by calling <ref resolved='predef::SDL.Surface.set_alpha'>set_alpha()</ref> after surface
   creation.</p>
</text></group><group><returns/><text><p>A reference to itself.</p>
</text></group><group><note/><text><p>If this method fails, the surface will become uninitialized.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Surface.set_image'>set_image()</ref></p>
</text></group></doc>
<method name='init'>
<arguments><argument name='flags'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='depth'><type><int/></type></argument><argument name='Rmask'><type><int/></type></argument><argument name='Gmask'><type><int/></type></argument><argument name='Bmask'><type><int/></type></argument><argument name='Amask'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface'>SDL.Surface</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_image'><doc><text><p>This (re)initializes this surface from the <ref resolved='predef::Image.Image'>Image.Image</ref> in
 <b>image</b>. Any previously allocated data will be freed.
 If initialization is successful, this surface will use RGBA8888
 format. For good blitting performance, it should be converted to
 the display format using <ref resolved='predef::SDL.Surface.display_format'>display_format()</ref>.</p>
</text><group><param name='image'/><text><p>The source image.</p>
</text></group><group><param name='alpha'/><text><p>Optional alpha channel. In Pike, the alpha channel can have
   different alpha values for red, green and blue. Since SDL
   doesn't support this, only the alpha value of the red color is
   used in the conversion. When this calling convention is used,
   the surface alpha value of <b>image</b> is ignored.</p>
</text></group><group><param name='flags'/><text><p>When present this specifies the type of surface that should be
 created. It is an OR'd combination of the following possible
 values:</p>
<dl><group><item name='SDL.SWSURFACE'/><text><p>SDL will create the surface in system memory. This improves
     the performance of pixel level access, however you may not
     be able to take advantage of some types of hardware
     blitting.</p>
</text></group><group><item name='SDL.HWSURFACE'/><text><p>SDL will attempt to create the surface in video memory. This
     will allow SDL to take advantage of Video-&gt;Video blits
     (which are often accelerated).</p>
</text></group><group><item name='SDL.SRCCOLORKEY'/><text><p>This flag turns on colourkeying for blits from this
     surface. If SDL.HWSURFACE is also specified and colourkeyed
     blits are hardware-accelerated, then SDL will attempt to
     place the surface in video memory. Use <ref resolved='predef::SDL.Surface.set_color_key'>set_color_key()</ref> to
     set or clear this flag after surface creation.</p>
</text></group><group><item name='SDL.SRCALPHA'/><text><p>This flag turns on alpha-blending for blits from this
     surface. If SDL.HWSURFACE is also specified and alpha
     blending blits are hardware-accelerated, then the surface
     will be placed in video memory if possible. Note that if
     this surface has an alpha value specified, this flag is
     enabled automatically. Use <ref resolved='predef::SDL.Surface.set_alpha'>set_alpha()</ref> to modify this
     flag at a later point.</p>
</text></group></dl></text></group><group><note/><text><p>If this method fails, the surface will become uninitialized.</p>
</text></group><group><returns/><text><p>A reference to itself.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Surface.init'>init()</ref></p>
</text></group></doc>
<method name='set_image'>
<arguments><argument name='image'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface'>SDL.Surface</object></returntype>
</method>
<method name='set_image'>
<arguments><argument name='image'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='alpha'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface'>SDL.Surface</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='display_format'><doc><text><p>This function takes a surface and copies it to a new  surface
 of  the  pixel format and colors of the video framebuffer,
 suitable for fast blitting onto the  display  surface. It calls
 <ref resolved='predef::SDL.Surface.convert_surface'>convert_surface()</ref>. </p>
<p> If you want to take advantage of hardware colorkey or alpha blit
 acceleration, you should set the colorkey and / or alpha value
 before calling this function.</p>
<p> If you want an alpha channel, see <ref resolved='predef::SDL.Surface.display_format_alpha'>display_format_alpha()</ref>.</p>
</text><group><returns/><text><p>The new surface. An error is thrown if the conversion fails.</p>
</text></group></doc>
<method name='display_format'>
<arguments/>
<returntype><object resolved='predef::SDL.Surface'>SDL.Surface</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='display_format_alpha'><doc><text><p>This function takes a surface and copies it to a new  surface
 of  the  pixel format and colors of the video framebuffer,
 suitable for fast blitting onto the  display  surface. It calls
 <ref resolved='predef::SDL.Surface.convert_surface'>convert_surface()</ref>. </p>
<p> If you want to take advantage of hardware colorkey or alpha blit
 acceleration, you should set the colorkey and / or alpha value
 before calling this function.</p>
<p> This function can be used to convert a colourkey to an alpha
 channel, if the SDL.SRCCOLORKEY flag is set on the surface. The
 generated surface will then be transparent (alpha=0) where the
 pixels match the colourkey, and opaque (alpha=255) elsewhere.</p>
</text><group><returns/><text><p>The new surface. An error is thrown if the conversion fails.</p>
</text></group></doc>
<method name='display_format_alpha'>
<arguments/>
<returntype><object resolved='predef::SDL.Surface'>SDL.Surface</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='blit'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='blit'>
<arguments><argument name='dst'><type><object resolved='predef::SDL.Surface'>SDL.Surface</object></type></argument><argument name='srcrect'><type><or><object resolved='predef::SDL.Rect'>SDL.Rect</object><void/></or></type></argument><argument name='dstrect'><type><or><object resolved='predef::SDL.Rect'>SDL.Rect</object><void/></or></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.blit'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fill_rect'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='fill_rect'>
<arguments><argument name='color'><type><int/></type></argument><argument name='dstrect'><type><object resolved='predef::SDL.Rect'>SDL.Rect</object></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.fill_rect'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fill'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='fill'>
<arguments><argument name='color'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.fill'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_color_key'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_color_key'>
<arguments><argument name='flag'><type><int/></type></argument><argument name='key'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.set_color_key'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_alpha'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_alpha'>
<arguments><argument name='flag'><type><int/></type></argument><argument name='alpha'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.set_alpha'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_clip_rect'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_clip_rect'>
<arguments><argument name='rect'><type><object resolved='predef::SDL.Rect'>SDL.Rect</object></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.set_clip_rect'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='convert_surface'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='convert_surface'>
<arguments><argument name='fmt'><type><object resolved='predef::SDL.PixelFormat'>SDL.PixelFormat</object></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Surface.convert_surface'/></returntype>
</method>
</docgroup>
</class>

<class name='Joystick'><docgroup homogen-type='method' homogen-name='create'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='device_index'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='index'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='index'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_axes'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='num_axes'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_balls'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='num_balls'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_hats'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='num_hats'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_buttons'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='num_buttons'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_axis'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_axis'>
<arguments><argument name='axis'><type><int/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_hat'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_hat'>
<arguments><argument name='hat'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_ball'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_ball'>
<arguments><argument name='ball'><type><int/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_button'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_button'>
<arguments><argument name='button'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='name'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='name'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='CDTrack'><docgroup homogen-type='variable'><doc><group><fixme/><text><p>Document this variable</p>
</text></group></doc>
<variable name='id'><type><int/></type></variable>
<variable name='length'><type><int/></type></variable>
<variable name='offset'><type><int/></type></variable>
<variable name='type'><type><int/></type></variable>
</docgroup>
</class>

<class name='CD'><docgroup homogen-type='method' homogen-name='create'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='drive'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc><group><fixme/><text><p>Document this variable</p>
</text></group></doc>
<variable name='current_frame'><type><int/></type></variable>
<variable name='current_track'><type><int/></type></variable>
<variable name='id'><type><int/></type></variable>
<variable name='numtracks'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='track'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='track'>
<arguments><argument name='track'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.CDTrack'>CDTrack</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='status'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='status'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='play'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='play'>
<arguments><argument name='start'><type><int/></type></argument><argument name='length'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='play_tracks'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='play_tracks'>
<arguments><argument name='start_track'><type><int/></type></argument><argument name='start_frame'><type><int/></type></argument><argument name='ntracks'><type><int/></type></argument><argument name='nframes'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pause'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='pause'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='resume'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='resume'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='stop'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='stop'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='eject'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='eject'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Music'><docgroup homogen-type='method' homogen-name='create'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='fname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pause'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='pause'>
<arguments/>
<returntype><object resolved='predef::SDL.Music.pause'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='halt'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='halt'>
<arguments/>
<returntype><object resolved='predef::SDL.Music.halt'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='resume'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='resume'>
<arguments/>
<returntype><object resolved='predef::SDL.Music.resume'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='rewind'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='rewind'>
<arguments/>
<returntype><object resolved='predef::SDL.Music.rewind'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='paused'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='paused'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='playing'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='playing'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fading'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='fading'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='play'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='play'>
<arguments><argument name='loops'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::SDL.Music.play'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fade_in'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='fade_in'>
<arguments><argument name='ms'><type><int/></type></argument><argument name='loops'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::SDL.Music.fade_in'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fade_out'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='fade_out'>
<arguments><argument name='ms'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.Music.fade_out'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_volume'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_volume'>
<arguments><argument name='vol'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='volume'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='volume'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
</class>

<class name='Event'><docgroup homogen-type='method' homogen-name='get'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='wait'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='wait'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='poll'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='poll'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable'><doc/>
<variable name='axis'><type><int/></type></variable>
<variable name='ball'><type><int/></type></variable>
<variable name='button'><type><int/></type></variable>
<variable name='code'><type><int/></type></variable>
<variable name='gain'><type><int/></type></variable>
<variable name='h'><type><int/></type></variable>
<variable name='hat'><type><int/></type></variable>
<variable name='keysym'><type><object resolved='predef::SDL.Keysym'>Keysym</object></type></variable>
<variable name='state'><type><int/></type></variable>
<variable name='type'><type><int/></type></variable>
<variable name='value'><type><int/></type></variable>
<variable name='w'><type><int/></type></variable>
<variable name='which'><type><int/></type></variable>
<variable name='x'><type><int/></type></variable>
<variable name='xrel'><type><int/></type></variable>
<variable name='y'><type><int/></type></variable>
<variable name='yrel'><type><int/></type></variable>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='init'><doc><text><p>Initializes SDL.  This should be called before all other SDL
 functions.</p>
</text><group><param name='flags'/><text><p>The flags parameter specifies what part(s) of SDL to
  initialize. It can be one of many of the following ORed together.</p>
<dl><group><item name='SDL.INIT_TIMER'/><text><p>Initializes the timer subsystem.</p>
</text></group><group><item name='SDL.INIT_AUDIO'/><text><p>Initializes the audio subsystem.</p>
</text></group><group><item name='SDL.INIT_VIDEO'/><text><p>Initializes the video subsystem.</p>
</text></group><group><item name='SDL.INIT_CDROM'/><text><p>Initializes the cdrom subsystem.</p>
</text></group><group><item name='SDL.INIT_JOYSTICK'/><text><p>Initializes the joystick subsystem.</p>
</text></group><group><item name='SDL.INIT_EVERYTHING'/><text><p>Initialize all of the above.</p>
</text></group><group><item name='SDL.INIT_NOPARACHUTE'/><text><p>Prevents SDL from catching fatal signals.</p>
</text></group><group><item name='SDL.INIT_EVENTTHREAD'/><text><p>Run event polling in a separate thread. Not always supported.</p>
</text></group></dl>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.quit'>SDL.quit()</ref>, <ref resolved='predef::SDL.init_sub_system'>SDL.init_sub_system()</ref>, <ref>SDL.quit_sub_system()</ref></p>
</text></group></doc>
<method name='init'>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_error'><doc><text><p>Get the last internal SDL error.</p>
</text><group><returns/><text><p>The error string, or zero if there was no error.</p>
</text></group></doc>
<method name='get_error'>
<arguments/>
<returntype><or><void/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='init_sub_system'><doc><text><p>After SDL has been initialized with <ref resolved='predef::SDL.init'>init()</ref> you may initialize
 uninitialized subsystems with this method.</p>
</text><group><param name='flags'/><text><p>The same as what is used in <ref resolved='predef::SDL.init'>SDL.init()</ref>.</p>
</text></group></doc>
<method name='init_sub_system'>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='init_sub_system'><doc><text><p>After SDL has been initialized with <ref resolved='predef::SDL.init'>SDL.init()</ref> you may initialize
 uninitialized subsystems with this method.</p>
</text><group><param name='flags'/><text><p>a bitwise OR'd combination of the subsystems
 you wish to check (see <ref resolved='predef::SDL.init'>SDL.init()</ref> for a list of subsystem flags).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.init'>SDL.init()</ref>,  <ref resolved='predef::SDL.quit'>SDL.quit()</ref>, <ref>SDL.quit_sub_system()</ref></p>
</text></group></doc>
<method name='init_sub_system'>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='was_init'><doc><text><p>This method allows you to see which SDL subsytems have been
 initialized.</p>
</text><group><param name='flags'/><text><p>a bitwise OR'd combination of the subsystems
 you wish to check (see <ref resolved='predef::SDL.init'>SDL.init()</ref> for a list of subsystem flags).</p>
</text></group><group><returns/><text><p>a bitwised OR'd combination of the initialized subsystems</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.init'>SDL.init()</ref>, <ref resolved='predef::SDL.init_sub_system'>SDL.init_sub_system()</ref></p>
</text></group></doc>
<method name='was_init'>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='quit'><doc><text><p>Shuts down all SDL subsystems and frees the resources allocated to
 them. This should always be called before you exit.</p>
</text><group><note/><text><p>You can use the <ref resolved='predef::atexit'>atexit()</ref> method to ensure that this method is always
 called when Pike exits normally.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.init'>SDL.init()</ref>,  <ref resolved='predef::SDL.init_sub_system'>SDL.init_sub_system()</ref>, <ref>SDL.quit_sub_system()</ref></p>
</text></group></doc>
<method name='quit'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='enable_unicode'><doc><text><p>Enables/Disables UNICODE keyboard translation.</p>
<p> If you wish to translate a keysym to it's printable
 representation, you need to enable UNICODE translation using this
 function and then look in the <b>unicode</b> member of the
 <ref resolved='predef::SDL.Keysym'>SDL.Keysym</ref> class. This value will be zero for keysyms that do
 not have a printable representation.  UNICODE translation is
 disabled by default as the conversion can cause a slight
 overhead.</p>
</text><group><param name='enable'/><text><p>A value of 1 enables Unicode translation, 0 disables it and -1
   leaves it unchanged (useful for querying the current translation
   mode).</p>
</text></group><group><returns/><text><p>The previous translation mode (1 enabled, 0 disabled). If
   <b>enable</b> is -1, the return value is the current translation
   mode.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.Keysym'>SDL.Keysym</ref></p>
</text></group></doc>
<method name='enable_unicode'>
<arguments><argument name='enable'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_mod_state'><doc><text><p>Returns the current state of the modifier keys (CTRL, ALT, etc.).</p>
</text><group><returns/><text><p>The return value can be an OR'd combination of the following:
 SDL.KMOD_NONE, SDL.KMOD_LSHIFT, SDL.KMOD_RSHIFT, SDL.KMOD_LCTRL,
 SDL.KMOD_RCTRL, SDL.KMOD_LALT, SDL.KMOD_RALT, SDL.KMOD_LMETA,
 SDL.KMOD_RMETA, SDL.KMOD_NUM, SDL.KMOD_CAPS, and
 SDL.KMOD_MODE. For convenience the following are also defined:
 SDL.KMOD_CTRL, SDL.KMOD_SHIFT, SDL.KMOD_ALT and SDL.KMOD_META</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.get_key_state'>SDL.get_key_state()</ref></p>
</text></group></doc>
<method name='get_mod_state'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_key_state'><doc><text><p>Gets a snapshot of the current keyboard state. The current state
 is return as a string. The string is indexed by the SDL.K_* symbols. A
 value of 1 means the key is pressed and a value of 0 means its
 not.</p>
</text><group><note/><text><p><ref>SDL.pump_events()</ref> to update the state array.</p>
</text></group></doc>
<method name='get_key_state'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='video_mode_ok'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='video_mode_ok'>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='bpp'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='flip'><doc><text><p>On  hardware that supports double-buffering, this function
 sets up a flip and returns. The  hardware  will  wait  for
 vertical  retrace,  and then swap video buffers before the
 next video surface blit or lock will return.  On  hardware
 that  doesn't support double-buffering, this is equivalent
 to calling <ref resolved='predef::SDL.update_rect'>SDL.update_rect(screen, 0, 0, 0, 0)</ref></p>
<p> The  SDL.DOUBLEBUF  flag  must   have   been   passed   to
 SDL_SetVideoMode,  when  setting  the  video mode for this
 function to perform hardware flipping.</p>
</text><group><param name='screen'/><text><p>The screen object to flip. If missing, the default screen is used.</p>
</text></group><group><returns/><text><p>This function returns 1 if successful, or 0 if there was an error.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.update_rect'>SDL.update_rect()</ref></p>
</text></group></doc>
<method name='flip'>
<arguments><argument name='screen'><type><or><object resolved='predef::SDL.Surface'>SDL.Surface</object><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='update_rect'><doc><text><p>Makes sure the given area is updated on the given screen.  The
 rectangle must be confined within the screen boundaries (no clipping
 is done).</p>
<p> If 'x', 'y', 'w' and 'h' are all 0, SDL_UpdateRect will update
 the entire screen.</p>
<p> This function should not be called while 'screen' is locked.</p>
</text><group><param name='x'/><param name='y'/><text><p>Top left corner of the rectangle to update.</p>
</text></group><group><param name='w'/><param name='h'/><text><p>Width and height of the rectangle to update.</p>
</text></group><group><param name='screen'/><text><p>The screen object to flip. If missing, the default screen is used.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::SDL.flip'>SDL.flip()</ref></p>
</text></group></doc>
<method name='update_rect'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='w'><type><int/></type></argument><argument name='h'><type><int/></type></argument><argument name='screen'><type><or><object resolved='predef::SDL.Surface'>SDL.Surface</object><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_gamma'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_gamma'>
<arguments><argument name='red'><type><float/></type></argument><argument name='green'><type><float/></type></argument><argument name='blue'><type><float/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_video_surface'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_video_surface'>
<arguments/>
<returntype><or><void/><object resolved='predef::SDL.get_video_surface'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_video_info'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_video_info'>
<arguments/>
<returntype><or><void/><object resolved='predef::SDL.get_video_info'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gl_set_attribute'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='gl_set_attribute'>
<arguments><argument name='attribute'><type><int/></type></argument><argument name='value'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gl_get_attribute'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='gl_get_attribute'>
<arguments><argument name='attribute'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='show_cursor'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='show_cursor'>
<arguments><argument name='show'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='warp_mouse'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='warp_mouse'>
<arguments><argument name='xpos'><type><int/></type></argument><argument name='ypos'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gl_swap_buffers'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='gl_swap_buffers'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_video_mode'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_video_mode'>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='bpp'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::SDL.set_video_mode'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='blit_surface'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='blit_surface'>
<arguments><argument name='src'><type><object resolved='predef::SDL.Surface'>SDL.Surface</object></type></argument><argument name='dst'><type><object resolved='predef::SDL.Surface'>SDL.Surface</object></type></argument><argument name='srcrect'><type><object resolved='predef::SDL.Rect'>SDL.Rect</object></type></argument><argument name='dstrect'><type><object resolved='predef::SDL.Rect'>SDL.Rect</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='video_driver_name'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='video_driver_name'>
<arguments/>
<returntype><or><void/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_caption'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='set_caption'>
<arguments><argument name='title'><type><string/></type></argument><argument name='icon'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_caption'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='get_caption'>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='iconify_window'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='iconify_window'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='toggle_fullscreen'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='toggle_fullscreen'>
<arguments><argument name='screen'><type><or><void/><object resolved='predef::SDL.Surface'>SDL.Surface</object></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='grab_input'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='grab_input'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_joysticks'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='num_joysticks'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='joystick_name'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='joystick_name'>
<arguments><argument name='device_index'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='joystick_opened'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='joystick_opened'>
<arguments><argument name='device_index'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='joystick_update'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='joystick_update'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='joystick_event_state'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='joystick_event_state'>
<arguments><argument name='state'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cd_num_drivers'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='cd_num_drivers'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cd_name'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='cd_name'>
<arguments><argument name='drive'><type><int/></type></argument></arguments>
<returntype><or><string/><void/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='open_audio'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='open_audio'>
<arguments><argument name='frequency'><type><int/></type></argument><argument name='format'><type><int/></type></argument><argument name='channels'><type><int/></type></argument><argument name='bufsize'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module>



































































































<module name='GTK'>

<class name='Viewport'><doc><text><p>This is a container that can be scrolled around, but it has no scrollbars.
 You can connect scrollbars to it using the adjustment objects.
<expr> GTK.Viewport(GTK.Adjustment(),GTK.Adjustment())-&gt;set_usize(100,100)</expr>
<image file='predef.GTK.Viewport.1.png' width='100' height='100'>../images/gtk_viewport.png</image></p>
<p><expr> GTK.Viewport(GTK.Adjustment(),GTK.Adjustment())-&gt;set_usize(100,100)-&gt;set_shadow_type(GTK.SHADOW_ETCHED_IN)</expr>
<image file='predef.GTK.Viewport.2.png' width='100' height='100'>../images/gtk_viewport_2.png</image></p>
<p><expr> GTK.Viewport(GTK.Adjustment(),GTK.Adjustment())-&gt;set_usize(100,100)-&gt;add(GTK.Label("A label with a very long text on it, it will not fit"))-&gt;set_shadow_type(GTK.SHADOW_ETCHED_IN)</expr>
<image file='predef.GTK.Viewport.3.png' width='100' height='100'>../images/gtk_viewport_3.png</image></p>
<p><expr> lambda(){ object a1;object v = GTK.Viewport(a1=GTK.Adjustment(),GTK.Adjustment())-&gt;set_usize(100,100)-&gt;add(GTK.Label("A label with a very long text on it, it will not fit"))-&gt;set_shadow_type(GTK.SHADOW_ETCHED_IN);call_out(a1-&gt;set_value,0,100.0);return v;}()</expr>
<image file='predef.GTK.Viewport.4.png' width='100' height='100'>../images/gtk_viewport_4.png</image></p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='18'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new viewport.  The adjustments are used to select what
 part of the viewport to view to the user. They are normally
 connected to a scrollbar or something similar.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments><argument name='xscroll'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='yscroll'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Viewport'>GTK.Viewport</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hadjustment' homogen-type='method'><doc><text><p>Return the current horizontal adjustment object</p>
</text></doc>
<method name='get_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='27'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vadjustment' homogen-type='method'><doc><text><p>Return the current vertical adjustment object</p>
</text></doc>
<method name='get_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='32'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_hadjustment' homogen-type='method'><doc><text><p>Set a new horizontal adjustment object.</p>
</text></doc>
<method name='set_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='37'/>
<arguments><argument name='xscroll'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Viewport'>GTK.Viewport</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>Set the shadow style. One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='42'/>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Viewport'>GTK.Viewport</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vadjustment' homogen-type='method'><doc><text><p>Set a new vertical adjustment object.</p>
</text></doc>
<method name='set_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Viewport.pike' first-line='47'/>
<arguments><argument name='yscroll'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Viewport'>GTK.Viewport</object></returntype>
</method>
</docgroup>
</class>

<class name='AccelGroup'><doc><text><p>An AccelGroup stores keybindings.
 A group is automatically created by W(MenuFactory)</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='Data' homogen-type='inherit'><doc>
</doc>
<inherit name='Data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelGroup.pike' first-line='8'/><classname resolved='predef::GTK.Data'>GTK.Data</classname></inherit>
</docgroup>
<docgroup homogen-name='add_accel' homogen-type='method'><doc><text><p>the widget is the one in which the signal specified by 'signal'
 recides.</p>
<p> The key is the character code (such as 'a' for the a key and '@'
 for the @ key), and modifiers is a bitmap of one or more bits, the
 bits are . Flags is one or more of <ref resolved='predef::GTK.ACCEL_LOCKED'>ACCEL_LOCKED</ref>, <ref resolved='predef::GTK.ACCEL_SIGNAL_VISIBLE'>ACCEL_SIGNAL_VISIBLE</ref> and <ref resolved='predef::GTK.ACCEL_VISIBLE'>ACCEL_VISIBLE</ref></p>
</text></doc>
<method name='add_accel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelGroup.pike' first-line='10'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='signal'><type><string/></type></argument><argument name='key'><type><int/></type></argument><argument name='modifiers'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new accelerator group</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelGroup.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelGroup.pike' first-line='25'/>
<arguments/>
<returntype><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Remove all bindings for the specified key/mask in the specified object.</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelGroup.pike' first-line='28'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='key'><type><int/></type></argument><argument name='modifiers'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></returntype>
</method>
</docgroup>
</class>

<class name='Editable'><doc><text><p>The GTK.Editable class is a base class for widgets for editing text,
 such as W(Entry) and W(Text). It cannot be instantiated by
 itself. The editable class contains functions for generically
 manipulating an editable widget, a large number of action signals
 used for key bindings, and several signals that an application can
 connect to to modify the behavior of a widget.</p>
<p>  Signals:
 <b>activate</b>
 Indicates that the user has activated the widget in some
 fashion. Generally, this will be done with a keystroke. (The
 default binding for this action is Return for GTK.Entry and
 Control-Return for GTK.Text.</p>
<p> <b>changed</b>
 Called when the text in the edit area is changed</p>
<p> <b>copy_clipboard</b>
 An action signal. Causes the characters in the current selection to
 be copied to the clipboard.</p>
<p> <b>cut_clipboard</b>
 An action signal. Causes the characters in the current selection to
 be copied to the clipboard and then deleted from the widget.</p>
<p> <b>delete_text</b>
 This signal is emitted when text is deleted from the widget by the
 user. The default handler for this signal will normally be
 responsible for inserting the text, so by connecting to this signal
 and then stopping the signal with signal_emit_stop(), it is
 possible to modify the inserted text, or prevent it from being
 inserted entirely. The start_pos and end_pos parameters are
 interpreted as for delete_text()</p>
<p> <b>insert_text</b>
 This signal is emitted when text is inserted into the widget by the
 user. The default handler for this signal will normally be
 responsible for inserting the text, so by connecting to this signal
 and then stopping the signal with signal_emit_stop(), it is
 possible to modify the inserted text, or prevent it from being
 inserted entirely.</p>
<p> <b>kill_char</b>
 An action signal. Delete a single character.</p>
<p> <b>kill_line</b>
 An action signal. Delete a single line.</p>
<p> <b>kill_word</b>
 n action signal. Delete a single word.</p>
<p> <b>move_cursor</b>
 An action signal. Move the cursor position.</p>
<p> <b>move_page</b>
 An action signal. Move the cursor by pages.</p>
<p> <b>move_to_column</b>
 An action signal. Move the cursor to the given column.</p>
<p> <b>move_to_row</b>
 An action signal. Move the cursor to the given row.</p>
<p> <b>move_word</b>
 An action signal. Move the cursor by words.</p>
<p> <b>paste_clipboard</b>
 An action signal. Causes the contents of the clipboard to be pasted
 into the editable widget at the current cursor position.</p>
<p> <b>set_editable</b>
 Determines if the user can edit the text in the editable widget or
 not. This is meant to be overriden by child classes and should not
 generally be useful to applications.</p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='94'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='copy_clipboard' homogen-type='method'><doc><text><p>Causes the characters in the current selection to be copied to the
 clipboard.</p>
</text></doc>
<method name='copy_clipboard'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='96'/>
<arguments/>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cut_clipboard' homogen-type='method'><doc><text><p>Causes the characters in the current selection to be copied to the
 clipboard and then deleted from the widget.</p>
</text></doc>
<method name='cut_clipboard'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='102'/>
<arguments/>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_selection' homogen-type='method'><doc><text><p>Deletes the current contents of the widgets selection and disclaims
 the selection.</p>
</text></doc>
<method name='delete_selection'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='108'/>
<arguments/>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_text' homogen-type='method'><doc><text><p>Delete a sequence of characters. The characters that are deleted
 are those characters at positions from start_pos up to, but not
 including end_pos. If end_pos is negative, then the the characters
 deleted will be those characters from start_pos to the end of the
 text.</p>
</text></doc>
<method name='delete_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='114'/>
<arguments><argument name='start_pos'><type><int/></type></argument><argument name='end_pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_chars' homogen-type='method'><doc><text><p>Retrieves a sequence of characters. The characters that are
 retrieved are those characters at positions from start_pos up to,
 but not including end_pos. If end_pos is negative, then the the
 characters retrieved will be those characters from start_pos to the
 end of the text.</p>
</text></doc>
<method name='get_chars'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='123'/>
<arguments><argument name='start_pos'><type><int/></type></argument><argument name='end_pos'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_position' homogen-type='method'><doc><text><p>Returns the cursor position</p>
</text></doc>
<method name='get_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='132'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_text' homogen-type='method'><doc><text><p>Insert 'num_chars' characters from the text at the position 'where'.</p>
</text></doc>
<method name='insert_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='137'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='num_chars'><type><int/></type></argument><argument name='where'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='paste_clipboard' homogen-type='method'><doc><text><p>Causes the contents of the clipboard to be pasted into the given
 widget at the current cursor position.</p>
</text></doc>
<method name='paste_clipboard'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='142'/>
<arguments/>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_region' homogen-type='method'><doc><text><p>Selects a region of text. The characters that are selected are
 those characters at positions from start_pos up to, but not
 including end_pos. If end_pos is negative, then the the characters
 selected will be those characters from start_pos to the end of the
 text. are</p>
</text></doc>
<method name='select_region'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='148'/>
<arguments><argument name='start_pos'><type><int/></type></argument><argument name='end_pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_editable' homogen-type='method'><doc><text><p>Determines if the user can edit the text in the editable widget or
 not.</p>
</text></doc>
<method name='set_editable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='157'/>
<arguments><argument name='editablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_position' homogen-type='method'><doc><text><p>Sets the cursor position.</p>
</text></doc>
<method name='set_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Editable.pike' first-line='163'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Editable'>GTK.Editable</object></returntype>
</method>
</docgroup>
</class>

<class name='TipsQuery'><docgroup homogen-name='Label' homogen-type='inherit'><doc>
</doc>
<inherit name='Label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='3'/><classname resolved='predef::GTK.Label'>GTK.Label</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='5'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.TipsQuery'>GTK.TipsQuery</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_caller' homogen-type='method'><doc/>
<method name='get_caller'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='8'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_in_query' homogen-type='method'><doc/>
<method name='get_in_query'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='11'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_label_inactive' homogen-type='method'><doc/>
<method name='get_label_inactive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='14'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_label_no_tip' homogen-type='method'><doc/>
<method name='get_label_no_tip'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='17'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_last_crossed' homogen-type='method'><doc/>
<method name='get_last_crossed'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='20'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_caller' homogen-type='method'><doc/>
<method name='set_caller'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='23'/>
<arguments><argument name='caller_widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.TipsQuery'>GTK.TipsQuery</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_labels' homogen-type='method'><doc/>
<method name='set_labels'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='26'/>
<arguments><argument name='label_inactive'><type><string/></type></argument><argument name='label_no_tip'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.TipsQuery'>GTK.TipsQuery</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='start_query' homogen-type='method'><doc/>
<method name='start_query'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='29'/>
<arguments/>
<returntype><object resolved='predef::GTK.TipsQuery'>GTK.TipsQuery</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='stop_query' homogen-type='method'><doc/>
<method name='stop_query'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TipsQuery.pike' first-line='32'/>
<arguments/>
<returntype><object resolved='predef::GTK.TipsQuery'>GTK.TipsQuery</object></returntype>
</method>
</docgroup>
</class>

<class name='Window'><doc><text><p>The basic window. Nothing much to say about it. It can only contain
 one child widget. Show the main window last to avoid annoying
 flashes when the subwidet (and it's subwidgets) are added to it,
 this is done automatically by calling 'window-&gt;show_all' when you
 are done with your widget packing.</p>
<p>  Signals:
 <b>move_resize</b></p>
<p> <b>set_focus</b></p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='14'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='activate_default' homogen-type='method'><doc><text><p>Activate the default widget</p>
</text></doc>
<method name='activate_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='16'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='activate_focus' homogen-type='method'><doc><text><p>Activate the focus widget</p>
</text></doc>
<method name='activate_focus'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='21'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_accel_group' homogen-type='method'><doc><text><p>This function adds an accelerator group to the window. The shortcuts in
 the table will work in the window, it's child, and all children of
 it's child that do not select keyboard input.</p>
</text></doc>
<method name='add_accel_group'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='26'/>
<arguments><argument name='group'><type><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_embedded_xid' homogen-type='method'><doc><text><p>Add an embedded X-window</p>
</text></doc>
<method name='add_embedded_xid'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='33'/>
<arguments><argument name='x_window_id'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Argument is one of <ref resolved='predef::GTK.WINDOW_DIALOG'>WINDOW_DIALOG</ref>, <ref resolved='predef::GTK.WINDOW_POPUP'>WINDOW_POPUP</ref> and <ref resolved='predef::GTK.WINDOW_TOPLEVEL'>WINDOW_TOPLEVEL</ref></p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='38'/><modifiers><static/></modifiers>
<arguments><argument name='window_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_allow_grow' homogen-type='method'><doc><text><p>If true, the window can grow if nessesary</p>
</text></doc>
<method name='get_allow_grow'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='43'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_allow_shrink' homogen-type='method'><doc><text><p>If true, the window can be shrunk by the user</p>
</text></doc>
<method name='get_allow_shrink'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='48'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_auto_shrink' homogen-type='method'><doc><text><p>If true, the window will shrink if possible</p>
</text></doc>
<method name='get_auto_shrink'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='53'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_widget' homogen-type='method'><doc><text><p>The default widget</p>
</text></doc>
<method name='get_default_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='58'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_focus_widget' homogen-type='method'><doc><text><p>The focus widget</p>
</text></doc>
<method name='get_focus_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='63'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_modal' homogen-type='method'><doc><text><p>If true, this is a modal dialog window</p>
</text></doc>
<method name='get_modal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='68'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_title' homogen-type='method'><doc><text><p>The title of the window</p>
</text></doc>
<method name='get_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='73'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_transient_parent' homogen-type='method'><doc><text><p>The parent window for this window if this is a transient window, 0
 otherwise.</p>
</text></doc>
<method name='get_transient_parent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='78'/>
<arguments/>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_type' homogen-type='method'><doc><text><p>The window type, one of <ref resolved='predef::GTK.WINDOW_DIALOG'>WINDOW_DIALOG</ref>, <ref resolved='predef::GTK.WINDOW_POPUP'>WINDOW_POPUP</ref> and <ref resolved='predef::GTK.WINDOW_TOPLEVEL'>WINDOW_TOPLEVEL</ref></p>
</text></doc>
<method name='get_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='84'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_wmclass_class' homogen-type='method'><doc><text><p>The window manager class of this application.</p>
</text></doc>
<method name='get_wmclass_class'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='89'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_wmclass_name' homogen-type='method'><doc><text><p>The window manager name of this application.</p>
</text></doc>
<method name='get_wmclass_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='94'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='lower' homogen-type='method'><doc><text><p>Lower this window if the window manager allows that.</p>
</text></doc>
<method name='lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='99'/>
<arguments/>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='raise' homogen-type='method'><doc><text><p>Raise this window if the window manager allows that.</p>
</text></doc>
<method name='raise'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='104'/>
<arguments/>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_accel_group' homogen-type='method'><doc><text><p>Remove a previously installed table.</p>
</text></doc>
<method name='remove_accel_group'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='109'/>
<arguments><argument name='table'><type><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_embedded_xid' homogen-type='method'><doc><text><p>Remove the embeded X window</p>
</text></doc>
<method name='remove_embedded_xid'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='114'/>
<arguments><argument name='x_window_id'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default' homogen-type='method'><doc><text><p>Set the default widget to the specified widget.
 The specified widget <b>must</b> have the GTK.CanDefault flag set.</p>
</text></doc>
<method name='set_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='119'/>
<arguments><argument name='default_widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_size' homogen-type='method'><doc><text><p>The following differs from set_usize, in that
 set_usize() overrides the requisition, and thus sets a minimum
 size, while this only sets the size requested from the WM.</p>
</text></doc>
<method name='set_default_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='125'/>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_focus' homogen-type='method'><doc><text><p>Set the focus widget to the specified child. Please note that this
 is normaly handled automatically.</p>
</text></doc>
<method name='set_focus'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='132'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon' homogen-type='method'><doc><text><p>Set the icon to the specified image (with mask) or the specified
 GDK.Window. It is up to the window manager to display the icon. 
 Most window manager handles window and pixmap icons, but only a
 few can handle the mask argument. If you want a shaped icon, the
 only safe bet is a shaped window.</p>
</text></doc>
<method name='set_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='138'/>
<arguments><argument name='p'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='b'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='w'><type><object resolved='predef::GDK.Window'>GDK.Window</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_icon_name' homogen-type='method'><doc><text><p>Set the icon name to the specified string.</p>
</text></doc>
<method name='set_icon_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='147'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_modal' homogen-type='method'><doc><text><p>/ Is this a modal dialog?</p>
</text></doc>
<method name='set_modal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='152'/>
<arguments><argument name='modalp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_policy' homogen-type='method'><doc><text><p>If allow shrink is true, the user can resize the window to a
 smaller size. If allow_grow is true, the window can resize itself,
 and the user can resize the window, to a bigger size. It auto
 shrink is true, the window will resize itself to a smaller size
 when it's subwidget is resized.</p>
</text></doc>
<method name='set_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='157'/>
<arguments><argument name='allow_shrink'><type><int/></type></argument><argument name='allow_grow'><type><int/></type></argument><argument name='auto_shrink'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_position' homogen-type='method'><doc><text><p>one of <ref resolved='predef::GTK.WINDOW_DIALOG'>WINDOW_DIALOG</ref>, <ref resolved='predef::GTK.WINDOW_POPUP'>WINDOW_POPUP</ref>, <ref resolved='predef::GTK.WINDOW_TOPLEVEL'>WINDOW_TOPLEVEL</ref>, <ref resolved='predef::GTK.WIN_POS_CENTER'>WIN_POS_CENTER</ref>, <ref resolved='predef::GTK.WIN_POS_MOUSE'>WIN_POS_MOUSE</ref> and <ref resolved='predef::GTK.WIN_POS_NONE'>WIN_POS_NONE</ref></p>
</text></doc>
<method name='set_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='166'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Set the window title. The default title is the value sent to
 setup_gtk, or if none is sent, Pike GTK.</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='171'/>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_transient_for' homogen-type='method'><doc><text><p>Mark this window as a transient window for the parent window.
 Most window managers renders transient windows differently (different
 borders, sometimes no resize widgets etc)</p>
<p> Useful for short lived dialogs.</p>
</text></doc>
<method name='set_transient_for'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='177'/>
<arguments><argument name='parent'><type><object resolved='predef::GTK.Window'>GTK.Window</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_wmclass' homogen-type='method'><doc><text><p>Set the window manager application name and class.</p>
</text></doc>
<method name='set_wmclass'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Window.pike' first-line='186'/>
<arguments><argument name='name'><type><string/></type></argument><argument name='class'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Window'>GTK.Window</object></returntype>
</method>
</docgroup>
</class>

<class name='SpinButton'><doc><text><p>The Spin Button widget is generally used to allow the user to
 select a value from a range of numeric values. It consists of a
 text entry box with up and down arrow buttons attached to the
 side. Selecting one of the buttons causes the value to "spin" up
 and down the range of possible values. The entry box may also be
 edited directly to enter a specific value.</p>
<p> The Spin Button allows the value to have zero or a number of
 decimal places and to be incremented/decremented in configurable
 steps. The action of holding down one of the buttons optionally
 results in an acceleration of change in the value according to how
 long it is depressed.</p>
<p> The Spin Button uses an W(Adjustment) object to hold information about
 the range of values that the spin button can take.</p>
<p> The attributes of an W(Adjustment) are used by the Spin Button in the
 following way:
 &lt;ul&gt;&lt;li&gt;value: initial value for the Spin Button&lt;/li&gt;
     &lt;li&gt;lower: lower range value&lt;/li&gt;
     &lt;li&gt;upper: upper range value&lt;/li&gt;
     &lt;li&gt;step_increment: value to increment/decrement when pressing mouse button 1 on a button&lt;/li&gt;
     &lt;li&gt;page_increment: value to increment/decrement when pressing mouse button 2 on a button&lt;/li&gt;
     &lt;li&gt;page_size: unused&lt;/li&gt;
 &lt;/ul&gt;</p>
<p> The argument order for the W(Adjustment) constructor is:
 value, lower, upper, step_increment, page_increment, page_size</p>
<p><expr> GTK.SpinButton( GTK.Adjustment(),0.1, 1 )-&gt;set_usize(60,20)</expr>
<image file='predef.GTK.SpinButton.1.png' width='60' height='20'>../images/gtk_spinbutton.png</image></p>
</text></doc><docgroup homogen-name='Entry' homogen-type='inherit'><doc>
</doc>
<inherit name='Entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='37'/><classname resolved='predef::GTK.Entry'>GTK.Entry</classname></inherit>
</docgroup>
<docgroup homogen-name='configure' homogen-type='method'><doc><text><p>Adjustment (with the lower/upper/increse values), climb_rate and digits</p>
</text></doc>
<method name='configure'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='39'/>
<arguments><argument name='range'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='climb_rate'><type><float/></type></argument><argument name='precision'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The climb_rate argument take a value between 0.0 and 1.0 and
  indicates the amount of acceleration that the Spin Button has. The
  digits argument specifies the number of decimal places to which
  the value will be displayed.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='44'/><modifiers><static/></modifiers>
<arguments><argument name='range'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='climb_rate'><type><float/></type></argument><argument name='precision'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_climb_rate' homogen-type='method'><doc><text><p>The amount of acceleration that the Spin Button has. 0.0 is no
 accelleration and 1.0 is highest accelleration.</p>
</text></doc>
<method name='get_climb_rate'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='52'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_digits' homogen-type='method'><doc><text><p>The number of decimal places to which the value will be displayed.</p>
</text></doc>
<method name='get_digits'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='58'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_numeric' homogen-type='method'><doc><text><p>If != 0 the user can not enter anything but numeric values.</p>
</text></doc>
<method name='get_numeric'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='63'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_snap_to_ticks' homogen-type='method'><doc><text><p>If != 0 the Spin Button will round the value to the nearest
 step_increment.</p>
</text></doc>
<method name='get_snap_to_ticks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='68'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_update_policy' homogen-type='method'><doc><text><p>The update policy. GTK_UPDATE_ALWAYS or GTK_UPDATE_IF_VALID.</p>
</text></doc>
<method name='get_update_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='74'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value_as_float' homogen-type='method'><doc><text><p>The current value of a Spin Button can be retrieved as a float.</p>
</text></doc>
<method name='get_value_as_float'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='79'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value_as_int' homogen-type='method'><doc><text><p>The current value of a Spin Button can be retrieved as a int.</p>
</text></doc>
<method name='get_value_as_int'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='84'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_wrap' homogen-type='method'><doc><text><p>If != 0 the Spin Button will wrap around between the upper and
 lower range values.</p>
</text></doc>
<method name='get_wrap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='89'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_adjustment' homogen-type='method'><doc><text><p>Set a new adjustment.</p>
</text></doc>
<method name='set_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='95'/>
<arguments><argument name='range'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_digits' homogen-type='method'><doc><text><p>Set the number of digits to show to the user.</p>
</text></doc>
<method name='set_digits'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='100'/>
<arguments><argument name='precision'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_numeric' homogen-type='method'><doc><text><p>If true, it is a numeric value.  This prevents a user from typing
 anything other than numeric values into the text box of a Spin
 Button</p>
</text></doc>
<method name='set_numeric'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='105'/>
<arguments><argument name='numericp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>Type is one of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='112'/>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_snap_to_ticks' homogen-type='method'><doc><text><p>Set the Spin Button to round the value to the nearest
 step_increment, which is set within the Adjustment object used with
 the Spin Button</p>
</text></doc>
<method name='set_snap_to_ticks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='117'/>
<arguments><argument name='snapp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_update_policy' homogen-type='method'><doc><text><p>The possible values of policy are either GTK.UpdateAlways or
 GTK.UpdateIfValid.</p>
<p> These policies affect the behavior of a Spin Button when parsing
 inserted text and syncing its value with the values of the
 Adjustment.</p>
<p> In the case of GTK.UpdateIfValid the Spin Button value only gets
 changed if the text input is a numeric value that is within the
 range specified by the Adjustment. Otherwise the text is reset
 to the current value.</p>
<p> In case of GTK.UpdateAlways errors are ignored while converting text
 into a numeric value.</p>
</text></doc>
<method name='set_update_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='124'/>
<arguments><argument name='policy'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Set the value.</p>
</text></doc>
<method name='set_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='142'/>
<arguments><argument name='to'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_wrap' homogen-type='method'><doc><text><p>If true, the spin button will wrap from the lowest to the highest
 value, and the highest to the lowest.</p>
</text></doc>
<method name='set_wrap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='147'/>
<arguments><argument name='wrapp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='spin' homogen-type='method'><doc><text><p>If you want to alter the value of a Spin Value relative to its
 current value, then this ffunction can be used.</p>
<p> The direction paramenter is one of <ref resolved='predef::GTK.SPIN_END'>SPIN_END</ref>, <ref resolved='predef::GTK.SPIN_HOME'>SPIN_HOME</ref>, <ref resolved='predef::GTK.SPIN_PAGE_BACKWARD'>SPIN_PAGE_BACKWARD</ref>, <ref resolved='predef::GTK.SPIN_PAGE_FORWARD'>SPIN_PAGE_FORWARD</ref>, <ref resolved='predef::GTK.SPIN_STEP_BACKWARD'>SPIN_STEP_BACKWARD</ref>, <ref resolved='predef::GTK.SPIN_STEP_FORWARD'>SPIN_STEP_FORWARD</ref> and <ref resolved='predef::GTK.SPIN_USER_DEFINED'>SPIN_USER_DEFINED</ref></p>
<p>  GTK.SpinStepForward and GTK.SpinStepBackward change the value
  of the Spin Button by the amount specified by increment, unless
  increment is equal to 0, in which case the value is changed by the
  value of step_increment in theAdjustment.</p>
<p> GTK.SpinPageForward and GTK.SpinPageBackward simply alter the
 value of the Spin Button by increment.</p>
<p> GTK.SpinHome sets the value of the Spin Button to the bottom of the
 Adjustments range.</p>
<p> GTK.SpinEnd sets the value of the Spin Button to the top of the
 Adjustments range.</p>
<p> GTK.SpinUserDefined simply alters the value of the Spin Button by
 the specified amount.</p>
</text></doc>
<method name='spin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='153'/>
<arguments><argument name='direction'><type><int/></type></argument><argument name='increment'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='update' homogen-type='method'><doc><text><p>Explicitly request that the Spin Button updates itself</p>
</text></doc>
<method name='update'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SpinButton.pike' first-line='178'/>
<arguments/>
<returntype><object resolved='predef::GTK.SpinButton'>GTK.SpinButton</object></returntype>
</method>
</docgroup>
</class>

<class name='Fixed'><doc><text><p>A fixed container is a container that keeps it's children at fixed
 locations and give them fixed sizes, both given in pixels.</p>
<p>  Example:
<expr> GTK.Fixed()-&gt;put(GTK.Label("100,100"), 100, 100)-&gt;put(GTK.Label("0,0"), 0, 0)-&gt;set_usize(150,115)</expr>
<image file='predef.GTK.Fixed.1.png' width='150' height='115'>../images/gtk_fixed.png</image></p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Fixed.pike' first-line='12'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new fixed widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Fixed.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Fixed'>GTK.Fixed</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='move' homogen-type='method'><doc><text><p>Move the widget to new_xpos,new_ypos from it's old location.</p>
</text></doc>
<method name='move'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Fixed.pike' first-line='19'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='new_xpos'><type><int/></type></argument><argument name='new_ypos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Fixed'>GTK.Fixed</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='put' homogen-type='method'><doc><text><p>Place the widget at xpos,ypos.</p>
</text></doc>
<method name='put'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Fixed.pike' first-line='24'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Fixed'>GTK.Fixed</object></returntype>
</method>
</docgroup>
</class>

<class name='Menu'><doc><text><p>A GTK.Menu is a W(MenuShell) that implements a drop down menu
 consisting of a list of W(MenuItem) objects which can be navigated
 and activated by the user to perform application functions.</p>
<p> A GTK.Menu is most commonly dropped down by activating a W(MenuItem)
 in a W(MenuBar) or popped up by activating a W(MenuItem) in another
 GTK.Menu.</p>
<p> A GTK.Menu can also be popped up by activating a
 W(OptionMenu). Other composite widgets such as the W(Notebook) can
 pop up a GTK.Menu as well.</p>
<p> Applications can display a GTK.Menu as a popup menu by calling the
 popup() function. The example below shows how an application can
 pop up a menu when the 3rd mouse button is pressed.</p>
<p> <pre>
   GTK.Menu menu = create_menu();
   GTK.Window window = create_window();
   window-&gt;signal_connect( "button_press_event", lambda(GTK.Menu m,
                                                        GTK.Window w,
                                                        mapping e ) {
             if( e-&gt;button == 3 )
              menu-&gt;popup();
          }, menu );
 </pre></p>
</text></doc><docgroup homogen-name='MenuShell' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuShell'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='30'/><classname resolved='predef::GTK.MenuShell'>GTK.MenuShell</classname></inherit>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Adds a new W(MenuItem) to the end of the menu's item list.</p>
</text></doc>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='32'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='attach_to_widget' homogen-type='method'><doc><text><p>Attach the menu to a widget</p>
</text></doc>
<method name='attach_to_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='37'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new GTK.Menu widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='42'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='detach' homogen-type='method'><doc><text><p>Detaches the menu from the widget to which it had been attached.</p>
</text></doc>
<method name='detach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='47'/>
<arguments/>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_active' homogen-type='method'><doc><text><p>Returns the selected menu item from the menu.
  This is used by the W(OptionMenu).</p>
</text></doc>
<method name='get_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='52'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_attach_widget' homogen-type='method'><doc><text><p>Returns the W(Widget) that the menu is attached to.</p>
</text></doc>
<method name='get_attach_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='58'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_torn_off' homogen-type='method'><doc><text><p>return 1 if the menu is torn off.</p>
</text></doc>
<method name='get_torn_off'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='63'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>Adds a new W(MenuItem) to the menu's item list at the position
 indicated by position.</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='68'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='position'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='popdown' homogen-type='method'><doc><text><p>Removes the menu from the screen.</p>
</text></doc>
<method name='popdown'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='74'/>
<arguments/>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='popup' homogen-type='method'><doc><text><p>The default button is 3.</p>
</text></doc>
<method name='popup'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='79'/>
<arguments><argument name='button_pressed_to_show_menu'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend' homogen-type='method'><doc><text><p>Adds a new W(MenuItem) to the start of the menu's item list.</p>
</text></doc>
<method name='prepend'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='84'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reorder_child' homogen-type='method'><doc><text><p>Moves a W(MenuItem) to a new position within the GTK.Menu.</p>
</text></doc>
<method name='reorder_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='89'/>
<arguments><argument name='menuitem'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reposition' homogen-type='method'><doc><text><p>Repositions the menu according to its position function.</p>
</text></doc>
<method name='reposition'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='94'/>
<arguments/>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_accel_group' homogen-type='method'><doc><text><p>Set the W(AccelGroup) which holds global accelerators for the menu.</p>
</text></doc>
<method name='set_accel_group'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='99'/>
<arguments><argument name='accelerators'><type><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_active' homogen-type='method'><doc><text><p>Selects the specified menu item within the menu. This is used by
 the W(OptionMenu).</p>
</text></doc>
<method name='set_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='104'/>
<arguments><argument name='activep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tearoff_state' homogen-type='method'><doc><text><p>Changes the tearoff state of the menu. A menu is normally displayed
 as drop down menu which persists as long as the menu is active. It
 can also be displayed as a tearoff menu which persists until it is
 closed or reattached.</p>
</text></doc>
<method name='set_tearoff_state'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='110'/>
<arguments><argument name='torn_off'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_title' homogen-type='method'><doc><text><p>Sets the title string for the menu. The title is displayed when the
 menu is shown as a tearoff menu.</p>
</text></doc>
<method name='set_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Menu.pike' first-line='118'/>
<arguments><argument name='new_title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
</class>

<class name='Range'><doc><text><p>The category of range widgets includes the ubiquitous scrollbar
 widget and the less common "scale" widget. Though these two types
 of widgets are generally used for different purposes, they are
 quite similar in function and implementation. All range widgets
 share a set of common graphic elements, each of which has its own X
 window and receives events. They all contain a "trough" and a
 "slider" (what is sometimes called a "thumbwheel" in other GUI
 environments). Dragging the slider with the pointer moves it back
 and forth within the trough, while clicking in the trough advances
 the slider towards the location of the click, either completely, or
 by a designated amount, depending on which mouse button is used.</p>
<p> As mentioned in the W(Adjustment) page, all range widgets are
 associated with an adjustment object, from which they calculate the
 length of the slider and its position within the trough. When the
 user manipulates the slider, the range widget will change the value
 of the adjustment.</p>
<p> All of the GTK range widgets react to mouse clicks in more or less
 the same way. Clicking button-1 in the trough will cause its
 adjustment's page_increment to be added or subtracted from its
 value, and the slider to be moved accordingly. Clicking mouse
 button-2 in the trough will jump the slider to the point at which
 the button was clicked. Clicking any button on a scrollbar's arrows
 will cause its adjustment's value to change step_increment at a
 time.</p>
<p> It may take a little while to get used to, but by default,
 scrollbars as well as scale widgets can take the keyboard focus in
 GTK. If you think your users will find this too confusing, you can
 always disable this by unsetting the GTK.CanFocus flag on the
 scrollbar, like this:</p>
<p> <tt>scrollbar-&gt;unset_flag( GTK.CanFocus );</tt></p>
<p> The key bindings (which are, of course, only active when the widget
 has focus) are slightly different between horizontal and vertical
 range widgets, for obvious reasons. They are also not quite the
 same for scale widgets as they are for scrollbars, for somewhat
 less obvious reasons (possibly to avoid confusion between the keys
 for horizontal and vertical scrollbars in scrolled windows, where
 both operate on the same area).</p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='47'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='get_adjustment' homogen-type='method'><doc/>
<method name='get_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='49'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_button' homogen-type='method'><doc/>
<method name='get_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='52'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_click_child' homogen-type='method'><doc/>
<method name='get_click_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='55'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_digits' homogen-type='method'><doc/>
<method name='get_digits'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='58'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_in_child' homogen-type='method'><doc/>
<method name='get_in_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='61'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_need_timer' homogen-type='method'><doc/>
<method name='get_need_timer'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='64'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_old_lower' homogen-type='method'><doc/>
<method name='get_old_lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='67'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_old_page_size' homogen-type='method'><doc/>
<method name='get_old_page_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='70'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_old_upper' homogen-type='method'><doc/>
<method name='get_old_upper'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='73'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_old_value' homogen-type='method'><doc/>
<method name='get_old_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='76'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_policy' homogen-type='method'><doc/>
<method name='get_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='79'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_scroll_type' homogen-type='method'><doc/>
<method name='get_scroll_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='82'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_timer' homogen-type='method'><doc/>
<method name='get_timer'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='85'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_x_click_point' homogen-type='method'><doc/>
<method name='get_x_click_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='88'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_y_click_point' homogen-type='method'><doc/>
<method name='get_y_click_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='91'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_adjustment' homogen-type='method'><doc><text><p>set_adjustment() does absolutely nothing if you pass it the
 adjustment that range is already using, regardless of whether you
 changed any of its fields or not. If you pass it a new Adjustment,
 it will unreference the old one if it exists (possibly destroying
 it), connect the appropriate signals to the new one, and call the
 private function gtk_range_adjustment_changed(), which will (or at
 least, is supposed to...) recalculate the size and/or position of
 the slider and redraw if necessary.</p>
</text></doc>
<method name='set_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='94'/>
<arguments><argument name='pos'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Range'>GTK.Range</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_update_policy' homogen-type='method'><doc><text><p>The "update policy" of a range widget defines at what points during
 user interaction it will change the value field of its Adjustment
 and emit the "value_changed" signal on this Adjustment. The update
 policies are:</p>
<dl><group><item name='GTK.UpdatePolicyContinuous'/><text><p>This is the default. The "value_changed" signal is emitted
 continuously, i.e., whenever the slider is moved by even the
 tiniest amount.</p>
</text></group><group><item name='GTK.UpdatePolicyDiscontinuous'/><text><p>The "value_changed" signal is only emitted once the slider has
 stopped moving and the user has released the mouse button.</p>
</text></group><group><item name='GTK.UpdatePolicyDelayed'/><text><p>The "value_changed" signal is emitted when the user releases
 the mouse button, or if the slider stops moving for a short period
 of time.</p>
</text></group></dl>
</text></doc>
<method name='set_update_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='106'/>
<arguments><argument name='when'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Range'>GTK.Range</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='slider_update' homogen-type='method'><doc><text><p>Update the slider values.</p>
</text></doc>
<method name='slider_update'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Range.pike' first-line='128'/>
<arguments/>
<returntype><object resolved='predef::GTK.Range'>GTK.Range</object></returntype>
</method>
</docgroup>
</class>

<class name='Curve'><doc><text><p><expr> GTK.Curve()</expr>
<image file='predef.GTK.Curve.1.png' width='8' height='8'>../images/gtk_curve.png</image></p>
</text></doc><docgroup homogen-name='DrawingArea' homogen-type='inherit'><doc>
</doc>
<inherit name='DrawingArea'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='7'/><classname resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='9'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vector' homogen-type='method'><doc/>
<method name='get_vector'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='12'/>
<arguments><argument name='num_points'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reset' homogen-type='method'><doc/>
<method name='reset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='15'/>
<arguments/>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_curve_type' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.CURVE_TYPE_FREE'>CURVE_TYPE_FREE</ref>, <ref resolved='predef::GTK.CURVE_TYPE_LINEAR'>CURVE_TYPE_LINEAR</ref> and <ref resolved='predef::GTK.CURVE_TYPE_SPLINE'>CURVE_TYPE_SPLINE</ref>;</p>
</text></doc>
<method name='set_curve_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='18'/>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_gamma' homogen-type='method'><doc/>
<method name='set_gamma'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='23'/>
<arguments><argument name='gamma'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_range' homogen-type='method'><doc/>
<method name='set_range'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='26'/>
<arguments><argument name='min_x'><type><float/></type></argument><argument name='max_x'><type><float/></type></argument><argument name='min_y'><type><float/></type></argument><argument name='max_y'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vector' homogen-type='method'><doc/>
<method name='set_vector'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Curve.pike' first-line='29'/>
<arguments><argument name='nelems'><type><int/></type></argument><argument name='curve'><type><array/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
</class>

<class name='Dial'><doc><text><p>This widget provides an analog dial widget, similar to, for
 example, a physical volume control on a stereo. Dial values can be
 changable or read-only for value reporting.
<expr> GTK.Dial( GTK.Adjustment() );</expr>
<image file='predef.GTK.Dial.1.png' width='75' height='75'>../images/gtk_dial.png</image></p>
<p><expr> GTK.Dial( GTK.Adjustment(10.0) )-&gt;set_percentage(0.4);</expr>
<image file='predef.GTK.Dial.2.png' width='75' height='75'>../images/gtk_dial_2.png</image></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='13'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='15'/><modifiers><static/></modifiers>
<arguments><argument name='adjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Dial'>GTK.Dial</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_adjustment' homogen-type='method'><doc/>
<method name='get_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='18'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_percentage' homogen-type='method'><doc><text><p>Retrieves the current percentage held in the dial widget.</p>
</text></doc>
<method name='get_percentage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='21'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value' homogen-type='method'><doc><text><p>Retrieves the current value helt in the dial widget.</p>
</text></doc>
<method name='get_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='26'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_adjustment' homogen-type='method'><doc><text><p>set_adjustment() does absolutely nothing if you pass it the
 adjustment that range is already using, regardless of whether you
 changed any of its fields or not. If you pass it a new Adjustment,
 it will unreference the old one if it exists (possibly destroying
 it), connect the appropriate signals to the new one, and call the
 private function gtk_range_adjustment_changed(), which will (or at
 least, is supposed to...) recalculate the size and/or position of
 the slider and redraw if necessary.</p>
</text></doc>
<method name='set_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='31'/>
<arguments><argument name='pos'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Dial'>GTK.Dial</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_percentage' homogen-type='method'><doc><text><p>Sets the GTK.Dial's value to percent of
 dial-&gt;adjustment-&gt;upper. The upper value is set when the
 GtkAdjustment is created.</p>
</text></doc>
<method name='set_percentage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='43'/>
<arguments><argument name='percent'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Dial'>GTK.Dial</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_update_policy' homogen-type='method'><doc><text><p>The "update policy" of a range widget defines at what points during
 user interaction it will change the value field of its Adjustment
 and emit the "value_changed" signal on this Adjustment. The update
 policies are:</p>
<dl><group><item name='GTK.UpdatePolicyContinuous'/><text><p>This is the default. The "value_changed" signal is emitted
 continuously, i.e., whenever the slider is moved by even the
 tiniest amount.</p>
</text></group><group><item name='GTK.UpdatePolicyDiscontinuous'/><text><p>The "value_changed" signal is only emitted once the slider has
 stopped moving and the user has released the mouse button.</p>
</text></group><group><item name='GTK.UpdatePolicyDelayed'/><text><p>The "value_changed" signal is emitted when the user releases
 the mouse button, or if the slider stops moving for a short period
 of time.</p>
</text></group></dl>
</text></doc>
<method name='set_update_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='50'/>
<arguments><argument name='when'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Dial'>GTK.Dial</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Sets the current value held in the GtkDial's adjustment object to value.
 Returns the new percentage of value to the adjustment's upper limit.</p>
</text></doc>
<method name='set_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='72'/>
<arguments><argument name='to'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_view_only' homogen-type='method'><doc><text><p>Specifies whether or not the user is to be able to edit the value
 represented by the dial widget. If view_only is TRUE, the dial will
 be set to view-only mode, and the user will not be able to edit
 it. If view_only is FALSE, the user will be able to change the
 valuerepresented.</p>
</text></doc>
<method name='set_view_only'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dial.pike' first-line='78'/>
<arguments><argument name='view_only'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Dial'>GTK.Dial</object></returntype>
</method>
</docgroup>
</class>

<class name='Combo'><doc><text><p>Thee combo box is another fairly simple widget that is really just
 a collection of other widgets. From the user's point of view, the
 widget consists of a text entry box and a pull down menu from which
 the user can select one of a set of predefined
 entries. Alternatively, the user can type a different option
 directly into the text box.</p>
<p> The combo box has two principal parts that you as the programmer
 really care about: The W(entry) and the W(list).</p>
<p><expr> GTK.Combo()</expr>
<image file='predef.GTK.Combo.1.png' width='175' height='19'>../images/gtk_combo.png</image></p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='17'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new combo box</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable_activate' homogen-type='method'><doc><text><p>This will disable the 'activate' signal for the entry widget in the
 combo box.</p>
</text></doc>
<method name='disable_activate'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_entry' homogen-type='method'><doc><text><p>The entry widget</p>
</text></doc>
<method name='get_entry'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='30'/>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_case_sensitive' homogen-type='method'><doc><text><p>set_case_sensitive() toggles whether or not GTK searches for
 entries in a case sensitive manner. This is used when the Combo
 widget is asked to find a value from the list using the current
 entry in the text box. This completion can be performed in either a
 case sensitive or insensitive manner, depending upon the use of
 this function. The Combo widget can also simply complete the
 current entry if the user presses the key combination MOD-1 and
 "Tab". MOD-1 is often mapped to the "Alt" key, by the xmodmap
 utility. Note, however that some window managers also use this key
 combination, which will override its use within GTK.</p>
</text></doc>
<method name='set_case_sensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='35'/>
<arguments><argument name='sensitivep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_item_string' homogen-type='method'><doc><text><p>The item is one of the ones in the list subwidget.</p>
</text></doc>
<method name='set_item_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='49'/>
<arguments><argument name='item'><type><object resolved='predef::GTK.Item'>GTK.Item</object></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_popdown_strings' homogen-type='method'><doc><text><p>Set the values in the popdown list.</p>
</text></doc>
<method name='set_popdown_strings'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='54'/>
<arguments><argument name='strings'><type><array/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_use_arrows' homogen-type='method'><doc><text><p>set_use_arrows() lets the user change the value in the entry using
 the up/down arrow keys. This doesn't bring up the list, but rather
 replaces the current text in the entry with the next list entry (up
 or down, as your key choice indicates). It does this by searching
 in the list for the item corresponding to the current value in the
 entry and selecting the previous/next item accordingly. Usually in
 an entry the arrow keys are used to change focus (you can do that
 anyway using TAB). Note that when the current item is the last of
 the list and you press arrow-down it changes the focus (the same
 applies with the first item and arrow-up).</p>
</text></doc>
<method name='set_use_arrows'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='59'/>
<arguments><argument name='use_arrows'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_use_arrows_always' homogen-type='method'><doc><text><p>set_use_arrows_always() allows the use the the up/down arrow keys
 to cycle through the choices in the dropdown list, just as with
 set_use_arrows, but it wraps around the values in the list,
 completely disabling the use of the up and down arrow keys for
 changing focus.</p>
</text></doc>
<method name='set_use_arrows_always'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='73'/>
<arguments><argument name='always_arrows'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value_in_list' homogen-type='method'><doc><text><p>If value_must_be_in_list is true, the user will not be able to
 enter any value that is not in the list. If ok_if_empty is true,
 empty values are possible as well as the values in the list.</p>
</text></doc>
<method name='set_value_in_list'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Combo.pike' first-line='82'/>
<arguments><argument name='value_must_be_in_list'><type><int/></type></argument><argument name='ok_if_empty'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Combo'>GTK.Combo</object></returntype>
</method>
</docgroup>
</class>

<class name='Vseparator'><doc><text><p>Simply creates a vertical separator. No bells or whistles.
<expr> GTK.Vseparator()-&gt;set_usize(3,50)</expr>
<image file='predef.GTK.Vseparator.1.png' width='3' height='50'>../images/gtk_vseparator.png</image></p>
</text></doc><docgroup homogen-name='Separator' homogen-type='inherit'><doc>
</doc>
<inherit name='Separator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vseparator.pike' first-line='8'/><classname resolved='predef::GTK.Separator'>GTK.Separator</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new vseparator widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vseparator.pike' first-line='10'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Vseparator'>GTK.Vseparator</object></returntype>
</method>
</docgroup>
</class>

<class name='Hpaned'><doc><text><p>The paned window widgets are useful when you want to divide an area
 into two parts, with the relative size of the two parts controlled
 by the user. A groove is drawn between the two portions with a
 handle that the user can drag to change the ratio. This widgets
 makes a horizontal division</p>
<p> See W(Paned) for details.</p>
<p><expr> GTK.Hpaned()-&gt;add1(GTK.Label("Left\nSide\nOf\nPane"))-&gt;add2(GTK.Label("Right\nSide\nOf\nPane"))-&gt;set_usize(100,100)</expr>
<image file='predef.GTK.Hpaned.1.png' width='100' height='100'>../images/gtk_hpaned.png</image></p>
</text></doc><docgroup homogen-name='Paned' homogen-type='inherit'><doc>
</doc>
<inherit name='Paned'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hpaned.pike' first-line='16'/><classname resolved='predef::GTK.Paned'>GTK.Paned</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hpaned.pike' first-line='18'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Hpaned'>GTK.Hpaned</object></returntype>
</method>
</docgroup>
</class>

<class name='Frame'><doc><text><p>The frame widget is a Bin that surrounds its child with a
 decorative frame and an optional label. If present, the label is
 drawn in a gap in the top side of the frame. The position of the
 label can be controlled with set_label_align().</p>
<p> Used to visually group objects.</p>
<p><expr> GTK.Frame("Title")-&gt;add(GTK.Label("Contents"))</expr>
<image file='predef.GTK.Frame.1.png' width='48' height='27'>../images/gtk_frame.png</image></p>
<p><expr> GTK.Frame()-&gt;add(GTK.Label("Contents"))</expr>
<image file='predef.GTK.Frame.2.png' width='48' height='17'>../images/gtk_frame_2.png</image></p>
<p><expr> GTK.Frame()-&gt;add(GTK.Label("Contents"))-&gt;set_shadow_type(GTK.SHADOW_IN)</expr>
<image file='predef.GTK.Frame.3.png' width='48' height='17'>../images/gtk_frame_3.png</image></p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Frame.pike' first-line='21'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new W(Frame) widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Frame.pike' first-line='23'/><modifiers><static/></modifiers>
<arguments><argument name='label_text'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Frame'>GTK.Frame</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_label' homogen-type='method'><doc><text><p>Set the text of the label.</p>
</text></doc>
<method name='set_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Frame.pike' first-line='28'/>
<arguments><argument name='label_text'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Frame'>GTK.Frame</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_label_align' homogen-type='method'><doc><text><p>Arguments are xalignment and yalignment.
 0.0 is left or topmost, 1.0 is right or bottommost.
 The default value for a newly created Frame is 0.0.</p>
</text></doc>
<method name='set_label_align'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Frame.pike' first-line='33'/>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Frame'>GTK.Frame</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>Set the shadow type for the Frame widget. The type is one of
 <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Frame.pike' first-line='40'/>
<arguments><argument name='shadow_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Frame'>GTK.Frame</object></returntype>
</method>
</docgroup>
</class>

<class name='Hbox'><doc><text><p>Most packing is done by creating boxes. These are invisible widget
 containers that we can pack our widgets into which come in two
 forms, a horizontal box, and a vertical box. This is the horizontal
 one.  When packing widgets into a horizontal box, the objects are
 inserted horizontally from left to right or right to left depending
 on the call used.</p>
<p><expr> GTK.Hbox(0,0)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Hbox.1.png' width='175' height='19'>../images/gtk_hbox.png</image></p>
<p><expr> GTK.Hbox(1,0)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Hbox.2.png' width='232' height='19'>../images/gtk_hbox_2.png</image></p>
<p><expr> GTK.Hbox(1,40)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Hbox.3.png' width='352' height='19'>../images/gtk_hbox_3.png</image></p>
</text></doc><docgroup homogen-name='Box' homogen-type='inherit'><doc>
</doc>
<inherit name='Box'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hbox.pike' first-line='20'/><classname resolved='predef::GTK.Box'>GTK.Box</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new horizontal box widget.
 If all_same_size is true, all widgets will have exactly the same size.
 hpadding is added to the left and right of the children.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hbox.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments><argument name='all_same_size'><type><int/></type></argument><argument name='hpadding'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Hbox'>GTK.Hbox</object></returntype>
</method>
</docgroup>
</class>

<class name='Vbox'><doc><text><p>Most packing is done by creating boxes. These are invisible widget
 containers that we can pack our widgets into which come in two
 forms, a horizontal box, and a vertical box. This is the vertical
 one.  When packing widgets into a vertical box, the objects are
 inserted horizontally from top to bottom or bottom to top depending
 on the call used.</p>
<p><expr> GTK.Vbox(0,0)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Vbox.1.png' width='58' height='76'>../images/gtk_vbox.png</image></p>
<p><expr> GTK.Vbox(1,0)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Vbox.2.png' width='58' height='76'>../images/gtk_vbox_2.png</image></p>
<p><expr> GTK.Vbox(1,40)-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;pack_end_defaults(GTK.Button("From right"))-&gt;pack_start_defaults(GTK.Button("From left"))</expr>
<image file='predef.GTK.Vbox.3.png' width='58' height='196'>../images/gtk_vbox_3.png</image></p>
</text></doc><docgroup homogen-name='Box' homogen-type='inherit'><doc>
</doc>
<inherit name='Box'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vbox.pike' first-line='20'/><classname resolved='predef::GTK.Box'>GTK.Box</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new horizontal box widget.
 If all_same_size is true, all widgets will have exactly the same size.
 padding is added to the top and bottom of the children.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vbox.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments><argument name='uniformp'><type><int/></type></argument><argument name='padding'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Vbox'>GTK.Vbox</object></returntype>
</method>
</docgroup>
</class>

<class name='HbuttonBox'><doc><text><p>A HbuttonBox is very similar to a Hbox.
 The major diffference is that the button box
 is made to pack buttons in, and has a few convenience function for
 normal button layouts.</p>
<p><expr> GTK.HbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_usize(400,30)</expr>
<image file='predef.GTK.HbuttonBox.1.png' width='400' height='30'>../images/gtk_hbuttonbox.png</image></p>
<p><expr> GTK.HbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_SPREAD)-&gt;set_usize(400,30)</expr>
<image file='predef.GTK.HbuttonBox.2.png' width='400' height='30'>../images/gtk_hbuttonbox_2.png</image></p>
<p><expr> GTK.HbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_EDGE)-&gt;set_usize(400,30)</expr>
<image file='predef.GTK.HbuttonBox.3.png' width='400' height='30'>../images/gtk_hbuttonbox_3.png</image></p>
<p><expr> GTK.HbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_START)-&gt;set_usize(400,30)</expr>
<image file='predef.GTK.HbuttonBox.4.png' width='400' height='30'>../images/gtk_hbuttonbox_4.png</image></p>
<p><expr> GTK.HbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_END)-&gt;set_usize(400,30)</expr>
<image file='predef.GTK.HbuttonBox.5.png' width='400' height='30'>../images/gtk_hbuttonbox_5.png</image></p>
</text></doc><docgroup homogen-name='ButtonBox' homogen-type='inherit'><doc>
</doc>
<inherit name='ButtonBox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HbuttonBox.pike' first-line='24'/><classname resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new horizontal button box</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HbuttonBox.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.HbuttonBox'>GTK.HbuttonBox</object></returntype>
</method>
</docgroup>
</class>

<class name='CTreeRow'><doc><text><p>This class is deprecated.</p>
</text></doc><docgroup homogen-name='get_children' homogen-type='method'><doc><text><p>Return the first child</p>
</text></doc>
<method name='get_children'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeRow.pike' first-line='5'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_expanded' homogen-type='method'><doc><text><p>Return 1 if the node is expanded</p>
</text></doc>
<method name='get_expanded'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeRow.pike' first-line='10'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_is_leaf' homogen-type='method'><doc><text><p>Return 1 if the node is a leaf node</p>
</text></doc>
<method name='get_is_leaf'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeRow.pike' first-line='15'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_level' homogen-type='method'><doc><text><p>Return the level of this node (0 for root, 1 for a child of the root, etc)</p>
</text></doc>
<method name='get_level'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeRow.pike' first-line='20'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_parent' homogen-type='method'><doc><text><p>Return the parent node of this node</p>
</text></doc>
<method name='get_parent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeRow.pike' first-line='25'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
</class>

<class name='DrawingArea'><doc><text><p>The drawing area is a window you can draw in.
 Please note that you <b>must</b> handle refresh and resize events
 on your own. Use W(pDrawingArea) for a drawingarea with automatic
 refresh/resize handling.
<expr> GTK.DrawingArea()-&gt;set_usize(100,100)</expr>
<image file='predef.GTK.DrawingArea.1.png' width='100' height='100'>../images/gtk_drawingarea.png</image></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='11'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>Either clears the rectangle defined by the arguments, of if no
 arguments are specified, the whole drawable.</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='13'/>
<arguments><argument name='x'><type><or><int/><void/></or></type></argument><argument name='y'><type><or><int/><void/></or></type></argument><argument name='width'><type><or><int/><void/></or></type></argument><argument name='height'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='copy_area' homogen-type='method'><doc><text><p>Copies the rectangle defined by xsource,ysource and width,height
 from the source drawable, and places the results at xdest,ydest in
 the drawable in which this function is called.</p>
</text></doc>
<method name='copy_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='19'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='source'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='xsource'><type><int/></type></argument><argument name='ysource'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_arc' homogen-type='method'><doc><text><p>Draws a single circular or elliptical arc.  Each arc is specified
 by a rectangle and two angles. The center of the circle or ellipse
 is the center of the rectangle, and the major and minor axes are
 specified by the width and height.  Positive angles indicate
 counterclockwise motion, and negative angles indicate clockwise
 motion. If the magnitude of angle2 is greater than 360 degrees,
 it is truncated to 360 degrees.</p>
</text></doc>
<method name='draw_arc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='29'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='filledp'><type><int/></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument><argument name='angle1'><type><int/></type></argument><argument name='angle2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_bitmap' homogen-type='method'><doc><text><p>Draw a GDK(Bitmap) in this drawable.
 <b>NOTE:</b> This drawable must be a bitmap as well. This will be
 fixed in GTK 1.3</p>
</text></doc>
<method name='draw_bitmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='40'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='bitmap'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_image' homogen-type='method'><doc><text><p>Draw the rectangle specified by xsrc,ysrc+width,height from the
 GDK(Image) at xdest,ydest in the destination drawable</p>
</text></doc>
<method name='draw_image'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='47'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='image'><type><object resolved='predef::GDK.Image'>GDK.Image</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_line' homogen-type='method'><doc><text><p>img_begin
 w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay: g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay:  for(int x = 0; x&lt;10; x++) w-&gt;draw_line(g,x*10,0,100-x*10,99);
 img_end</p>
</text></doc>
<method name='draw_line'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='53'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_pixmap' homogen-type='method'><doc><text><p>Draw the rectangle specified by xsrc,ysrc+width,height from the
 GDK(Pixmap) at xdest,ydest in the destination drawable</p>
</text></doc>
<method name='draw_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='62'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='xsrc'><type><int/></type></argument><argument name='ysrc'><type><int/></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_point' homogen-type='method'><doc><text><p>img_begin
 w = GTK.DrawingArea()-&gt;set_usize(10,10);
 delay: g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay:  for(int x = 0; x&lt;10; x++) w-&gt;draw_point(g, x, x);
 img_end</p>
</text></doc>
<method name='draw_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='68'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_rectangle' homogen-type='method'><doc><text><p>img_begin
  w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay:  g = GDK.GC(w)-&gt;set_foreground( GDK.Color(255,0,0) );
 delay: for(int x = 0; x&lt;10; x++) w-&gt;draw_rectangle(g,0,x*10,0,100-x*10,99);
 img_end
 img_begin
 w = GTK.DrawingArea()-&gt;set_usize(100,100);
 delay:   g = GDK.GC(w);
 delay:  for(int x = 0; x&lt;30; x++) {
 delay:   g-&gt;set_foreground(GDK.Color(random(255),random(255),random(255)) );
 delay:   w-&gt;draw_rectangle(g,1,x*10,0,100-x*10,99);
 delay: }
 img_end</p>
</text></doc>
<method name='draw_rectangle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='77'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='filledp'><type><int/></type></argument><argument name='x1'><type><int/></type></argument><argument name='y1'><type><int/></type></argument><argument name='x2'><type><int/></type></argument><argument name='y2'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_text' homogen-type='method'><doc><text><p>y is used as the baseline for the text.
 If forcewide is true, the string will be expanded to a wide string
 even if it is not already one. This is useful when writing text
 using either unicode or some other 16 bit font.</p>
</text></doc>
<method name='draw_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='94'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='font'><type><object resolved='predef::GDK.Font'>GDK.Font</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='text'><type><string/></type></argument><argument name='forcewide'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='size' homogen-type='method'><doc><text><p>This function is OBSOLETE</p>
</text></doc>
<method name='size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/DrawingArea.pike' first-line='102'/>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</object></returntype>
</method>
</docgroup>
</class>

<class name='Layout'><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='3'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='5'/><modifiers><static/></modifiers>
<arguments><argument name='hadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='vadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='freeze' homogen-type='method'><doc/>
<method name='freeze'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='8'/>
<arguments/>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hadjustment' homogen-type='method'><doc/>
<method name='get_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='11'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_height' homogen-type='method'><doc/>
<method name='get_height'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='14'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vadjustment' homogen-type='method'><doc/>
<method name='get_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='17'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_width' homogen-type='method'><doc/>
<method name='get_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='20'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xoffset' homogen-type='method'><doc/>
<method name='get_xoffset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='23'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_yoffset' homogen-type='method'><doc/>
<method name='get_yoffset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='26'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='move' homogen-type='method'><doc/>
<method name='move'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='29'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='put' homogen-type='method'><doc/>
<method name='put'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='32'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_hadjustment' homogen-type='method'><doc/>
<method name='set_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='35'/>
<arguments><argument name='adj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_size' homogen-type='method'><doc/>
<method name='set_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='38'/>
<arguments><argument name='xsize'><type><int/></type></argument><argument name='ysize'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vadjustment' homogen-type='method'><doc/>
<method name='set_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='41'/>
<arguments><argument name='adj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thaw' homogen-type='method'><doc/>
<method name='thaw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Layout.pike' first-line='44'/>
<arguments/>
<returntype><object resolved='predef::GTK.Layout'>GTK.Layout</object></returntype>
</method>
</docgroup>
</class>

<class name='ProgressBar'><doc><text><p>A simple progress bar. Useful when you are doing things that take a long
 time. Try to always have an 'abort' button whenever it makes sence.
<expr> GTK.ProgressBar()-&gt;update(0.1)</expr>
<image file='predef.GTK.ProgressBar.1.png' width='150' height='20'>../images/gtk_progressbar.png</image></p>
<p><expr> GTK.ProgressBar()-&gt;set_show_text(1)-&gt;update(0.3)</expr>
<image file='predef.GTK.ProgressBar.2.png' width='150' height='20'>../images/gtk_progressbar_2.png</image></p>
<p><expr> GTK.ProgressBar()-&gt;update(0.6)</expr>
<image file='predef.GTK.ProgressBar.3.png' width='150' height='20'>../images/gtk_progressbar_3.png</image></p>
<p><expr> GTK.ProgressBar()-&gt;update(1.0)</expr>
<image file='predef.GTK.ProgressBar.4.png' width='150' height='20'>../images/gtk_progressbar_4.png</image></p>
</text></doc><docgroup homogen-name='Progress' homogen-type='inherit'><doc>
</doc>
<inherit name='Progress'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='18'/><classname resolved='predef::GTK.Progress'>GTK.Progress</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new progress bar.
 The default values are:
 Min 0.0, max 1.0, current 0.0</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_activity_blocks' homogen-type='method'><doc><text><p>The number of blocks that are set.</p>
</text></doc>
<method name='get_activity_blocks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='27'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_activity_dir' homogen-type='method'><doc><text><p>The current direction of the progress meter. 1 is forward and 0 is
 backwards. Usefull if you for some strange reason would like to
 know in what direction the activity indicator is swinging right
 now...</p>
</text></doc>
<method name='get_activity_dir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='32'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_activity_pos' homogen-type='method'><doc><text><p>The position of the progress meter in pixels.</p>
</text></doc>
<method name='get_activity_pos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_activity_step' homogen-type='method'><doc><text><p>The step size of the activity indicator in pixels.</p>
</text></doc>
<method name='get_activity_step'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='45'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bar_style' homogen-type='method'><doc><text><p>The progress bar style. GTK_PROGRESS_CONTINUOUS or GTK_PROGRESS_DISCRETE.</p>
</text></doc>
<method name='get_bar_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='50'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_blocks' homogen-type='method'><doc><text><p>The total number of blocks.</p>
</text></doc>
<method name='get_blocks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='55'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_orientation' homogen-type='method'><doc><text><p>The current orientation. GTK_PROGRESS_LEFT_TO_RIGHT,
 GTK_PROGRESS_RIGHT_TO_LEFT, GTK_PROGRESS_BOTTOM_TO_TOP or
 GTK_PROGRESS_TOP_TO_BOTTOM.</p>
</text></doc>
<method name='get_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='60'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_activity_blocks' homogen-type='method'><doc><text><p>The number of activity blocks</p>
</text></doc>
<method name='set_activity_blocks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='67'/>
<arguments><argument name='blocks'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_activity_step' homogen-type='method'><doc><text><p>Include activity blocks (empty gaps in the progressbar, ala windows 98)</p>
</text></doc>
<method name='set_activity_step'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='72'/>
<arguments><argument name='stepp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bar_style' homogen-type='method'><doc><text><p>One of GTK.ProgressContinuous or GTK.ProgressDiscrete</p>
</text></doc>
<method name='set_bar_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='77'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_discrete_blocks' homogen-type='method'><doc><text><p>The number of discrete blocks in the progress bar</p>
</text></doc>
<method name='set_discrete_blocks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='82'/>
<arguments><argument name='blocks'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_orientation' homogen-type='method'><doc><text><p>One of
 GTK.ProgressLeftToRight, GTK.ProgressRightToLeft,
 GTK.ProgressBottomToTop or GTK.ProgressTopToBottom</p>
</text></doc>
<method name='set_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='87'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='update' homogen-type='method'><doc><text><p>0.0 is the minimum value, 1.0 is the maximum value.</p>
</text></doc>
<method name='update'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ProgressBar.pike' first-line='94'/>
<arguments><argument name='fraction'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ProgressBar'>GTK.ProgressBar</object></returntype>
</method>
</docgroup>
</class>

<class name='Clock'><doc><text><p>The GtkClock widget provides an easy way of providing a textual
 clock in your application. It supports realtime display, as well as
 count up and count down modes. The clock widget could conceivably
 be used in such applications as an application's status bar, or as
 the basis for a panel applet, etc.</p>
<p> Three modes of operation are supported. These are realtime - which
 displays the current time, count-up/increasing - which counts up
 from an initial value (like a stopwatch), and count-down/decreasing
 - which counts down from an initial value.</p>
<p> Note, however, that the accuracy of the gtkclock widget is limited
 to 1 second.
<expr> GTK.Clock( GTK.ClockRealtime );</expr>
<image file='predef.GTK.Clock.1.png' width='26' height='13'>../images/gtk_clock.png</image></p>
<p><expr> GTK.Clock( GTK.ClockDecreasing )-&gt;set_seconds(10000)-&gt;start();</expr>
<image file='predef.GTK.Clock.2.png' width='40' height='13'>../images/gtk_clock_2.png</image></p>
</text></doc><docgroup homogen-name='Label' homogen-type='inherit'><doc>
</doc>
<inherit name='Label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='23'/><classname resolved='predef::GTK.Label'>GTK.Label</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>type is one of <ref resolved='predef::GTK.CLOCK_DECREASING'>CLOCK_DECREASING</ref>, <ref resolved='predef::GTK.CLOCK_INCREASING'>CLOCK_INCREASING</ref> and <ref resolved='predef::GTK.CLOCK_REALTIME'>CLOCK_REALTIME</ref>;</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='25'/><modifiers><static/></modifiers>
<arguments><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_format' homogen-type='method'><doc><text><p>Set the format of a GtkClock widget. The syntax of the format
 string is identical to that of the function strftime(3). Further
 information about time format strings can be found on this man
 page. The widget defaults to a format string of "%H:%M" in realtime
 mode, or "%H:%M:%S" in count-up or count-down modes.</p>
</text></doc>
<method name='set_format'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='30'/>
<arguments><argument name='fmt'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_seconds' homogen-type='method'><doc><text><p>Set the current time as displayed by the clock in count-up and
 count-down modes. This function has no effect in realtime mode, as
 the clock time is determined by the system clock in realtime mode.</p>
</text></doc>
<method name='set_seconds'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='39'/>
<arguments><argument name='seconds'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_update_interval' homogen-type='method'><doc><text><p>Set the interval at which the GtkClock widget is updated. The
 seconds parameter is used to determine how often the time shown on
 the widget is updated. The default value is to update every second,
 but you may wish to increase this value. If you set the update
 interval to 0, the clock is never updated.</p>
</text></doc>
<method name='set_update_interval'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='46'/>
<arguments><argument name='seconds'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='start' homogen-type='method'><doc><text><p>Start the clock counting in count-up or count-down modes. The clock
 will begin counting up or down from the time when this function is
 called, until gtk_clock_stop is called. This function has no effect
 in the realtime mode (you can't start and stop real time! :-).</p>
</text></doc>
<method name='start'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='55'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='stop' homogen-type='method'><doc><text><p>Stop the clock counting in count-up or count-down modes. The clock
 ceases counting up or down, and the last time reached remains on
 the display. This function has no effect in the realtime mode (you
 can't start and stop real time! :-).</p>
</text></doc>
<method name='stop'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clock.pike' first-line='63'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clock'>GTK.Clock</object></returntype>
</method>
</docgroup>
</class>

<class name='Toolbar'><doc><text><p>Toolbars are usually used to group some number of widgets in order
 to simplify customization of their look and layout. Typically a
 toolbar consists of buttons with icons, labels and tooltips, but
 any other widget can also be put inside a toolbar. Finally, items
 can be arranged horizontally or vertically and buttons can be
 displayed with icons, labels, or both.</p>
<p> Examples:
<expr> lambda(){object t=GTK.Toolbar( GTK.ORIENTATION_HORIZONTAL, GTK.TOOLBAR_TEXT );t-&gt;append_item( "Button 1", "Tooltip 1", "", GTK.Frame(), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 2", "Tooltip 2", "", GTK.Frame(), lambda(){},0);t-&gt;append_item( "Button 3", "Tooltip 3", "", GTK.Frame(), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 4", "Tooltip 4", "", GTK.Frame(), lambda(){},0);t-&gt;append_item( "Button 5", "Tooltip 5", "", GTK.Frame(), lambda(){},0);return t;}()</expr>
<image file='predef.GTK.Toolbar.1.png' width='245' height='19'>../images/gtk_toolbar.png</image></p>
<p><expr> lambda(){object t=GTK.Toolbar( GTK.ORIENTATION_VERTICAL, GTK.TOOLBAR_TEXT );t-&gt;append_item( "Button 1", "Tooltip 1", "", GTK.Frame(), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 2", "Tooltip 2", "", GTK.Frame(), lambda(){},0);t-&gt;append_item( "Button 3", "Tooltip 3", "", GTK.Frame(), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 4", "Tooltip 4", "", GTK.Frame(), lambda(){},0);t-&gt;append_item( "Button 5", "Tooltip 5", "", GTK.Frame(), lambda(){},0);return t;}()</expr>
<image file='predef.GTK.Toolbar.2.png' width='47' height='105'>../images/gtk_toolbar_2.png</image></p>
<p><expr> lambda(){object i=GDK.Image()-&gt;set(Image.image(20,20)-&gt;test());object t=GTK.Toolbar( GTK.ORIENTATION_HORIZONTAL, GTK.TOOLBAR_BOTH );t-&gt;append_item( "Button 1", "Tooltip 1", "", GTK.Image(i), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 2", "Tooltip 2", "", GTK.Image(i), lambda(){},0);t-&gt;append_item( "Button 3", "Tooltip 3", "", GTK.Image(i), lambda(){},0);t-&gt;append_space();t-&gt;append_item( "Button 4", "Tooltip 4", "", GTK.Image(i), lambda(){},0);t-&gt;append_item( "Button 5", "Tooltip 5", "", GTK.Image(i), lambda(){},0);return t;}()</expr>
<image file='predef.GTK.Toolbar.3.png' width='245' height='39'>../images/gtk_toolbar_3.png</image></p>
<p>  Signals:
 <b>orientation_changed</b></p>
<p> <b>style_changed</b></p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='27'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='append_item' homogen-type='method'><doc><text><p>Adds a new button to the start of the toolbar.</p>
</text></doc>
<method name='append_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='29'/>
<arguments><argument name='label'><type><string/></type></argument><argument name='tooltip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument><argument name='icon'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='clicked_cb'><type><function/></type></argument><argument name='clicked_arg'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_space' homogen-type='method'><doc><text><p>Adds a small space.</p>
</text></doc>
<method name='append_space'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='34'/>
<arguments/>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_widget' homogen-type='method'><doc><text><p>Append a custom widgets. Arguments are widget, tooltip, private</p>
</text></doc>
<method name='append_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='39'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='tootip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Orientation is one of
 <ref resolved='predef::GTK.ORIENTATION_HORIZONTAL'>ORIENTATION_HORIZONTAL</ref> and <ref resolved='predef::GTK.ORIENTATION_VERTICAL'>ORIENTATION_VERTICAL</ref>. Style is one of <ref resolved='predef::GTK.TOOLBAR_BOTH'>TOOLBAR_BOTH</ref>, <ref resolved='predef::GTK.TOOLBAR_ICONS'>TOOLBAR_ICONS</ref> and <ref resolved='predef::GTK.TOOLBAR_TEXT'>TOOLBAR_TEXT</ref></p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='44'/><modifiers><static/></modifiers>
<arguments><argument name='orientation'><type><int/></type></argument><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_button_relief' homogen-type='method'><doc/>
<method name='get_button_relief'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='50'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_item' homogen-type='method'><doc><text><p>Arguments as for append_item, but an extra position argument at the end.
 Adds a new button after the item at the specified position.</p>
</text></doc>
<method name='insert_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='53'/>
<arguments><argument name='label'><type><string/></type></argument><argument name='tooltip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument><argument name='icon'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='clicked_cb'><type><function/></type></argument><argument name='clicked_arg'><type><mixed/></type></argument><argument name='position'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_space' homogen-type='method'><doc><text><p>Inserts a small space at the specified postion.</p>
</text></doc>
<method name='insert_space'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='59'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_widget' homogen-type='method'><doc><text><p>Insert a custom widgets.</p>
</text></doc>
<method name='insert_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='64'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='tootip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_item' homogen-type='method'><doc><text><p>Arguments as for append_item
 Adds a new button to the end of the toolbar.</p>
</text></doc>
<method name='prepend_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='69'/>
<arguments><argument name='label'><type><string/></type></argument><argument name='tooltip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument><argument name='icon'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='clicked_cb'><type><function/></type></argument><argument name='clicked_arg'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_space' homogen-type='method'><doc><text><p>Adds a small space.</p>
</text></doc>
<method name='prepend_space'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='75'/>
<arguments/>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_widget' homogen-type='method'><doc><text><p>Prepend a custom widgets. Arguments are widget, tooltip, private</p>
</text></doc>
<method name='prepend_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='80'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='tootip'><type><string/></type></argument><argument name='prv'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_button_relief' homogen-type='method'><doc/>
<method name='set_button_relief'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='85'/>
<arguments><argument name='relief'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_orientation' homogen-type='method'><doc><text><p>Set the orientation, one of <ref resolved='predef::GTK.ORIENTATION_HORIZONTAL'>ORIENTATION_HORIZONTAL</ref> and <ref resolved='predef::GTK.ORIENTATION_VERTICAL'>ORIENTATION_VERTICAL</ref></p>
</text></doc>
<method name='set_orientation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='88'/>
<arguments><argument name='orientation'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_space_size' homogen-type='method'><doc><text><p>Set the width (or height) of the space created by append_space.</p>
</text></doc>
<method name='set_space_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='93'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_space_style' homogen-type='method'><doc/>
<method name='set_space_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='98'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_style' homogen-type='method'><doc><text><p>Set the style, one of <ref resolved='predef::GTK.TOOLBAR_BOTH'>TOOLBAR_BOTH</ref>, <ref resolved='predef::GTK.TOOLBAR_ICONS'>TOOLBAR_ICONS</ref> and <ref resolved='predef::GTK.TOOLBAR_TEXT'>TOOLBAR_TEXT</ref></p>
</text></doc>
<method name='set_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='101'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tooltips' homogen-type='method'><doc><text><p>If true, show the tooltips.</p>
</text></doc>
<method name='set_tooltips'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Toolbar.pike' first-line='106'/>
<arguments><argument name='tootipp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Toolbar'>GTK.Toolbar</object></returntype>
</method>
</docgroup>
</class>

<class name='OptionMenu'><doc><text><p>A OptionMenu is a widget that allows the user to choose from a
 list of valid choices. The OptionMenu displays the selected
 choice. When activated the OptionMenu displays a popup W(Menu)
 which allows the user to make a new choice.</p>
<p><expr> GTK.OptionMenu()-&gt;set_menu(GTK.Menu()-&gt;add( GTK.Menu_item("Option 1") ));</expr>
<image file='predef.GTK.OptionMenu.1.png' width='219' height='32'>../images/gtk_optionmenu.png</image></p>
</text></doc><docgroup homogen-name='Button' homogen-type='inherit'><doc>
</doc>
<inherit name='Button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='13'/><classname resolved='predef::GTK.Button'>GTK.Button</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new option menu widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='15'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.OptionMenu'>GTK.OptionMenu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_menu' homogen-type='method'><doc><text><p>Returns the W(Menu) associated with the OptionMenu.</p>
</text></doc>
<method name='get_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='20'/>
<arguments/>
<returntype><object resolved='predef::GTK.Menu'>GTK.Menu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_menu' homogen-type='method'><doc><text><p>Remove the menu.</p>
</text></doc>
<method name='remove_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='25'/>
<arguments/>
<returntype><object resolved='predef::GTK.OptionMenu'>GTK.OptionMenu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_history' homogen-type='method'><doc><text><p>Selects the menu item specified by index making it the newly
 selected value for the option menu.</p>
</text></doc>
<method name='set_history'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='30'/>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.OptionMenu'>GTK.OptionMenu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_menu' homogen-type='method'><doc><text><p>Provides the GtkMenu that is popped up to allow the user to choose
 a new value. You should provide a simple menu avoiding the use of
 tearoff menu items, submenus, and accelerators.</p>
</text></doc>
<method name='set_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/OptionMenu.pike' first-line='36'/>
<arguments><argument name='menu'><type><object resolved='predef::GTK.Menu'>GTK.Menu</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.OptionMenu'>GTK.OptionMenu</object></returntype>
</method>
</docgroup>
</class>

<class name='Clist'><doc><text><p>The GtkCList widget is a multi-column list widget that is capable
 of handling literally thousands of rows of information. Each column
 can optionally have a title, which itself is optionally active,
 allowing us to bind a function to it's selection.
<expr> GTK.Clist(2)-&gt;set_column_title(0,"Col 1")-&gt;set_column_title(1,"Col 2")-&gt;column_titles_show()-&gt;set_column_width(0,50)-&gt;set_usize(150,70)</expr>
<image file='predef.GTK.Clist.1.png' width='150' height='70'>../images/gtk_clist.png</image></p>
<p>  Signals:
 <b>abort_column_resize</b></p>
<p> <b>click_column</b>
 Called when a column is clicked</p>
<p> <b>end_selection</b></p>
<p> <b>extend_selection</b></p>
<p> <b>resize_column</b>
 Called when a column is resized</p>
<p> <b>scroll_horizontal</b></p>
<p> <b>scroll_vertical</b></p>
<p> <b>select_all</b></p>
<p> <b>select_row</b>
 Called when a row is selected</p>
<p> <b>start_selection</b></p>
<p> <b>toggle_add_mode</b></p>
<p> <b>toggle_focus_row</b></p>
<p> <b>undo_selection</b></p>
<p> <b>unselect_all</b></p>
<p> <b>unselect_row</b>
 Called when a row is deselected</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='50'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>The return value of indicates the index of the row that was just
  added.</p>
<p> 'columns' are the texts we want to put in the columns. The size of
 the array should equal the number of columns in the list.</p>
</text></doc>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='52'/>
<arguments><argument name='columns'><type><array/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clear' homogen-type='method'><doc><text><p>remove all rows</p>
</text></doc>
<method name='clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='61'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_title_active' homogen-type='method'><doc><text><p>Make a specific column title active</p>
</text></doc>
<method name='column_title_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='66'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_title_passive' homogen-type='method'><doc><text><p>Make a specific column title passive</p>
</text></doc>
<method name='column_title_passive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='71'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_titles_active' homogen-type='method'><doc><text><p>The column titles can be pressed</p>
</text></doc>
<method name='column_titles_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='76'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_titles_hide' homogen-type='method'><doc><text><p>Hide the column titles</p>
</text></doc>
<method name='column_titles_hide'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='81'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_titles_passive' homogen-type='method'><doc><text><p>The column titles can't be pressed</p>
</text></doc>
<method name='column_titles_passive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='86'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='column_titles_show' homogen-type='method'><doc><text><p>Show the column titles.</p>
</text></doc>
<method name='column_titles_show'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='91'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='columns_autosize' homogen-type='method'><doc><text><p>Resize all columns according to their contents</p>
</text></doc>
<method name='columns_autosize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='96'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new empty clist, columns columns wide.</p>
<p> Not all columns have to be visible, some can be used to store data that is
 related to a certain cell in the list.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='101'/><modifiers><static/></modifiers>
<arguments><argument name='columns'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_row_from_data' homogen-type='method'><doc><text><p>Find a row in the list that has the given user data.  If no node is
 found, -1 is returned.</p>
</text></doc>
<method name='find_row_from_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='110'/>
<arguments><argument name='data'><type><object resolved='predef::GTK.Clist.find_row_from_data'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='freeze' homogen-type='method'><doc><text><p>freeze all visual updates of the list, and then thaw the list after
 you have made a number of changes and the updates wil occure in a
 more efficent mannor than if you made them on a unfrozen list</p>
</text></doc>
<method name='freeze'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='116'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_background' homogen-type='method'><doc><text><p>Return the background color of a specified row</p>
</text></doc>
<method name='get_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='123'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cell_style' homogen-type='method'><doc><text><p>return the W(Style) associated with a specific cell</p>
</text></doc>
<method name='get_cell_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='128'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='col'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cell_type' homogen-type='method'><doc><text><p>Return value is one of <ref resolved='predef::GTK.CELL_EMPTY'>CELL_EMPTY</ref>, <ref resolved='predef::GTK.CELL_PIXMAP'>CELL_PIXMAP</ref>, <ref resolved='predef::GTK.CELL_PIXTEXT'>CELL_PIXTEXT</ref>, <ref resolved='predef::GTK.CELL_TEXT'>CELL_TEXT</ref> and <ref resolved='predef::GTK.CELL_WIDGET'>CELL_WIDGET</ref></p>
</text></doc>
<method name='get_cell_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='133'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_column_title' homogen-type='method'><doc><text><p>Returns the title of a specified column.</p>
</text></doc>
<method name='get_column_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='138'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_column_widget' homogen-type='method'><doc><text><p>Return the widget for the specified column title</p>
</text></doc>
<method name='get_column_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='143'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_columns' homogen-type='method'><doc><text><p>Return the number of columns in this clist</p>
</text></doc>
<method name='get_columns'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='148'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_drag_button' homogen-type='method'><doc><text><p>Return the button used to drag items (by default 1)</p>
</text></doc>
<method name='get_drag_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='153'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_flags' homogen-type='method'><doc><text><p>Return the flags. A bitwise or of <ref resolved='predef::GTK.CLIST_ADD_MODE'>CLIST_ADD_MODE</ref>, <ref resolved='predef::GTK.CLIST_AUTO_RESIZE_BLOCKED'>CLIST_AUTO_RESIZE_BLOCKED</ref>, <ref resolved='predef::GTK.CLIST_AUTO_SORT'>CLIST_AUTO_SORT</ref>, <ref resolved='predef::GTK.CLIST_DRAW_DRAG_LINE'>CLIST_DRAW_DRAG_LINE</ref>, <ref resolved='predef::GTK.CLIST_DRAW_DRAG_RECT'>CLIST_DRAW_DRAG_RECT</ref>, <ref resolved='predef::GTK.CLIST_IN_DRAG'>CLIST_IN_DRAG</ref>, <ref resolved='predef::GTK.CLIST_REORDERABLE'>CLIST_REORDERABLE</ref>, <ref resolved='predef::GTK.CLIST_ROW_HEIGHT_SET'>CLIST_ROW_HEIGHT_SET</ref>, <ref resolved='predef::GTK.CLIST_SHOW_TITLES'>CLIST_SHOW_TITLES</ref> and <ref resolved='predef::GTK.CLIST_USE_DRAG_ICONS'>CLIST_USE_DRAG_ICONS</ref></p>
</text></doc>
<method name='get_flags'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='158'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_focus_row' homogen-type='method'><doc><text><p>The currently focused row</p>
</text></doc>
<method name='get_focus_row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='163'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_foreground' homogen-type='method'><doc><text><p>Return the foregroun color for the specified row</p>
</text></doc>
<method name='get_foreground'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='168'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hadjustment' homogen-type='method'><doc><text><p>Return the W(Adjustment) object used for horizontal scrolling</p>
</text></doc>
<method name='get_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='173'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_pixmap' homogen-type='method'><doc><text><p>Return the pixmap for the specified cell</p>
</text></doc>
<method name='get_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='178'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_pixtext' homogen-type='method'><doc><text><p>Return the pixmap and text for the specified cell as a mapping:
 ([ "spacing":spacing, "text":text, "pixmap":pixmap ])</p>
</text></doc>
<method name='get_pixtext'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='183'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='col'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_row_data' homogen-type='method'><doc><text><p>Return the data associated with a row, or 0.</p>
</text></doc>
<method name='get_row_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='189'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist.get_row_data'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_row_height' homogen-type='method'><doc><text><p>Return the height of the row</p>
</text></doc>
<method name='get_row_height'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='194'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_row_style' homogen-type='method'><doc><text><p>Return the W(style) object associated with the specified row</p>
</text></doc>
<method name='get_row_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='199'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_rows' homogen-type='method'><doc><text><p>Return the number of rows</p>
</text></doc>
<method name='get_rows'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='204'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selectable' homogen-type='method'><doc><text><p>Return 1 if the specified row can be selected by the user.</p>
</text></doc>
<method name='get_selectable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='209'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selection' homogen-type='method'><doc><text><p>Return an array with all selected rows.</p>
</text></doc>
<method name='get_selection'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='214'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selection_info' homogen-type='method'><doc><text><p>Return the row column corresponding to the x and y coordinates,
 the returned values are only valid if the x and y coordinates
 are relative to the clist window coordinates</p>
</text></doc>
<method name='get_selection_info'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='219'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selection_mode' homogen-type='method'><doc><text><p>Return the selection mode. One of <ref resolved='predef::GTK.SELECTION_BROWSE'>SELECTION_BROWSE</ref>, <ref resolved='predef::GTK.SELECTION_EXTENDED'>SELECTION_EXTENDED</ref>, <ref resolved='predef::GTK.SELECTION_MULTIPLE'>SELECTION_MULTIPLE</ref> and <ref resolved='predef::GTK.SELECTION_SINGLE'>SELECTION_SINGLE</ref></p>
</text></doc>
<method name='get_selection_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='226'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_shadow_type' homogen-type='method'><doc><text><p>Return the curreent shadow type. One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='get_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='231'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_sort_column' homogen-type='method'><doc><text><p>The column that will be used to sort the rows</p>
</text></doc>
<method name='get_sort_column'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='236'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_sort_type' homogen-type='method'><doc><text><p>The sort method, one of <ref resolved='predef::GTK.SORT_ASCENDING'>SORT_ASCENDING</ref> and <ref resolved='predef::GTK.SORT_DESCENDING'>SORT_DESCENDING</ref></p>
</text></doc>
<method name='get_sort_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='241'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Return the text associated with a specific cell.</p>
</text></doc>
<method name='get_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='246'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='col'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vadjustment' homogen-type='method'><doc><text><p>Return the W(Adjustment) object used for vertical scrolling</p>
</text></doc>
<method name='get_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='251'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>Insert a row after a specified row.
  The return value of indicates the index of the row that was just
  added, please note that this is not nessasarily the same row as
  the specified one, if autosort is activated, the row will be
  inserted so that the list is sill sorted.</p>
<p> 'columns' are the texts we want to put in the columns. The size of
 the array should equal the number of columns in the list.</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='256'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='columns'><type><array/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='moveto' homogen-type='method'><doc><text><p>Make the specified row and column visible, and place it relative to
 xpos and ypos in the area the Clist occupies.   xpos and ypos
 are relative, 0.0 == top, 1.0 == bottom</p>
</text></doc>
<method name='moveto'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='268'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument><argument name='xpos'><type><float/></type></argument><argument name='ypos'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='optimal_column_width' homogen-type='method'><doc><text><p>Return the optimal width of the specified column</p>
</text></doc>
<method name='optimal_column_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='275'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend' homogen-type='method'><doc><text><p>The return value of indicates the index of the row that was just
  added.</p>
<p> 'columns' are the texts we want to put in the columns. The size of
 the array should equal the number of columns in the list.</p>
</text></doc>
<method name='prepend'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='280'/>
<arguments><argument name='columns'><type><array/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Delete a specified row. If you want to remove all rows in a Clist,
 use 'clear()' instead of calling remove multiple times.</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='289'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='row_move' homogen-type='method'><doc><text><p>Move the specified row to just before the specified destination
 row.</p>
</text></doc>
<method name='row_move'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='295'/>
<arguments><argument name='from_row'><type><int/></type></argument><argument name='to_row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_all' homogen-type='method'><doc><text><p>Select all rows</p>
</text></doc>
<method name='select_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='301'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_row' homogen-type='method'><doc><text><p>Select the given row. The column is sent to the signal handler, but
 ignored for all other purposes.</p>
</text></doc>
<method name='select_row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='306'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_auto_sort' homogen-type='method'><doc><text><p>If true, the clist will automatically be re-sorted when new rows
 are inserted. Please note that it will not be resorted if the text
 in cells are changed, use 'sort()' to force a reorder. The sort
 function is stable.</p>
</text></doc>
<method name='set_auto_sort'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='312'/>
<arguments><argument name='sortp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_background' homogen-type='method'><doc><text><p>Set the background color of the specified row the the specified color</p>
</text></doc>
<method name='set_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='320'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_button_actions' homogen-type='method'><doc><text><p>Action is a bitwise or of <ref resolved='predef::GTK.BUTTONBOX_DEFAULT_STYLE'>BUTTONBOX_DEFAULT_STYLE</ref>, <ref resolved='predef::GTK.BUTTONBOX_EDGE'>BUTTONBOX_EDGE</ref>, <ref resolved='predef::GTK.BUTTONBOX_END'>BUTTONBOX_END</ref>, <ref resolved='predef::GTK.BUTTONBOX_SPREAD'>BUTTONBOX_SPREAD</ref>, <ref resolved='predef::GTK.BUTTONBOX_START'>BUTTONBOX_START</ref>, <ref resolved='predef::GTK.BUTTON_DRAGS'>BUTTON_DRAGS</ref>, <ref resolved='predef::GTK.BUTTON_EXPANDS'>BUTTON_EXPANDS</ref>, <ref resolved='predef::GTK.BUTTON_IGNORED'>BUTTON_IGNORED</ref> and <ref resolved='predef::GTK.BUTTON_SELECTS'>BUTTON_SELECTS</ref>
 Button is the mouse button (normally 1-3, 4 and 5 sometimes beeing
 scroll wheel up and scroll wheel down)</p>
</text></doc>
<method name='set_button_actions'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='325'/>
<arguments><argument name='button'><type><int/></type></argument><argument name='action'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cell_style' homogen-type='method'><doc><text><p>Set a W(Style) for a specific cell</p>
</text></doc>
<method name='set_cell_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='332'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument><argument name='style'><type><object resolved='predef::GTK.Style'>GTK.Style</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_auto_resize' homogen-type='method'><doc><text><p>Automatically resize a column to the width of it's widest contents.</p>
</text></doc>
<method name='set_column_auto_resize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='337'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='autoresizep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_justification' homogen-type='method'><doc><text><p>justification is one of <ref resolved='predef::GTK.JUSTIFY_CENTER'>JUSTIFY_CENTER</ref>, <ref resolved='predef::GTK.JUSTIFY_FILL'>JUSTIFY_FILL</ref>, <ref resolved='predef::GTK.JUSTIFY_LEFT'>JUSTIFY_LEFT</ref> and <ref resolved='predef::GTK.JUSTIFY_RIGHT'>JUSTIFY_RIGHT</ref></p>
</text></doc>
<method name='set_column_justification'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='342'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='justification'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_max_width' homogen-type='method'><doc><text><p>if width 6lt; 0 , there is no restriction</p>
</text></doc>
<method name='set_column_max_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='347'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_min_width' homogen-type='method'><doc><text><p>Width in pixels</p>
</text></doc>
<method name='set_column_min_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='352'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_resizeable' homogen-type='method'><doc><text><p>Make a column resizable, or remove it's the resizability.</p>
</text></doc>
<method name='set_column_resizeable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='357'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='resizeablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_title' homogen-type='method'><doc><text><p>Set the column title of a specified column. It is a good idea to
 set the titles before the column title buttons are shown.</p>
</text></doc>
<method name='set_column_title'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='362'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_visibility' homogen-type='method'><doc><text><p>Hide or show a column</p>
</text></doc>
<method name='set_column_visibility'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='368'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='visiblep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_widget' homogen-type='method'><doc><text><p>Put a widget as a column title. The widget will be added to a
 W(Button).</p>
</text></doc>
<method name='set_column_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='373'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_column_width' homogen-type='method'><doc><text><p>Width in pixels</p>
</text></doc>
<method name='set_column_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='379'/>
<arguments><argument name='column'><type><int/></type></argument><argument name='width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_compare_func' homogen-type='method'><doc><text><p>Set the compare function. The function will be called with a
 mapping as it's only argument, like this:<pre>
   ([
      "clist":the clist widget,
      "sort_column":the column to sort on,
      "row1_data":The user data pointer for the first row,
      "row2_data":The user data pointer for the second row,
      "row1_text":The text in the sort cell in the first row
      "row2_text":The text in the sort cell in the second row
   ])
 </pre>
 The return value is one of:
   1: Row 1 is more than row 2
   0: The rows are equal
  -1: Row 1 is lesser than row 2
 To remove the comparefunction, use 0 as the argument.</p>
</text></doc>
<method name='set_compare_func'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='384'/>
<arguments><argument name='cmpfun'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_foreground' homogen-type='method'><doc><text><p>Set the foreground color of the specified row to the specified color</p>
</text></doc>
<method name='set_foreground'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='404'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_hadjustment' homogen-type='method'><doc><text><p>Set the W(Adjustment) object used for horizontal scrolling</p>
</text></doc>
<method name='set_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='409'/>
<arguments><argument name='adjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixmap' homogen-type='method'><doc><text><p>Set the pixmap of the specified cell. The mask is optional</p>
</text></doc>
<method name='set_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='414'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='col'><type><int/></type></argument><argument name='image'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixtext' homogen-type='method'><doc><text><p>Set the pixmap and text of the specified cell. The mask is optional
 The spacing is the number of pixels between the pixmap and the text.</p>
</text></doc>
<method name='set_pixtext'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='419'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument><argument name='text'><type><string/></type></argument><argument name='spacing'><type><int/></type></argument><argument name='image'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_reorderable' homogen-type='method'><doc><text><p>If true, the user can drag around the rows in the list.</p>
</text></doc>
<method name='set_reorderable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='425'/>
<arguments><argument name='reorderablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_data' homogen-type='method'><doc><text><p>Set the user data associated with the specified row.
 This data can be used to find rows, and when a row is selected it
 can be easily retrieved using node_get_row_data.</p>
<p> <b>You can only use objects as row data right now</b></p>
</text></doc>
<method name='set_row_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='430'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='data'><type><object resolved='predef::GTK.Clist.set_row_data'/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_height' homogen-type='method'><doc><text><p>in pixels</p>
</text></doc>
<method name='set_row_height'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='439'/>
<arguments><argument name='pixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_style' homogen-type='method'><doc/>
<method name='set_row_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='444'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='style'><type><object resolved='predef::GTK.Style'>GTK.Style</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_selectable' homogen-type='method'><doc><text><p>If true, the row can be selected by the user, otherwise it cannot
 be selected, only focused.</p>
</text></doc>
<method name='set_selectable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='447'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='selectablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_selection_mode' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SELECTION_BROWSE'>SELECTION_BROWSE</ref>, <ref resolved='predef::GTK.SELECTION_EXTENDED'>SELECTION_EXTENDED</ref>, <ref resolved='predef::GTK.SELECTION_MULTIPLE'>SELECTION_MULTIPLE</ref> and <ref resolved='predef::GTK.SELECTION_SINGLE'>SELECTION_SINGLE</ref></p>
</text></doc>
<method name='set_selection_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='453'/>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='458'/>
<arguments><argument name='shadowtype'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shift' homogen-type='method'><doc><text><p>The contents of the specified cell will be drawn shifted (indented)
 the specifid number of pixels.</p>
<p> This can be useful to generate a tree-like layout when you do not
 want to make a W(Ctree)</p>
</text></doc>
<method name='set_shift'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='463'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument><argument name='yshift'><type><int/></type></argument><argument name='xshift'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_sort_column' homogen-type='method'><doc/>
<method name='set_sort_column'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='473'/>
<arguments><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_sort_type' homogen-type='method'><doc><text><p>Ascending or descending (One of <ref resolved='predef::GTK.SORT_ASCENDING'>SORT_ASCENDING</ref> and <ref resolved='predef::GTK.SORT_DESCENDING'>SORT_DESCENDING</ref>)</p>
</text></doc>
<method name='set_sort_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='476'/>
<arguments><argument name='direction'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text for the specified cell. Please note that even if auto
 sorting is enabled, the row will not be resorted. Use the 'sort()'
 function.</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='481'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_use_drag_icons' homogen-type='method'><doc><text><p>If true, hard coded drag icons will be used.</p>
</text></doc>
<method name='set_use_drag_icons'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='488'/>
<arguments><argument name='dragiconsp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vadjustment' homogen-type='method'><doc><text><p>Set the W(Adjustment) object used for vertical scrolling</p>
</text></doc>
<method name='set_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='493'/>
<arguments><argument name='adjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sort' homogen-type='method'><doc><text><p>Set the column on which all sorting will be performed</p>
</text></doc>
<method name='sort'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='498'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thaw' homogen-type='method'><doc><text><p>freeze all visual updates of the list, and then thaw the list after
 you have made a number of changes and the updates wil occure in a
 more efficent mannor than if you made them on a unfrozen list</p>
</text></doc>
<method name='thaw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='503'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='undo_selection' homogen-type='method'><doc><text><p>Undo the previous selection</p>
</text></doc>
<method name='undo_selection'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='510'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect_all' homogen-type='method'><doc><text><p>Unselect all rows</p>
</text></doc>
<method name='unselect_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='515'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect_row' homogen-type='method'><doc><text><p>Unselect the given row. The column is sent to the signal handler,
 but ignored for all other purposes.</p>
</text></doc>
<method name='unselect_row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Clist.pike' first-line='520'/>
<arguments><argument name='row'><type><int/></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
</class>

<class name='Item'><doc><text><p>This class is inherited by all 'item' type of widgets.</p>
<p>  Signals:
 <b>delselect</b></p>
<p> <b>select</b></p>
<p> <b>toggle</b></p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Item.pike' first-line='12'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='deselect' homogen-type='method'><doc><text><p>Emulate a 'deselect' event.</p>
</text></doc>
<method name='deselect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Item.pike' first-line='14'/>
<arguments/>
<returntype><object resolved='predef::GTK.Item'>GTK.Item</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select' homogen-type='method'><doc><text><p>Emulate a 'select' event.</p>
</text></doc>
<method name='select'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Item.pike' first-line='19'/>
<arguments/>
<returntype><object resolved='predef::GTK.Item'>GTK.Item</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggle' homogen-type='method'><doc><text><p>Emulate a 'toggle' event.</p>
</text></doc>
<method name='toggle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Item.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GTK.Item'>GTK.Item</object></returntype>
</method>
</docgroup>
</class>

<class name='Vpaned'><doc><text><p>The paned window widgets are useful when you want to divide an area
 into two parts, with the relative size of the two parts controlled
 by the user. A groove is drawn between the two portions with a
 handle that the user can drag to change the ratio. This widgets
 makes a vertical division</p>
<p><expr> GTK.Vpaned()-&gt;add1(GTK.Label("Top Side Of Pane"))-&gt;add2(GTK.Label("Bottom"))-&gt;set_usize(100,100)</expr>
<image file='predef.GTK.Vpaned.1.png' width='100' height='100'>../images/gtk_vpaned.png</image></p>
</text></doc><docgroup homogen-name='Paned' homogen-type='inherit'><doc>
</doc>
<inherit name='Paned'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vpaned.pike' first-line='13'/><classname resolved='predef::GTK.Paned'>GTK.Paned</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vpaned.pike' first-line='15'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Vpaned'>GTK.Vpaned</object></returntype>
</method>
</docgroup>
</class>

<class name='RadioButton'><doc><text><p>Radio buttons are similar to check buttons except they are grouped
 so that only one may be selected/depressed at a time. This is good
 for places in your application where you need to select from a
 short list of options.
  To connect the buttons, use another button in the desired group
 as the second argument to GTK.RadioButton().</p>
<p><expr> GTK.Radio_button("Button");</expr>
<image file='predef.GTK.RadioButton.1.png' width='219' height='32'>../images/gtk_radiobutton.png</image></p>
</text></doc><docgroup homogen-name='CheckButton' homogen-type='inherit'><doc>
</doc>
<inherit name='CheckButton'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioButton.pike' first-line='14'/><classname resolved='predef::GTK.CheckButton'>GTK.CheckButton</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Normal creation:
 object GTK.RadioButton(string title) - First button (with label)
 object GTK.RadioButton()-&gt;add(widget) - First button (with widget)
 object GTK.RadioButton(title, another_radio_button) - Second to n:th button (with title)
 object GTK.RadioButton(0,another_radio_button)-&gt;add(widget) - Second to n:th button (with widget)</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioButton.pike' first-line='16'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><or><string/><void/></or></type></argument><argument name='groupmember'><type><object resolved='predef::GTK.RadioButton'>GTK.RadioButton</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.RadioButton'>GTK.RadioButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_group' homogen-type='method'><doc><text><p>the argument is another radio button to whose group this button
 should be added to. It is prefereable to use the second argument to
 the constructor instead, but if you for some reason want to move
 the button to another group, use this function.</p>
</text></doc>
<method name='set_group'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioButton.pike' first-line='26'/>
<arguments><argument name='groupmember'><type><object resolved='predef::GTK.RadioButton'>GTK.RadioButton</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.RadioButton'>GTK.RadioButton</object></returntype>
</method>
</docgroup>
</class>

<class name='FontSelection'><doc><text><p><expr> GTK.FontSelection()</expr>
<image file='predef.GTK.FontSelection.1.png' width='452' height='319'>../images/gtk_fontselection.png</image></p>
</text></doc><docgroup homogen-name='Notebook' homogen-type='inherit'><doc>
</doc>
<inherit name='Notebook'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='7'/><classname resolved='predef::GTK.Notebook'>GTK.Notebook</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='9'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.FontSelection'>GTK.FontSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_font' homogen-type='method'><doc/>
<method name='get_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='12'/>
<arguments/>
<returntype><object resolved='predef::GDK.Font'>GDK.Font</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_font_name' homogen-type='method'><doc/>
<method name='get_font_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='15'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_preview_text' homogen-type='method'><doc/>
<method name='get_preview_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='18'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_font_name' homogen-type='method'><doc><text><p>This sets the currently displayed font. It should be a valid X Logical
 Font Description font name (anything else will be ignored), e.g.
 "-adobe-courier-bold-o-normal--25-*-*-*-*-*-*-*"</p>
</text></doc>
<method name='set_font_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='21'/>
<arguments><argument name='xlfd'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FontSelection'>GTK.FontSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_preview_text' homogen-type='method'><doc/>
<method name='set_preview_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelection.pike' first-line='28'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FontSelection'>GTK.FontSelection</object></returntype>
</method>
</docgroup>
</class>

<class name='Hscrollbar'><doc><text><p>A horizontal scrollbar.
 General documentation: See W(Scrollbar)
<expr> GTK.Hscrollbar(GTK.Adjustment())-&gt;set_usize(300,15)</expr>
<image file='predef.GTK.Hscrollbar.1.png' width='300' height='15'>../images/gtk_hscrollbar.png</image></p>
</text></doc><docgroup homogen-name='Scrollbar' homogen-type='inherit'><doc>
</doc>
<inherit name='Scrollbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hscrollbar.pike' first-line='10'/><classname resolved='predef::GTK.Scrollbar'>GTK.Scrollbar</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new vscale widget.
 The adjustment argument can either be an existing W(Adjustment), or
 0, in which case one will be created for you. Specifying 0 might
 actually be useful in this case, if you wish to pass the newly
 automatically created adjustment to the constructor function of
 some other widget which will configure it for you, such as a text
 widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hscrollbar.pike' first-line='12'/><modifiers><static/></modifiers>
<arguments><argument name='adjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Hscrollbar'>GTK.Hscrollbar</object></returntype>
</method>
</docgroup>
</class>

<class name='RadioMenuItem'><doc><text><p>Exactly like W(RadioButton), but it is an menu item.
<expr> GTK.RadioMenuItem("Menu item")</expr>
<image file='predef.GTK.RadioMenuItem.1.png' width='62' height='17'>../images/gtk_radiomenuitem.png</image></p>
</text></doc><docgroup homogen-name='MenuItem' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuItem'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioMenuItem.pike' first-line='8'/><classname resolved='predef::GTK.MenuItem'>GTK.MenuItem</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>object GTK.RadioMenuItem(string title) - First button (with label)
 object GTK.RadioMenuItem()-&gt;add(widget) - First button (with widget)
 object GTK.RadioMenuItem(title, another_radio_button) - Second to n:th button (with title)
 object GTK.RadioMenuItem(0,another_radio_button)-&gt;add(widget) - Second to n:th button (with widget)</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioMenuItem.pike' first-line='10'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><or><string/><void/></or></type></argument><argument name='groupmember'><type><object resolved='predef::GTK.RadioMenuItem'>GTK.RadioMenuItem</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.RadioMenuItem'>GTK.RadioMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_group' homogen-type='method'><doc><text><p>the argument is another radio menu item to whose group this button
 should be added to. It is prefereable to use the second argument to
 the constructor instead, but if you for some reason want to move
 the button to another group, use this function.</p>
</text></doc>
<method name='set_group'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/RadioMenuItem.pike' first-line='18'/>
<arguments><argument name='groupmember'><type><object resolved='predef::GTK.RadioMenuItem'>GTK.RadioMenuItem</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.RadioMenuItem'>GTK.RadioMenuItem</object></returntype>
</method>
</docgroup>
</class>

<class name='Packer'><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='3'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>side is one of <ref resolved='predef::GTK.SIDE_BOTTOM'>SIDE_BOTTOM</ref>, <ref resolved='predef::GTK.SIDE_LEFT'>SIDE_LEFT</ref>, <ref resolved='predef::GTK.SIDE_RIGHT'>SIDE_RIGHT</ref> and <ref resolved='predef::GTK.SIDE_TOP'>SIDE_TOP</ref>, anchor is one of <ref resolved='predef::GTK.ANCHOR_CENTER'>ANCHOR_CENTER</ref>, <ref resolved='predef::GTK.ANCHOR_E'>ANCHOR_E</ref>, <ref resolved='predef::GTK.ANCHOR_EAST'>ANCHOR_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_N'>ANCHOR_N</ref>, <ref resolved='predef::GTK.ANCHOR_NE'>ANCHOR_NE</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH'>ANCHOR_NORTH</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_EAST'>ANCHOR_NORTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_WEST'>ANCHOR_NORTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_NW'>ANCHOR_NW</ref>, <ref resolved='predef::GTK.ANCHOR_S'>ANCHOR_S</ref>, <ref resolved='predef::GTK.ANCHOR_SE'>ANCHOR_SE</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH'>ANCHOR_SOUTH</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_EAST'>ANCHOR_SOUTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_WEST'>ANCHOR_SOUTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_SW'>ANCHOR_SW</ref>, <ref resolved='predef::GTK.ANCHOR_W'>ANCHOR_W</ref> and <ref resolved='predef::GTK.ANCHOR_WEST'>ANCHOR_WEST</ref>,
 options is a bitwise or of GTK.PackExpand, GTK.FillX and GTK.FillY</p>
</text></doc>
<method name='add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='5'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='side'><type><int/></type></argument><argument name='anchor'><type><int/></type></argument><argument name='options'><type><int/></type></argument><argument name='border_width'><type><int/></type></argument><argument name='pad_x'><type><int/></type></argument><argument name='pad_y'><type><int/></type></argument><argument name='i_pad_x'><type><int/></type></argument><argument name='i_pad_y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_defaults' homogen-type='method'><doc><text><p>side is one of <ref resolved='predef::GTK.SIDE_BOTTOM'>SIDE_BOTTOM</ref>, <ref resolved='predef::GTK.SIDE_LEFT'>SIDE_LEFT</ref>, <ref resolved='predef::GTK.SIDE_RIGHT'>SIDE_RIGHT</ref> and <ref resolved='predef::GTK.SIDE_TOP'>SIDE_TOP</ref>, anchor is one of <ref resolved='predef::GTK.ANCHOR_CENTER'>ANCHOR_CENTER</ref>, <ref resolved='predef::GTK.ANCHOR_E'>ANCHOR_E</ref>, <ref resolved='predef::GTK.ANCHOR_EAST'>ANCHOR_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_N'>ANCHOR_N</ref>, <ref resolved='predef::GTK.ANCHOR_NE'>ANCHOR_NE</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH'>ANCHOR_NORTH</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_EAST'>ANCHOR_NORTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_WEST'>ANCHOR_NORTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_NW'>ANCHOR_NW</ref>, <ref resolved='predef::GTK.ANCHOR_S'>ANCHOR_S</ref>, <ref resolved='predef::GTK.ANCHOR_SE'>ANCHOR_SE</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH'>ANCHOR_SOUTH</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_EAST'>ANCHOR_SOUTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_WEST'>ANCHOR_SOUTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_SW'>ANCHOR_SW</ref>, <ref resolved='predef::GTK.ANCHOR_W'>ANCHOR_W</ref> and <ref resolved='predef::GTK.ANCHOR_WEST'>ANCHOR_WEST</ref>,
 options is a bitwise or of GTK.PackExpand, GTK.FillX and GTK.FillY</p>
</text></doc>
<method name='add_defaults'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='11'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='side'><type><int/></type></argument><argument name='anchor'><type><int/></type></argument><argument name='options'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='17'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_border_width' homogen-type='method'><doc/>
<method name='get_default_border_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='20'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_i_pad_x' homogen-type='method'><doc/>
<method name='get_default_i_pad_x'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='23'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_i_pad_y' homogen-type='method'><doc/>
<method name='get_default_i_pad_y'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='26'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_pad_x' homogen-type='method'><doc/>
<method name='get_default_pad_x'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='29'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_default_pad_y' homogen-type='method'><doc/>
<method name='get_default_pad_y'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='32'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_spacing' homogen-type='method'><doc/>
<method name='get_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='35'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reorder_child' homogen-type='method'><doc/>
<method name='reorder_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='38'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_child_packing' homogen-type='method'><doc><text><p>side is one of <ref resolved='predef::GTK.SIDE_BOTTOM'>SIDE_BOTTOM</ref>, <ref resolved='predef::GTK.SIDE_LEFT'>SIDE_LEFT</ref>, <ref resolved='predef::GTK.SIDE_RIGHT'>SIDE_RIGHT</ref> and <ref resolved='predef::GTK.SIDE_TOP'>SIDE_TOP</ref>, anchor is one of <ref resolved='predef::GTK.ANCHOR_CENTER'>ANCHOR_CENTER</ref>, <ref resolved='predef::GTK.ANCHOR_E'>ANCHOR_E</ref>, <ref resolved='predef::GTK.ANCHOR_EAST'>ANCHOR_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_N'>ANCHOR_N</ref>, <ref resolved='predef::GTK.ANCHOR_NE'>ANCHOR_NE</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH'>ANCHOR_NORTH</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_EAST'>ANCHOR_NORTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_NORTH_WEST'>ANCHOR_NORTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_NW'>ANCHOR_NW</ref>, <ref resolved='predef::GTK.ANCHOR_S'>ANCHOR_S</ref>, <ref resolved='predef::GTK.ANCHOR_SE'>ANCHOR_SE</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH'>ANCHOR_SOUTH</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_EAST'>ANCHOR_SOUTH_EAST</ref>, <ref resolved='predef::GTK.ANCHOR_SOUTH_WEST'>ANCHOR_SOUTH_WEST</ref>, <ref resolved='predef::GTK.ANCHOR_SW'>ANCHOR_SW</ref>, <ref resolved='predef::GTK.ANCHOR_W'>ANCHOR_W</ref> and <ref resolved='predef::GTK.ANCHOR_WEST'>ANCHOR_WEST</ref>,
 options is a bitwise or of GTK.PackExpand, GTK.FillX and GTK.FillY</p>
</text></doc>
<method name='set_child_packing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='41'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='side'><type><int/></type></argument><argument name='anchor'><type><int/></type></argument><argument name='options'><type><int/></type></argument><argument name='border_width'><type><int/></type></argument><argument name='pad_x'><type><int/></type></argument><argument name='pad_y'><type><int/></type></argument><argument name='i_pad_x'><type><int/></type></argument><argument name='i_pad_y'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_border_width' homogen-type='method'><doc/>
<method name='set_default_border_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='47'/>
<arguments><argument name='border'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_ipad' homogen-type='method'><doc/>
<method name='set_default_ipad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='50'/>
<arguments><argument name='xpad'><type><int/></type></argument><argument name='ypad'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_default_pad' homogen-type='method'><doc/>
<method name='set_default_pad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='53'/>
<arguments><argument name='xpad'><type><int/></type></argument><argument name='ypad'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_spacing' homogen-type='method'><doc/>
<method name='set_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Packer.pike' first-line='56'/>
<arguments><argument name='new_spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Packer'>GTK.Packer</object></returntype>
</method>
</docgroup>
</class>

<class name='AspectFrame'><doc><text><p>A W(Frame) widget  that always maintain a specified ratio
 between width and height. width/height == ratio</p>
<p><expr> GTK.Aspect_frame("Title",0.5,0.5,0.4,0)-&gt;add( GTK.Label("Wrong aspect"))-&gt;set_usize(200,200)</expr>
<image file='predef.GTK.AspectFrame.1.png' width='219' height='32'>../images/gtk_aspectframe.png</image></p>
</text></doc><docgroup homogen-name='Frame' homogen-type='inherit'><doc>
</doc>
<inherit name='Frame'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AspectFrame.pike' first-line='10'/><classname resolved='predef::GTK.Frame'>GTK.Frame</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new frame. Arguments are label, xalign, yalign, ratio, obey_child
 xalign is floats between 0 and 1, 0.0 is upper (or leftmost), 1.0 is
 lower (or rightmost). If 'obey_child' is true, the frame will use the
 aspect ratio of it's (one and only) child widget instead of 'ratio'.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AspectFrame.pike' first-line='12'/><modifiers><static/></modifiers>
<arguments><argument name='label'><type><string/></type></argument><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument><argument name='ratio'><type><float/></type></argument><argument name='obey_child'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.AspectFrame'>GTK.AspectFrame</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Set the aspec values. Arguments are xalign, yalign, ratio, obey_child
 xalign is floats between 0 and 1, 0.0 is upper (or leftmost), 1.0 is
 lower (or rightmost). If 'obey_child' is true, the frame will use the
 aspect ratio of it's (one and only) child widget instead of 'ratio'.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AspectFrame.pike' first-line='20'/>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument><argument name='ratio'><type><float/></type></argument><argument name='obey_child'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.AspectFrame'>GTK.AspectFrame</object></returntype>
</method>
</docgroup>
</class>

<class name='GladeXML'><doc><text><p><url href='http://glade.pn.org/'>Glade</url> is a free GUI builder for
 GTK+ and Gnome. It's normally used to create C-code, but can also
 produce code for other languages. <url href='http://www.daa.com.au/~james/gnome/'>Libglade</url> is a utility
 library that builds the GUI from the Glade XML save files. This
 module uses libglade and allows you to easily make GUI designs to
 be used with your Pike applications. Since PiGTK doesn't
 support Gnome yet, you can only use the normal GTK widgets.</p>
</text></doc><docgroup homogen-name='get_widget' homogen-type='method'><doc><text><p>This function is used to get get the widget
 corresponding to name in the interface description. You would use
 this if you have to do anything to the widget after loading.</p>
</text></doc>
<method name='get_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='12'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_widget_by_long_name' homogen-type='method'><doc><text><p>This function is used to get the widget
 corresponding to long_name in the interface description. You would
 use this if you have to do anything to the widget after
 loading. This function differs from GladeXML-&gt;get_widget, in that
 you have to give the long form of the widget name, with all its
 parent widget names, separated by periods.</p>
</text></doc>
<method name='get_widget_by_long_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='19'/>
<arguments><argument name='long_name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_widget_long_name' homogen-type='method'><doc><text><p>Used to get the long name of a widget that was generated by a
 GladeXML object.</p>
</text></doc>
<method name='get_widget_long_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='29'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_widget_name' homogen-type='method'><doc><text><p>Used to get the name of a widget that was generated by a
 GladeXML object.</p>
</text></doc>
<method name='get_widget_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='35'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='new' homogen-type='method'><doc><text><p>Creates a new GladeXML object (and the corresponding widgets) from
 the XML file filename. Optionally it will only build the interface
 from the widget node root. This feature is useful if you only want
 to build say a toolbar or menu from the XML file, but not the
 window it is embedded in. Note also that the XML parse tree is
 cached to speed up creating another GladeXML object for the same
 file. The third optional argument is used to specify a different
 translation domain from the default to be used.</p>
</text></doc>
<method name='new'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='41'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='root'><type><or><string/><void/></or></type></argument><argument name='domain'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.GladeXML'>GTK.GladeXML</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='new_from_memory' homogen-type='method'><doc><text><p>Creates a new GladeXML object (and the corresponding widgets) from
 the string data. Optionally it will only build the interface from
 the widget node root. This feature is useful if you only want to
 build say a toolbar or menu from the XML document, but not the
 window it is embedded in. The third optional argument is used to
 specify a different translation domain from the default to be used.</p>
</text></doc>
<method name='new_from_memory'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='53'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='root'><type><or><string/><void/></or></type></argument><argument name='domain'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.GladeXML'>GTK.GladeXML</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_autoconnect' homogen-type='method'><doc><text><p>Try to connect functions to all signals in the interface. The
 mapping should consist of handler name : function pairs. The
 data argument will be saved and sent as the first argument to all
 callback functions.</p>
</text></doc>
<method name='signal_autoconnect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='63'/>
<arguments><argument name='callbacks'><type><mapping/></type></argument><argument name='data'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.GladeXML'>GTK.GladeXML</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_autoconnect_new' homogen-type='method'><doc><text><p>Try to connect functions to all signals in the interface. The
 mapping should consist of handler name : function pairs. 
 This function differs from the signal_connect function in how it
 calls the callback function.</p>
<p> The old interface:
 <pre>
   void signal_handler( mixed data, GTK.Object object,
                        mixed ... signal_arguments )
 </pre>
 The new interface:
 <pre>
   void signal_handler( mixed ... signal_arguments,
                        mixed data, GTK.Object object )
 </pre></p>
</text></doc>
<method name='signal_autoconnect_new'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GladeXML.pike' first-line='71'/>
<arguments><argument name='callbacks'><type><mapping/></type></argument><argument name='data'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.GladeXML'>GTK.GladeXML</object></returntype>
</method>
</docgroup>
</class>

<class name='Table'><doc><text><p>The Gtk.Table allow the programmer to arrange widgets in rows and
 columns, making it easy to align many widgets next to each other,
 horizontally and vertically.</p>
<p><expr> GTK.Table(2,2,0)-&gt;attach_defaults( GTK.Label("0,0"), 0, 1, 0, 1)-&gt;attach_defaults( GTK.Label("0,1"), 0, 1, 1, 2)-&gt;attach_defaults( GTK.Label("1,0"), 1, 2, 0, 1)-&gt;attach_defaults( GTK.Label("1,1"), 1, 2, 1, 2)-&gt;set_col_spacings(10)-&gt;set_row_spacings(10)</expr>
<image file='predef.GTK.Table.1.png' width='38' height='36'>../images/gtk_table.png</image></p>
<p><expr> GTK.Table(2,2,0)-&gt;attach_defaults( GTK.Label("0,0-1,0"), 0, 2, 0, 1)-&gt;attach_defaults( GTK.Label("0,1"), 0, 1, 1, 2)-&gt;attach_defaults( GTK.Label("1,1"), 1, 2, 1, 2)-&gt;set_col_spacings(10)-&gt;set_row_spacings(10)</expr>
<image file='predef.GTK.Table.2.png' width='38' height='36'>../images/gtk_table_2.png</image></p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='15'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='attach' homogen-type='method'><doc><text><p>The left and right attach arguments specify where to place the
 widget, and how many boxes to use. If you want a button in the
 lower right table entry of our 2x2 table, and want it to fill that
 entry ONLY. left_attach would be = 1, right_attach = 2, top_attach
 = 1, bottom_attach = 2.</p>
<p> Now, if you wanted a widget to take up the whole top row of our 2x2
 table, you'd use left_attach = 0, right_attach = 2, top_attach = 0,
 bottom_attach = 1.</p>
<p> The xoptions and yoptions are used to specify packing options and
 may be OR'ed together to allow multiple options.</p>
<p> These options are:
 &lt;ul&gt;
 &lt;li&gt; GTK.Fill - If the table box is larger than the widget, and
 GTK_FILL is specified, the widget will expand to use all the room
 available.&lt;/li&gt;
 &lt;li&gt; GTK.Shrink - If the table widget was allocated less space then
 was requested (usually by the user resizing the window), then the
 widgets would normally just be pushed off the bottom of the window
 and disappear. If GTK_SHRINK is specified, the widgets will shrink
 with the table.&lt;/li&gt;
 &lt;li&gt; GTK.Expand - This will cause the table cell to expand to use
 up any remaining space in the window.&lt;/li&gt;
  &lt;/ul&gt;</p>
<p> Padding is just like in boxes, creating a clear area around the
 widget specified in pixels</p>
</text></doc>
<method name='attach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='17'/>
<arguments><argument name='subwidget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='left'><type><int/></type></argument><argument name='right'><type><int/></type></argument><argument name='top'><type><int/></type></argument><argument name='bottom'><type><int/></type></argument><argument name='xoptions'><type><int/></type></argument><argument name='yoptions'><type><int/></type></argument><argument name='xpad'><type><int/></type></argument><argument name='ypad'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='attach_defaults' homogen-type='method'><doc><text><p>As there are many options associated with attach(), this
 convenience function provides the programmer with a means to add
 children to a table with identical padding and expansion options.</p>
<p> xoptions, yoptions, xpadding and ypadding are all set the their
 default values. For the options that is GTK.Fill|GTK.Expand. For
 the padding it is 0.</p>
</text></doc>
<method name='attach_defaults'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='50'/>
<arguments><argument name='subwidget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='left'><type><int/></type></argument><argument name='right'><type><int/></type></argument><argument name='top'><type><int/></type></argument><argument name='bottom'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new table widget. An initial size must be given by
 specifying how many rows and columns the table should have,
 although this can be changed later with resize().</p>
<p> There can never be more than 65535 colums nor more than 65535 rows.</p>
<p> setting homogeneousp to 1 forces the all tablecells to be exactly
 the same size.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='61'/><modifiers><static/></modifiers>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='homogeneousp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_column_spacing' homogen-type='method'><doc><text><p>The spacing between all columns, in pixels.</p>
</text></doc>
<method name='get_column_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='73'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_homogeneous' homogen-type='method'><doc><text><p>If 1, all cells have exactly the same size</p>
</text></doc>
<method name='get_homogeneous'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='78'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ncols' homogen-type='method'><doc><text><p>The number of columns. Between 1 and 65535.</p>
</text></doc>
<method name='get_ncols'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='83'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_nrows' homogen-type='method'><doc><text><p>The number of rows. Between 1 and 65535.</p>
</text></doc>
<method name='get_nrows'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='88'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_row_spacing' homogen-type='method'><doc><text><p>The spacing between all rows, in pixels.</p>
</text></doc>
<method name='get_row_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='93'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resize' homogen-type='method'><doc><text><p>If you need to change a table's size after it has been created,
 this function allows you to do so.</p>
</text></doc>
<method name='resize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='98'/>
<arguments><argument name='rows'><type><int/></type></argument><argument name='columns'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_col_spacing' homogen-type='method'><doc><text><p>alters the amount of space between a given table column and the
 adjacent columns.</p>
</text></doc>
<method name='set_col_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='104'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_col_spacings' homogen-type='method'><doc><text><p>Sets the space between every column in the table equal to spacing.</p>
</text></doc>
<method name='set_col_spacings'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='110'/>
<arguments><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_homogeneous' homogen-type='method'><doc><text><p>Set the homogeneous flag.</p>
</text></doc>
<method name='set_homogeneous'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='115'/>
<arguments><argument name='homogeneousp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_spacing' homogen-type='method'><doc><text><p>alters the amount of space between a given table row and the
 adjacent rows.</p>
</text></doc>
<method name='set_row_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='120'/>
<arguments><argument name='y'><type><int/></type></argument><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_row_spacings' homogen-type='method'><doc><text><p>Sets the space between every row in the table equal to spacing.</p>
</text></doc>
<method name='set_row_spacings'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Table.pike' first-line='126'/>
<arguments><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Table'>GTK.Table</object></returntype>
</method>
</docgroup>
</class>

<class name='Separator'><doc><text><p>A generic separator. Basicaly a line, like &amp;lt;hr&amp;gt; in HTML.</p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Separator.pike' first-line='5'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
</class>

<class name='ScrolledWindow'><doc><text><p>Scrolled windows are used to create a scrollable area with another
 widget inside it. You may insert any type of widget into a scrolled
 window, and it will be accessible regardless of the size by using
 the scrollbars.</p>
<p><expr> GTK.ScrolledWindow(GTK.Adjustment(),GTK.Adjustment())-&gt;add(GTK.Label("A small label"))-&gt;set_usize(100,80)-&gt;set_policy(GTK.POLICY_AUTOMATIC,GTK.POLICY_AUTOMATIC)</expr>
<image file='predef.GTK.ScrolledWindow.1.png' width='100' height='80'>../images/gtk_scrolledwindow.png</image></p>
<p><expr> GTK.ScrolledWindow(GTK.Adjustment(),GTK.Adjustment())-&gt;add(GTK.Label("A small label"))-&gt;set_usize(70,80)-&gt;set_policy(GTK.POLICY_AUTOMATIC,GTK.POLICY_AUTOMATIC)</expr>
<image file='predef.GTK.ScrolledWindow.2.png' width='70' height='80'>../images/gtk_scrolledwindow_2.png</image></p>
<p><expr> GTK.ScrolledWindow(GTK.Adjustment(),GTK.Adjustment())-&gt;add(GTK.Label("A small label"))-&gt;set_usize(80,80)</expr>
<image file='predef.GTK.ScrolledWindow.3.png' width='80' height='80'>../images/gtk_scrolledwindow_3.png</image></p>
<p><expr> GTK.ScrolledWindow(GTK.Adjustment(),GTK.Adjustment())-&gt;add(GTK.Label("A very huge label")-&gt;set_usize(700,700))-&gt;set_usize(80,80)</expr>
<image file='predef.GTK.ScrolledWindow.4.png' width='80' height='80'>../images/gtk_scrolledwindow_4.png</image></p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='22'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a widget to this container.
 This is equivalent to the
 C-GTK function gtk_scrolled_window_add_with_viewport or
 gtk_container_add, depeneding on whether or not the child supports
 the set_scroll_adjustments signal.</p>
<p> What this means in practice is that you do not have to care about
 this at all, it's all handled automatically.</p>
</text></doc>
<method name='add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='24'/>
<arguments><argument name='victim'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The two adjustments are most commonly set to 0.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='37'/><modifiers><static/></modifiers>
<arguments><argument name='hadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='vadjustments'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hadjustment' homogen-type='method'><doc><text><p>Return the horizontal adjustment used to scroll the window</p>
</text></doc>
<method name='get_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='42'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hscrollbar' homogen-type='method'><doc><text><p>The horizontal scrollbar</p>
</text></doc>
<method name='get_hscrollbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='47'/>
<arguments/>
<returntype><object resolved='predef::GTK.Hscrollbar'>GTK.Hscrollbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hscrollbar_policy' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.POLICY_ALWAYS'>POLICY_ALWAYS</ref>, <ref resolved='predef::GTK.POLICY_AUTOMATIC'>POLICY_AUTOMATIC</ref> and <ref resolved='predef::GTK.POLICY_NEVER'>POLICY_NEVER</ref></p>
</text></doc>
<method name='get_hscrollbar_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='52'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_hscrollbar_visible' homogen-type='method'><doc><text><p>1 if the horizontal scrollbar is currently visible</p>
</text></doc>
<method name='get_hscrollbar_visible'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='57'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vadjustment' homogen-type='method'><doc><text><p>Return the vertical adjustment used to scroll the window</p>
</text></doc>
<method name='get_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='62'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vscrollbar' homogen-type='method'><doc><text><p>The vertical scrollbar</p>
</text></doc>
<method name='get_vscrollbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='67'/>
<arguments/>
<returntype><object resolved='predef::GTK.Vscrollbar'>GTK.Vscrollbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vscrollbar_policy' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.POLICY_ALWAYS'>POLICY_ALWAYS</ref>, <ref resolved='predef::GTK.POLICY_AUTOMATIC'>POLICY_AUTOMATIC</ref> and <ref resolved='predef::GTK.POLICY_NEVER'>POLICY_NEVER</ref></p>
</text></doc>
<method name='get_vscrollbar_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='72'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vscrollbar_visible' homogen-type='method'><doc><text><p>1 if the vertical scrollbar is currently visible</p>
</text></doc>
<method name='get_vscrollbar_visible'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='77'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_window_placement' homogen-type='method'><doc><text><p>The location of the window relative to the scrollbars.
 One of <ref resolved='predef::GTK.CORNER_BOTTOM_LEFT'>CORNER_BOTTOM_LEFT</ref>, <ref resolved='predef::GTK.CORNER_BOTTOM_RIGHT'>CORNER_BOTTOM_RIGHT</ref>, <ref resolved='predef::GTK.CORNER_TOP_LEFT'>CORNER_TOP_LEFT</ref> and <ref resolved='predef::GTK.CORNER_TOP_RIGHT'>CORNER_TOP_RIGHT</ref></p>
</text></doc>
<method name='get_window_placement'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='82'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_hadjustment' homogen-type='method'><doc><text><p>Set the horizontal adjustment object</p>
</text></doc>
<method name='set_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='88'/>
<arguments><argument name='hadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_placement' homogen-type='method'><doc><text><p>The location of the window relative to the scrollbars.
 One of <ref resolved='predef::GTK.CORNER_BOTTOM_LEFT'>CORNER_BOTTOM_LEFT</ref>, <ref resolved='predef::GTK.CORNER_BOTTOM_RIGHT'>CORNER_BOTTOM_RIGHT</ref>, <ref resolved='predef::GTK.CORNER_TOP_LEFT'>CORNER_TOP_LEFT</ref> and <ref resolved='predef::GTK.CORNER_TOP_RIGHT'>CORNER_TOP_RIGHT</ref></p>
</text></doc>
<method name='set_placement'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='93'/>
<arguments><argument name='window_corner_placement'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_policy' homogen-type='method'><doc><text><p>vertical and horiz policy. Both are one of <ref resolved='predef::GTK.POLICY_ALWAYS'>POLICY_ALWAYS</ref>, <ref resolved='predef::GTK.POLICY_AUTOMATIC'>POLICY_AUTOMATIC</ref> and <ref resolved='predef::GTK.POLICY_NEVER'>POLICY_NEVER</ref></p>
</text></doc>
<method name='set_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='99'/>
<arguments><argument name='xpolicy'><type><int/></type></argument><argument name='ypolicy'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_vadjustment' homogen-type='method'><doc><text><p>Set the vertical adjustment object</p>
</text></doc>
<method name='set_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ScrolledWindow.pike' first-line='104'/>
<arguments><argument name='vadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.ScrolledWindow'>GTK.ScrolledWindow</object></returntype>
</method>
</docgroup>
</class>

<class name='TearoffMenuItem'><doc><text><p>a GTK.TearoffMenuItem is a special W(MenuItem) which is used to
 tear off and reattach its menu.</p>
<p> When its menu is shown normally, the GTK.TearoffMenuItem is drawn
 as a dotted line indicating that the menu can be torn
 off. Activating it causes its menu to be torn off and displayed in
 its own window as a tearoff menu.</p>
<p> When its menu is shown as a tearoff menu, the GTK.TearoffMenuItem
 is drawn as a dotted line which has a left pointing arrow graphic
 indicating that the tearoff menu can be reattached. Activating it
 will erase the tearoff menu window.
<expr> GTK.TearoffMenuItem()-&gt;set_usize( 100,0 )</expr>
<image file='predef.GTK.TearoffMenuItem.1.png' width='100' height='6'>../images/gtk_tearoffmenuitem.png</image></p>
</text></doc><docgroup homogen-name='MenuItem' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuItem'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TearoffMenuItem.pike' first-line='20'/><classname resolved='predef::GTK.MenuItem'>GTK.MenuItem</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new tear of menu item</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TearoffMenuItem.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.TearoffMenuItem'>GTK.TearoffMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_torn_off' homogen-type='method'><doc><text><p>Return 1 if the menu the menu item is connected to is currently
 torn off.</p>
</text></doc>
<method name='get_torn_off'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/TearoffMenuItem.pike' first-line='27'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Ctree'><doc><text><p>The GtkCTree widget is used for showing a hierarchical tree to the
 user, for example a directory tree.</p>
<p> The tree is internally represented as a set of GtkCTreeNode
 structures.</p>
<p> The interface has much in common with the GtkCList widget: rows
 (nodes) can be selected by the user etc.</p>
<p> Positions in the tree are often indicated by two arguments, a
 parent and a sibling, both GtkCTreeNode pointers. If the parent is
 NULL, the position is at the root of the tree and if the sibling is
 NULL, it will be the last child of parent, otherwise it will be
 inserted just before the sibling.</p>
<p>  Signals:
 <b>change_focus_row_expansion</b>
 Changed when the focused row is either expanded or collapsed</p>
<p> <b>tree_collapse</b>
 Called when a node is collapsed</p>
<p> <b>tree_expand</b>
 Called when a node is expanded</p>
<p> <b>tree_move</b>
 Called when a node is moved (using DND, as an example)</p>
<p> <b>tree_select_row</b>
 Called when a node is selected.</p>
<p> <b>tree_unselect_row</b>
 Called when a node is unselected.</p>
</text></doc><docgroup homogen-name='Clist' homogen-type='inherit'><doc>
</doc>
<inherit name='Clist'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='44'/><classname resolved='predef::GTK.Clist'>GTK.Clist</classname></inherit>
</docgroup>
<docgroup homogen-name='collapse' homogen-type='method'><doc><text><p>Collapse the node, hiding it's children.
 If no node is given, expand the toplevel of the tree</p>
</text></doc>
<method name='collapse'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='46'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='collapse_recursive' homogen-type='method'><doc><text><p>Collapse the node, showing it's children, it's childrens children, etc.
 If no node is given, collapse the whole tree</p>
</text></doc>
<method name='collapse_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='52'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='collapse_to_depth' homogen-type='method'><doc><text><p>Collapse depth levels of the tree, starting with the specified node.
 If no node is given, start with the toplevel node.</p>
</text></doc>
<method name='collapse_to_depth'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='58'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='depth'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>tree_column is the column that has the tree graphics (lines and
 expander buttons).</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='64'/><modifiers><static/></modifiers>
<arguments><argument name='columns'><type><int/></type></argument><argument name='tree_column'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='expand' homogen-type='method'><doc><text><p>Expand the node, showing it's children.
 If no node is given, expand the toplevel of the tree</p>
</text></doc>
<method name='expand'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='70'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='expand_recursive' homogen-type='method'><doc><text><p>Expand the node, showing it's children, it's childrens children, etc.
 If no node is given, expand the whole tree</p>
</text></doc>
<method name='expand_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='76'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='expand_to_depth' homogen-type='method'><doc><text><p>Expand depth levels of the tree, starting with the specified node.
 If no node is given, start with the toplevel node.</p>
</text></doc>
<method name='expand_to_depth'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='82'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='depth'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find' homogen-type='method'><doc><text><p>Returns true if the node is a child of the start node.</p>
<p> If you omit the starting node, the tree will be searched from
 the root.</p>
</text></doc>
<method name='find'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='88'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='start'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_by_row_data' homogen-type='method'><doc><text><p>Find a node in the tree starting with root, that has the given user data.
 If no node is found, 0 is returned.</p>
</text></doc>
<method name='find_by_row_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='96'/>
<arguments><argument name='data'><type><object resolved='predef::GTK.Ctree.find_by_row_data'/></type></argument><argument name='root'><type><or><object resolved='predef::GTK.CTreeNode'>CTreeNode</object><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='find_node_ptr' homogen-type='method'><doc><text><p>Given a W(CTreeRow) (deprectated structure in PiGTK), return the
 W(CTreeNode) associated with the row.</p>
</text></doc>
<method name='find_node_ptr'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='102'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeRow'>GTK.CTreeRow</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_expander_style' homogen-type='method'><doc><text><p>The style of the expander buttons, one of <ref resolved='predef::GTK.CTREE_EXPANDER_CIRCULAR'>CTREE_EXPANDER_CIRCULAR</ref>, <ref resolved='predef::GTK.CTREE_EXPANDER_NONE'>CTREE_EXPANDER_NONE</ref>, <ref resolved='predef::GTK.CTREE_EXPANDER_SQUARE'>CTREE_EXPANDER_SQUARE</ref> and <ref resolved='predef::GTK.CTREE_EXPANDER_TRIANGLE'>CTREE_EXPANDER_TRIANGLE</ref></p>
</text></doc>
<method name='get_expander_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='108'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_line_style' homogen-type='method'><doc><text><p>The style of the lines, one of <ref resolved='predef::GTK.CTREE_LINES_DOTTED'>CTREE_LINES_DOTTED</ref>, <ref resolved='predef::GTK.CTREE_LINES_NONE'>CTREE_LINES_NONE</ref>, <ref resolved='predef::GTK.CTREE_LINES_SOLID'>CTREE_LINES_SOLID</ref> and <ref resolved='predef::GTK.CTREE_LINES_TABBED'>CTREE_LINES_TABBED</ref></p>
</text></doc>
<method name='get_line_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='113'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_show_stub' homogen-type='method'><doc><text><p>Will stubs be shows?</p>
</text></doc>
<method name='get_show_stub'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='118'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tree_column' homogen-type='method'><doc><text><p>The column that is the tree column (the one with the expand/collapse icons)</p>
</text></doc>
<method name='get_tree_column'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='123'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tree_indent' homogen-type='method'><doc><text><p>The number of pixels to indent the tree levels.</p>
</text></doc>
<method name='get_tree_indent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='128'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tree_spacing' homogen-type='method'><doc><text><p>The number of pixels between the tree and the columns</p>
</text></doc>
<method name='get_tree_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='133'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_node' homogen-type='method'><doc><text><p>At least one of parent or sibling must be specified.
 If both are specified, sibling-&gt;parent() must be equal to parent.</p>
<p> If the parent and sibling is 0, the position is at the root of the
 tree, if the sibling is NULL, it will be the last child of parent,
 otherwise it will be inserted just before the sibling.</p>
</text></doc>
<method name='insert_node'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='138'/>
<arguments><argument name='parent'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='sibling'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='text'><type><array/></type></argument><argument name='is_leaf'><type><int/></type></argument><argument name='expanded'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_ancestor' homogen-type='method'><doc><text><p>Returns true if <b>node</b> is an ancestor of <b>child</b></p>
</text></doc>
<method name='is_ancestor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='149'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='child'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_hot_spot' homogen-type='method'><doc><text><p>Returns true if the given coordinates lie on an expander button</p>
</text></doc>
<method name='is_hot_spot'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='154'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_viewable' homogen-type='method'><doc><text><p>Returns 1 if a certain node can be viewed (with or without
 scrolling of the tree).
 Returns 0 if the node is in a folded part of the tree.</p>
</text></doc>
<method name='is_viewable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='159'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='last' homogen-type='method'><doc><text><p>Returns the last child of the last child of the last child... of
 the given node.</p>
</text></doc>
<method name='last'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='166'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='move' homogen-type='method'><doc><text><p>Move a node. Coordinates work as for insert.</p>
</text></doc>
<method name='move'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='172'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='new_parent'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='new_sibling'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_cell_style' homogen-type='method'><doc><text><p>Return the style of a cell</p>
</text></doc>
<method name='node_get_cell_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='177'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='col'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_cell_type' homogen-type='method'><doc><text><p>Return the celltype of this node.</p>
</text></doc>
<method name='node_get_cell_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='182'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_pixmap' homogen-type='method'><doc><text><p>Returns the pixmap and mask of this node in a mapping:
 ([ "pixmap":the_pixmap, "mask":the_bitmap ])</p>
</text></doc>
<method name='node_get_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='187'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_pixtext' homogen-type='method'><doc><text><p>Returns the pixmap, mask and text of this node in a mapping:
 ([ "pixmap":the_pixmap, "mask":the_bitmap, "text":the_text ])</p>
</text></doc>
<method name='node_get_pixtext'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='193'/>
<arguments><argument name='n'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='columne'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_row_data' homogen-type='method'><doc><text><p>Return the data associated with a node, or 0.</p>
</text></doc>
<method name='node_get_row_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='199'/>
<arguments><argument name='n'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree.node_get_row_data'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_row_style' homogen-type='method'><doc><text><p>Return the style of a row</p>
</text></doc>
<method name='node_get_row_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='204'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_selectable' homogen-type='method'><doc><text><p>Return whether or not this node can be selcted by the user</p>
</text></doc>
<method name='node_get_selectable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='209'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_get_text' homogen-type='method'><doc><text><p>Returns the text of the specified node</p>
</text></doc>
<method name='node_get_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='214'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_is_visible' homogen-type='method'><doc><text><p>Return 1 if the node is currently visible</p>
</text></doc>
<method name='node_is_visible'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='219'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_moveto' homogen-type='method'><doc><text><p>Scroll the tree so a specified node (and column) is visible.
 If the node is folded, it's first visible parent will be shown.</p>
</text></doc>
<method name='node_moveto'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='224'/>
<arguments><argument name='row'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument><argument name='row_align'><type><float/></type></argument><argument name='col_align'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_nth' homogen-type='method'><doc><text><p>Return the node that is currently visible on the specified row.</p>
</text></doc>
<method name='node_nth'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='230'/>
<arguments><argument name='row'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_background' homogen-type='method'><doc><text><p>Set the background of a row</p>
</text></doc>
<method name='node_set_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='235'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_cell_style' homogen-type='method'><doc><text><p>Set the style of a cell</p>
</text></doc>
<method name='node_set_cell_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='240'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='col'><type><int/></type></argument><argument name='style'><type><object resolved='predef::GTK.Style'>GTK.Style</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_foreground' homogen-type='method'><doc><text><p>Set the foreground of a row</p>
</text></doc>
<method name='node_set_foreground'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='245'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='col'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_pixmap' homogen-type='method'><doc><text><p>Set the pixmap in a cell</p>
</text></doc>
<method name='node_set_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='250'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_pixtext' homogen-type='method'><doc><text><p>Set the pixmap and text in a cell</p>
</text></doc>
<method name='node_set_pixtext'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='255'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument><argument name='text'><type><string/></type></argument><argument name='spacing'><type><int/></type></argument><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_row_data' homogen-type='method'><doc><text><p>Set the user data associated with the specified node.
 This data can be used to find nodes, and when a node is selected it
 can be easily retrieved using node_get_row_data.</p>
<p> <b>You can only use objects as row data right now</b></p>
</text></doc>
<method name='node_set_row_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='260'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='data'><type><object resolved='predef::GTK.Ctree.node_set_row_data'/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_row_style' homogen-type='method'><doc><text><p>Set the style of a row</p>
</text></doc>
<method name='node_set_row_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='269'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='style'><type><object resolved='predef::GTK.Style'>GTK.Style</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_selectable' homogen-type='method'><doc><text><p>Whether this node can be selected by the user.</p>
</text></doc>
<method name='node_set_selectable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='274'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='selectablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_shift' homogen-type='method'><doc><text><p>Shift the given cell the given amounts in pixels.</p>
</text></doc>
<method name='node_set_shift'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='279'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument><argument name='vertical'><type><int/></type></argument><argument name='horizontal'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='node_set_text' homogen-type='method'><doc><text><p>Set the text in a cell</p>
</text></doc>
<method name='node_set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='284'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='column'><type><int/></type></argument><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_node' homogen-type='method'><doc><text><p>Remove a node and it's subnodes from the tree.
 The nodes will be destroyed, so you cannot add them again.</p>
</text></doc>
<method name='remove_node'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='289'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select' homogen-type='method'><doc><text><p>Select a node.</p>
</text></doc>
<method name='select'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='295'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_recursive' homogen-type='method'><doc><text><p>Select a node and it's children.</p>
</text></doc>
<method name='select_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='300'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_expander_style' homogen-type='method'><doc><text><p>Set the expander style, one of <ref resolved='predef::GTK.CTREE_EXPANDER_CIRCULAR'>CTREE_EXPANDER_CIRCULAR</ref>, <ref resolved='predef::GTK.CTREE_EXPANDER_NONE'>CTREE_EXPANDER_NONE</ref>, <ref resolved='predef::GTK.CTREE_EXPANDER_SQUARE'>CTREE_EXPANDER_SQUARE</ref> and <ref resolved='predef::GTK.CTREE_EXPANDER_TRIANGLE'>CTREE_EXPANDER_TRIANGLE</ref></p>
</text></doc>
<method name='set_expander_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='305'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_indent' homogen-type='method'><doc><text><p>Set the indentation level</p>
</text></doc>
<method name='set_indent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='310'/>
<arguments><argument name='npixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_line_style' homogen-type='method'><doc><text><p>Set the line style, one of <ref resolved='predef::GTK.CTREE_LINES_DOTTED'>CTREE_LINES_DOTTED</ref>, <ref resolved='predef::GTK.CTREE_LINES_NONE'>CTREE_LINES_NONE</ref>, <ref resolved='predef::GTK.CTREE_LINES_SOLID'>CTREE_LINES_SOLID</ref> and <ref resolved='predef::GTK.CTREE_LINES_TABBED'>CTREE_LINES_TABBED</ref></p>
</text></doc>
<method name='set_line_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='315'/>
<arguments><argument name='style'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_node_info' homogen-type='method'><doc><text><p><matrix>
 <r><c> text :</c><c>The texts to be shown in each column.</c></r>
 <r><c>spacing :</c>
 <c>The extra space between the pixmap and the text.</c></r>
 <r><c>pixmap_closed :</c>
 <c>The pixmap to be used when the node is collapsed. Can be NULL.</c></r>
 <r><c> mask_closed :</c>
 <c>The mask for the above pixmap. Can be NULL.</c></r>
 <r><c> pixmap_opened :</c>
 <c>The pixmap to be used when the children are visible. Can be NULL.</c></r>
 <r><c>  mask_opened :</c>
 <c>The mask for the above pixmap. Can be NULL.</c></r>
 <r><c>is_leaf :</c>
 <c>Whether this node is going to be a leaf.</c></r>
 <r><c> expanded :</c>
 <c>Whether this node should start out expanded or not.</c></r>
 </matrix></p>
</text></doc>
<method name='set_node_info'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='320'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument><argument name='text'><type><string/></type></argument><argument name='spacing'><type><int/></type></argument><argument name='pixmap_closed'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask_closed'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='pixmap_opened'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask_opened'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='is_leaf'><type><int/></type></argument><argument name='expanded'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_stub' homogen-type='method'><doc><text><p>If true, the 'stub' will be shown. The stub is the small line that
 goes horizontally from the expand or collapse button to the actual
 contents of the tree</p>
</text></doc>
<method name='set_show_stub'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='341'/>
<arguments><argument name='stubp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_spacing' homogen-type='method'><doc><text><p>Set the spacing between the tree column and the other columns</p>
</text></doc>
<method name='set_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='348'/>
<arguments><argument name='npixels'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sort_node' homogen-type='method'><doc><text><p>Sort the specified node.</p>
</text></doc>
<method name='sort_node'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='353'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sort_recursive' homogen-type='method'><doc><text><p>Sort the specified node and it's children.</p>
</text></doc>
<method name='sort_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='358'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggle_expansion' homogen-type='method'><doc><text><p>If the node is expanded, collapse it, and if it's collapsed, expand it.</p>
</text></doc>
<method name='toggle_expansion'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='363'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggle_expansion_recursive' homogen-type='method'><doc><text><p>Toggle the expansion of the whole subtree, starting with node.</p>
</text></doc>
<method name='toggle_expansion_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='368'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect' homogen-type='method'><doc><text><p>Unselect a node.</p>
</text></doc>
<method name='unselect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='373'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unselect_recursive' homogen-type='method'><doc><text><p>Unselect a node and it's children.</p>
</text></doc>
<method name='unselect_recursive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ctree.pike' first-line='378'/>
<arguments><argument name='node'><type><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ctree'>GTK.Ctree</object></returntype>
</method>
</docgroup>
</class>

<class name='ToggleButton'><doc><text><p>Toggle buttons are derived from normal buttons and are very
 similar, except they will always be in one of two states,
 alternated by a click. They may be depressed, and when you click
 again, they will pop back up. Click again, and they will pop back
 down.</p>
<p><expr> GTK.ToggleButton("Toggle button")</expr>
<image file='predef.GTK.ToggleButton.1.png' width='75' height='19'>../images/gtk_togglebutton.png</image></p>
<p><expr> GTK.ToggleButton("Toggle button")-&gt;set_active( 1 )</expr>
<image file='predef.GTK.ToggleButton.2.png' width='75' height='19'>../images/gtk_togglebutton_2.png</image></p>
<p>  Signals:
 <b>toggled</b></p>
</text></doc><docgroup homogen-name='Button' homogen-type='inherit'><doc>
</doc>
<inherit name='Button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='20'/><classname resolved='predef::GTK.Button'>GTK.Button</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>If you supply a string, a label will be created and inserted in the button.
 Otherwise, use -&amp;gt;add(widget) to create the contents of the button.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments><argument name='label'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.ToggleButton'>GTK.ToggleButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_active' homogen-type='method'><doc><text><p>returns 1 if the button is pressed, 0 otherwise.</p>
</text></doc>
<method name='get_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='28'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_active' homogen-type='method'><doc><text><p>If activep is true, the toggle button will be activated.</p>
</text></doc>
<method name='set_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='33'/>
<arguments><argument name='activep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ToggleButton'>GTK.ToggleButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_mode' homogen-type='method'><doc><text><p>If true, draw indicator</p>
</text></doc>
<method name='set_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='38'/>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ToggleButton'>GTK.ToggleButton</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggled' homogen-type='method'><doc><text><p>emulate a 'toggle' of the button. This will emit a 'toggled' signal.</p>
</text></doc>
<method name='toggled'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ToggleButton.pike' first-line='43'/>
<arguments/>
<returntype><object resolved='predef::GTK.ToggleButton'>GTK.ToggleButton</object></returntype>
</method>
</docgroup>
</class>

<class name='Paned'><doc><text><p>GTK.Paned is the base class for widgets with two panes, arranged
 either horizontally (W(HPaned)) or vertically (W(VPaned)). Child
 widgets are added to the panes of the widget with pack1() and
 pack2(). The division beween the two children is set by default
 from the size requests of the children, but it can be adjusted by
 the user.</p>
<p> A paned widget draws a separator between the two child widgets and
 a small handle that the user can drag to adjust the division. It
 does not draw any relief around the children or around the
 separator. (The space in which the separator is called the
 gutter). Often, it is useful to put each child inside a W(Frame)
 with the shadow type set to GTK.ShadowIn so that the gutter
 appears as a ridge.</p>
<p> Each child has two options that can be set, resize and shrink. If
 resize is true, then when the GTK.Paned is resized, that child will
 expand or shrink along with the paned widget. If shrink is true,
 then when that child can be made smaller than it's requisition by
 the user. Setting shrink to 0 allows the application to set a
 minimum size. If resize is false for both children, then this is
 treated as if resize is true for both children.</p>
<p> The application can set the position of the slider as if it were
 set by the user, by calling set_position().</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='30'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='add1' homogen-type='method'><doc><text><p>Set the left or topmost item.
 This is equivalent to pack1(left_or_top,0,1)</p>
</text></doc>
<method name='add1'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='32'/>
<arguments><argument name='left_or_top'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add2' homogen-type='method'><doc><text><p>Set the right or bottommost item
 This is equivalent to pack2(left_or_top,0,1)</p>
</text></doc>
<method name='add2'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='38'/>
<arguments><argument name='right_or_bottom'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_handle_size' homogen-type='method'><doc><text><p>The size of the handle, in pixels</p>
</text></doc>
<method name='get_handle_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='44'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_handle_xpos' homogen-type='method'><doc><text><p>The xpos of the handle, in pixels</p>
</text></doc>
<method name='get_handle_xpos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='49'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_handle_ypos' homogen-type='method'><doc><text><p>The ypos of the handle, in pixels</p>
</text></doc>
<method name='get_handle_ypos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='54'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_in_drag' homogen-type='method'><doc><text><p>Return 1 if the user is dragging the handle</p>
</text></doc>
<method name='get_in_drag'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='59'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_max_position' homogen-type='method'><doc><text><p>The maximum handle position possible.</p>
</text></doc>
<method name='get_max_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='64'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_min_position' homogen-type='method'><doc><text><p>The minimum handle position possible.</p>
</text></doc>
<method name='get_min_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='69'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pack1' homogen-type='method'><doc><text><p>Add a child to the top or left pane.</p>
</text></doc>
<method name='pack1'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='74'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='resize'><type><int/></type></argument><argument name='shrink'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pack2' homogen-type='method'><doc><text><p>Add a child to the bottom or right pane.</p>
</text></doc>
<method name='pack2'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='79'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='resize'><type><int/></type></argument><argument name='shrink'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_gutter_size' homogen-type='method'><doc><text><p>Set the width of the gutter. (The area between the two panes).</p>
</text></doc>
<method name='set_gutter_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='84'/>
<arguments><argument name='gsize'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_handle_size' homogen-type='method'><doc><text><p>The size of the handle in pixels</p>
</text></doc>
<method name='set_handle_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='89'/>
<arguments><argument name='hsize'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_position' homogen-type='method'><doc><text><p>Set the position of the separator, as if set by the user. If
 position is negative, the remembered position is forgotten, and
 the division is recomputed from the the requisitions of the
 children.</p>
</text></doc>
<method name='set_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Paned.pike' first-line='94'/>
<arguments><argument name='position'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Paned'>GTK.Paned</object></returntype>
</method>
</docgroup>
</class>

<class name='MenuShell'><doc><text><p>A GTK.MenuShell is the abstract base class used to derive the
 W(Menu) and W(MenuBar) subclasses.</p>
<p> A GTK.MenuShell is a container of W(MenuItem) objects arranged in a
 list which can be navigated, selected, and activated by the user to
 perform application functions. A W(MenuItem) can have a submenu
 associated with it, allowing for nested hierarchical menus.</p>
<p>  Signals:
 <b>activate_current</b>
 An action signal that activates the current menu item within the
 menu shell.</p>
<p> <b>cancel</b>
 An action signal which cancels the selection within the menu
 shell. Causes the selection_done signal to be emitted.</p>
<p> <b>deactivate</b>
 This signal is emitted when a menu shell is deactivated.</p>
<p> <b>move_current</b>
 An action signal which moves the current menu item in the direction
 specified by the third argument.</p>
<p> <b>selection_done</b>
 This signal is emitted when a selection has been completed within a
 menu shell.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='37'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='activate_item' homogen-type='method'><doc><text><p>Activates the menu item within the menu shell.</p>
</text></doc>
<method name='activate_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='39'/>
<arguments><argument name='menu_item'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='force_deactivate'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc><text><p>Adds a new W(MenuItem) to the end of the menu shell's item
 list. Same as 'add'.</p>
</text></doc>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='44'/>
<arguments><argument name='what'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='children' homogen-type='method'><doc><text><p>This function returns all children of the menushell as an array.</p>
</text></doc>
<method name='children'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='50'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='deactivate' homogen-type='method'><doc><text><p>Deactivates the menu shell. Typically this results in the menu
 shell being erased from the screen.</p>
</text></doc>
<method name='deactivate'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='55'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_active' homogen-type='method'><doc><text><p>1 if the menu shell is currently active.</p>
</text></doc>
<method name='get_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='61'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>Add a widget after the specified location</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='66'/>
<arguments><argument name='what'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='where'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend' homogen-type='method'><doc><text><p>Add a menu item to the start of the widget (for a menu: top, for a
 bar: left)</p>
</text></doc>
<method name='prepend'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='71'/>
<arguments><argument name='what'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_item' homogen-type='method'><doc><text><p>Selects the menu item from the menu shell.</p>
</text></doc>
<method name='select_item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuShell.pike' first-line='77'/>
<arguments><argument name='menuitem'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuShell'>GTK.MenuShell</object></returntype>
</method>
</docgroup>
</class>

<class name='Text'><doc><text><p>The Text widget allows multiple lines of text to be displayed and
 edited. It supports both multi-colored and multi-font text,
 allowing them to be mixed in any way we wish. It also has a wide
 set of key based text editing commands, which are compatible with
 Emacs.</p>
<p> The text widget supports full cut-and-paste facilities, including
 the use of double- and triple-click to select a word and a whole
 line, respectively.</p>
<p> Bugs:&lt;ul&gt;
      &lt;li&gt; You cannot add text to the widget before it is realized.&lt;/li&gt;
     &lt;/ul&gt;</p>
<p><expr> GTK.Text(GTK.Adjustment(),GTK.Adjustment())</expr>
<image file='predef.GTK.Text.1.png' width='126' height='116'>../images/gtk_text.png</image></p>
<p><expr> function_object(call_out(GTK.Text(GTK.Adjustment(),GTK.Adjustment())-&gt;set_text, 0, "Some text")[0])</expr>
<image file='predef.GTK.Text.2.png' width='126' height='116'>../images/gtk_text_2.png</image></p>
<p><expr> function_object(call_out(GTK.Text(GTK.Adjustment(),GTK.Adjustment())-&gt;insert, 0, "Some text", 0, GDK.Color(255,255,0), GDK.Color(0,0,0))[0])</expr>
<image file='predef.GTK.Text.3.png' width='126' height='116'>../images/gtk_text_3.png</image></p>
</text></doc><docgroup homogen-name='Editable' homogen-type='inherit'><doc>
</doc>
<inherit name='Editable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='28'/><classname resolved='predef::GTK.Editable'>GTK.Editable</classname></inherit>
</docgroup>
<docgroup homogen-name='backward_delete' homogen-type='method'><doc><text><p>Delete n characters backwards from the cursor position</p>
</text></doc>
<method name='backward_delete'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='30'/>
<arguments><argument name='nchars'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new GTK.Text widget, initialized with the given
  Gtk.Adjustments. These pointers can be used to track the viewing
  position of the GTK.Text widget. Passing NULL to either or both of
  them will make the text widget create it's own. You can set these
  later with the function gtk_text_set_adjustment()</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='35'/><modifiers><static/></modifiers>
<arguments><argument name='xadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='yadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='forward_delete' homogen-type='method'><doc><text><p>Delete n characters forward from the cursor position</p>
</text></doc>
<method name='forward_delete'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='44'/>
<arguments><argument name='nchars'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='freeze' homogen-type='method'><doc><text><p>Freezes the widget which disallows redrawing of the widget until it
 is thawed. This is useful if a large number of changes are going to
 made to the text within the widget, reducing the amount of flicker
 seen by the user.</p>
</text></doc>
<method name='freeze'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='49'/>
<arguments/>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_length' homogen-type='method'><doc><text><p>Returns the length of the all the text contained within the widget</p>
</text></doc>
<method name='get_length'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='57'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_point' homogen-type='method'><doc><text><p>Gets the current position of the cursor as the number of characters
 from the upper left corner of the GtkText widget.</p>
</text></doc>
<method name='get_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='62'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Get the current contents of the text object.</p>
</text></doc>
<method name='get_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='68'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc><text><p>syntax:
 object insert(string what); OR
 object insert(string what, GDK.Font font, GDK.Color fg, GDK.Color bg); OR
 object insert(string what, 0, GDK.Color fg, GDK.Color bg); OR
 object insert(string what, 0, GDK.Color fg); OR
 object insert(string what, 0, 0, GDK.Color bg);</p>
<p> Insert new text, optionally with colors.</p>
</text></doc>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='73'/>
<arguments><argument name='text'><type><string/></type></argument><argument name='font'><type><object resolved='predef::GDK.Font'>GDK.Font</object></type></argument><argument name='bg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='fg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_adjustments' homogen-type='method'><doc><text><p>Change the adjustments (as supplied to the constructor) to other
 adjustments.</p>
</text></doc>
<method name='set_adjustments'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='86'/>
<arguments><argument name='xadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='yadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_editable' homogen-type='method'><doc><text><p>If true, the user can change the text in the widget.</p>
</text></doc>
<method name='set_editable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='92'/>
<arguments><argument name='editablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_line_wrap' homogen-type='method'><doc><text><p>If true, the widget will automatically wrap the contents.</p>
</text></doc>
<method name='set_line_wrap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='97'/>
<arguments><argument name='linewrapp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_point' homogen-type='method'><doc><text><p>Sets the cursor at the given point. In this case a point
 constitutes the number of characters from the extreme upper left
 corner of the widget.</p>
</text></doc>
<method name='set_point'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='102'/>
<arguments><argument name='point'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text to the specified string.</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='109'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_word_wrap' homogen-type='method'><doc><text><p>If true, the widget will automatically wrap the contents.</p>
</text></doc>
<method name='set_word_wrap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='114'/>
<arguments><argument name='wordwrapp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thaw' homogen-type='method'><doc><text><p>unfreeze the widget.</p>
</text></doc>
<method name='thaw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Text.pike' first-line='119'/>
<arguments/>
<returntype><object resolved='predef::GTK.Text'>GTK.Text</object></returntype>
</method>
</docgroup>
</class>

<class name='Data'><doc><text><p>A class inherited by all objects used to store data (they are not widgets)</p>
<p>  Signals:
 <b>disconnect</b></p>
</text></doc><docgroup homogen-name='Object' homogen-type='inherit'><doc>
</doc>
<inherit name='Object'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Data.pike' first-line='8'/><classname resolved='predef::GTK.Object'>GTK.Object</classname></inherit>
</docgroup>
</class>

<class name='ColorSelection'><doc><text><p>The color selection widget is, not surprisingly, a widget for
 interactive selection of colors.  This composite widget lets the
 user select a color by manipulating RGB (Red, Green, Blue) and HSV
 (Hue, Saturation, Value) triples. This is done either by adjusting
 single values with sliders or entries, or by picking the desired
 color from a hue-saturation wheel/value bar.  Optionally, the
 opacity of the color can also be set.</p>
<p> The color selection widget currently emits only one signal,
 "color_changed", which is emitted whenever the current color in the
 widget changes, either when the user changes it or if it's set
 explicitly through set_color().</p>
<p><expr> GTK.ColorSelection()</expr>
<image file='predef.GTK.ColorSelection.1.png' width='416' height='183'>../images/gtk_colorselection.png</image></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelection.pike' first-line='20'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new color selection.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelection.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.ColorSelection'>GTK.ColorSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_color' homogen-type='method'><doc><text><p>When you need to query the current color, typically when you've
  received a "color_changed" signal, you use this function. The
  return value is an array of floats, See the set_color() function
  for the description of this array.</p>
</text></doc>
<method name='get_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelection.pike' first-line='27'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_color' homogen-type='method'><doc><text><p>You can set the current color explicitly by calling this function
 with an array of colors (floats). The length of the array depends
 on whether opacity is enabled or not. Position 0 contains the red
 component, 1 is green, 2 is blue and opacity is at position 3 (only
 if opacity is enabled, see set_opacity()) All values are between
 0.0 and 1.0</p>
</text></doc>
<method name='set_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelection.pike' first-line='35'/>
<arguments><argument name='color'><type><array/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ColorSelection'>GTK.ColorSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_update_policy' homogen-type='method'><doc><text><p>one of <ref resolved='predef::GTK.UPDATE_ALWAYS'>UPDATE_ALWAYS</ref>, <ref resolved='predef::GTK.UPDATE_CONTINUOUS'>UPDATE_CONTINUOUS</ref>, <ref resolved='predef::GTK.UPDATE_DELAYED'>UPDATE_DELAYED</ref>, <ref resolved='predef::GTK.UPDATE_DISCONTINUOUS'>UPDATE_DISCONTINUOUS</ref> and <ref resolved='predef::GTK.UPDATE_IF_VALID'>UPDATE_IF_VALID</ref>.</p>
<p> The default policy is GTK.UpdateContinuous which means that the
 current color is updated continuously when the user drags the
 sliders or presses the mouse and drags in the hue-saturation wheel
 or value bar. If you experience performance problems, you may want
 to set the policy to GTK.UpdateDiscontinuous or GTK.UpdateDelayed.</p>
</text></doc>
<method name='set_update_policy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelection.pike' first-line='45'/>
<arguments><argument name='policy'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ColorSelection'>GTK.ColorSelection</object></returntype>
</method>
</docgroup>
</class>

<class name='EventBox'><doc><text><p>Some gtk widgets don't have associated X windows, so they just draw
 on their parents. Because of this, they cannot receive events and
 if they are incorrectly sized, they don't clip so you can get messy
 overwritting etc. If you require more from these widgets, the
 EventBox is for you.</p>
<p> At first glance, the EventBox widget might appear to be totally
 useless. It draws nothing on the screen and responds to no
 events. However, it does serve a function - it provides an X window
 for its child widget. This is important as many GTK widgets do not
 have an associated X window. Not having an X window saves memory
 and improves performance, but also has some drawbacks. A widget
 without an X window cannot receive events, and does not perform any
 clipping on it's contents. Although the name EventBox emphasizes
 the event-handling function, the widget can also be used for
 clipping.</p>
<p> The primary use for this widget is when you want to receive events
 for a widget without a window. Examples of such widgets are labels
 and images.</p>
<p><expr> GTK.EventBox()-&gt;set_usize(100,100)</expr>
<image file='predef.GTK.EventBox.1.png' width='100' height='100'>../images/gtk_eventbox.png</image></p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/EventBox.pike' first-line='28'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new event box widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/EventBox.pike' first-line='30'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.EventBox'>GTK.EventBox</object></returntype>
</method>
</docgroup>
</class>

<class name='MenuBar'><doc><text><p>Basically a horizontal W(Menu).
 The menu image cannot be
 grabbed automatically, but this is how you would create a menu all
 in one line. This is not the recommended coding style.
<expr> GTK.MenuBar()-&gt;add(GTK.Menu_item("Menu")-&gt;set_submenu(GTK.Menu()-&gt;add(GTK.Menu_item("Sub")))-&gt;select()-&gt;activate())-&gt;add(GTK.Menu_item("Bar"))</expr>
<image file='predef.GTK.MenuBar.1.png' width='219' height='32'>../images/gtk_menubar.png</image></p>
</text></doc><docgroup homogen-name='MenuShell' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuShell'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='12'/><classname resolved='predef::GTK.MenuShell'>GTK.MenuShell</classname></inherit>
</docgroup>
<docgroup homogen-name='append' homogen-type='method'><doc/>
<method name='append'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='14'/>
<arguments><argument name='menu'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='17'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert' homogen-type='method'><doc/>
<method name='insert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='20'/>
<arguments><argument name='menu'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='position'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend' homogen-type='method'><doc/>
<method name='prepend'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='23'/>
<arguments><argument name='menu'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc/>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuBar.pike' first-line='26'/>
<arguments><argument name='int'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuBar'>GTK.MenuBar</object></returntype>
</method>
</docgroup>
</class>

<class name='Ruler'><doc><text><p>Ruler widgets are used to indicate the location of the mouse
 pointer in a given window. A window can have a vertical ruler
 spanning across the width and a horizontal ruler spanning down
 the height. A small triangular indicator on the ruler shows the
 exact location of the pointer relative to the ruler.</p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='9'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='draw_pos' homogen-type='method'><doc><text><p>draw the position</p>
</text></doc>
<method name='draw_pos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='11'/>
<arguments/>
<returntype><object resolved='predef::GTK.Ruler'>GTK.Ruler</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='draw_ticks' homogen-type='method'><doc><text><p>draw the ticks</p>
</text></doc>
<method name='draw_ticks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='16'/>
<arguments/>
<returntype><object resolved='predef::GTK.Ruler'>GTK.Ruler</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_lower' homogen-type='method'><doc><text><p>The currently defined lower extent of the ruler.</p>
</text></doc>
<method name='get_lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='21'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_max_size' homogen-type='method'><doc><text><p>The currently defined max_size of the ruler.</p>
</text></doc>
<method name='get_max_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='26'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_position' homogen-type='method'><doc><text><p>The currently defined initial position of the pointer indicator
 within the ruler.</p>
</text></doc>
<method name='get_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='31'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_upper' homogen-type='method'><doc><text><p>The currently defined upper extent of the ruler.</p>
</text></doc>
<method name='get_upper'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='37'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_metric' homogen-type='method'><doc><text><p>Either GTK.Pixels, GTK.Centimers or GTK.Inches.
 The default measure is GTK.Pixels.</p>
</text></doc>
<method name='set_metric'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='42'/>
<arguments><argument name='unit'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ruler'>GTK.Ruler</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_range' homogen-type='method'><doc><text><p>The lower and upper arguments define the extent of the ruler, and
 max_size is the largest possible number that will be displayed.
 Position defines the initial position of the pointer indicator
 within the ruler.</p>
</text></doc>
<method name='set_range'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Ruler.pike' first-line='48'/>
<arguments><argument name='lower'><type><float/></type></argument><argument name='upper'><type><float/></type></argument><argument name='position'><type><float/></type></argument><argument name='max_size'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Ruler'>GTK.Ruler</object></returntype>
</method>
</docgroup>
</class>

<class name='Hscale'><doc><text><p>The GTK.HScale widget is used to allow the user to select a value
 using a horizontal slider. A GTK.Adjustment is used to set the
 initial value, the lower and upper bounds, and the step and page
 increments.</p>
<p> See W(Scale) for details</p>
<p> The position to show the current value, and the number of decimal
 places shown can be set using the parent W(Scale) class's
 functions.</p>
<p><expr> GTK.Hscale(GTK.Adjustment())-&gt;set_usize(300,30)</expr>
<image file='predef.GTK.Hscale.1.png' width='300' height='30'>../images/gtk_hscale.png</image></p>
</text></doc><docgroup homogen-name='Scale' homogen-type='inherit'><doc>
</doc>
<inherit name='Scale'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hscale.pike' first-line='18'/><classname resolved='predef::GTK.Scale'>GTK.Scale</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new hscale widget.
 The adjustment argument can either be an existing W(Adjustment), or
 0, in which case one will be created for you.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hscale.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments><argument name='settings'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Hscale'>GTK.Hscale</object></returntype>
</method>
</docgroup>
</class>

<class name='Container'><doc><text><p>The basic container class.</p>
<p>  Signals:
 <b>add</b>
 Called when a new object is added to the container. (used internally)</p>
<p> <b>focus</b>
 Called when the container gets focus (used internally)</p>
<p> <b>need_resize</b>
 Called when the container needs resizing (used internally)</p>
<p> <b>remove</b>
 Called when a object is removed from the container (used internally)</p>
<p> <b>set_focus_child</b></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='24'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Add a subwidget to the container. Don't forget to call show() in
 the subwidget. Some (even most) containers can only contain one child.
 Calling this function might result in a resize of the container.</p>
</text></doc>
<method name='add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='26'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='border_width' homogen-type='method'><doc><text><p>Compatibility alias for set_border_width.
 Do not use this function in new code!</p>
</text></doc>
<method name='border_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='33'/>
<arguments><argument name='width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='children' homogen-type='method'><doc><text><p>This function returns all children of the container
 as an array.</p>
</text></doc>
<method name='children'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='39'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='focus' homogen-type='method'><doc><text><p>Emulate a focus event. direction is one of <ref resolved='predef::GTK.DIR_DOWN'>DIR_DOWN</ref>, <ref resolved='predef::GTK.DIR_LEFT'>DIR_LEFT</ref>, <ref resolved='predef::GTK.DIR_RIGHT'>DIR_RIGHT</ref>, <ref resolved='predef::GTK.DIR_TAB_BACKWARD'>DIR_TAB_BACKWARD</ref>, <ref resolved='predef::GTK.DIR_TAB_FORWARD'>DIR_TAB_FORWARD</ref> and <ref resolved='predef::GTK.DIR_UP'>DIR_UP</ref>.</p>
</text></doc>
<method name='focus'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='45'/>
<arguments><argument name='focus_direction'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Remove a child from the container. The argument is the child to remove.
 Calling this function might result in a resize of the container.</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='50'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_border_width' homogen-type='method'><doc><text><p>Set the border width. The border width is the size of the
 padding around the container.
 Calling this function might result in a resize of the container.</p>
</text></doc>
<method name='set_border_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='56'/>
<arguments><argument name='external_border_width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_focus_child' homogen-type='method'><doc><text><p>Emulate a set_focus_child signal. Focus on the specified child.</p>
</text></doc>
<method name='set_focus_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='63'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_focus_hadjustment' homogen-type='method'><doc><text><p>Set the hadjustment used to focus children.</p>
</text></doc>
<method name='set_focus_hadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='68'/>
<arguments><argument name='adj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_focus_vadjustment' homogen-type='method'><doc><text><p>Set the vadjustment used to focus children.</p>
</text></doc>
<method name='set_focus_vadjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='73'/>
<arguments><argument name='adj'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_resize_mode' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.RESIZE_IMMEDIATE'>RESIZE_IMMEDIATE</ref>, <ref resolved='predef::GTK.RESIZE_PARENT'>RESIZE_PARENT</ref> and <ref resolved='predef::GTK.RESIZE_QUEUE'>RESIZE_QUEUE</ref></p>
</text></doc>
<method name='set_resize_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Container.pike' first-line='78'/>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Container'>GTK.Container</object></returntype>
</method>
</docgroup>
</class>

<class name='Widget'><doc><text><p>The basic widget, inherited (directly or indirectly) by all
 widgets.  Thus, all functions and signals defined in this widget
 works on all widgets.</p>
<p> One of the most importat functions in this class is 'show',
 it lets GTK know that we are done setting the attributes of the
 widget, and it is ready to be displayed. You may also use hide to
 make it disappear again. The order in which you show the widgets is
 not important, but I suggest showing the toplevel window last so
 the whole window pops up at once rather than seeing the individual
 widgets come up on the screen as they're formed. The children of a
 widget (a window is a widget too) will not be displayed until the
 window itself is shown using the show() function.</p>
<p>  Signals:
 <b>add_accelerator</b>
 Called when an accelarator (keyboard shortcut) is added to the widget</p>
<p> <b>button_press_event</b>
 Called when a mouse button is pressed</p>
<p> <b>button_release_event</b>
 Called when a mouse button is released</p>
<p> <b>client_event</b>
 An event sent by another client application</p>
<p> <b>configure_event</b>
 The size, position or stacking order of the widget has changed</p>
<p> <b>debug_msg</b></p>
<p> <b>delete_event</b>
 Called when the user has requested that the widget should be closed</p>
<p> <b>destroy_event</b>
 Called when the widget is destroyed</p>
<p> <b>drag_begin</b>
 Called when the drag is initiated, on the sending side</p>
<p> <b>drag_data_delete</b>
 Called when the data can be safely deleted (there is no need to use this function in pigtk, it's all handled automatically)</p>
<p> <b>drag_data_get</b>
 Called on the sending side when the drop is initiated</p>
<p> <b>drag_data_received</b>
 Called on the receiving side when the drop is finished.</p>
<p> <b>drag_drop</b>
 Called on the receiving side when the drop is initiated</p>
<p> <b>drag_end</b>
 Called when the drag is finished, on the sending side</p>
<p> <b>drag_leave</b>
 Called when the mouse leaves the widget while the user is dragging something</p>
<p> <b>drag_motion</b>
 Called on the receiving side when the cursor is moved over the widget while dragging something</p>
<p> <b>draw</b>
 Called when the widget should draw itself.</p>
<p> <b>draw_default</b>
 Called when the widget should draw itself, and indicate that it's the default widget</p>
<p> <b>draw_focus</b>
 Called when the widget should draw itself, and a focus indicator around itself (or otherwise indicate that is has the keyboard focus)</p>
<p> <b>enter_notify_event</b>
 Called when the mouse enters the widget</p>
<p> <b>event</b>
 Called for all events</p>
<p> <b>expose_event</b>
 Called when the widget, or a part of the widget gets and expose event</p>
<p> <b>focus_in_event</b>
 The keyboard focus has entered the widget</p>
<p> <b>focus_out_event</b>
 The keyboard focus has left the widget</p>
<p> <b>hide</b>
 Called when the widget is hidden</p>
<p> <b>key_press_event</b>
 Called when a keyboard key is pressed</p>
<p> <b>key_release_event</b>
 Called when a keyboard key is released</p>
<p> <b>leave_notify_event</b>
 Called when the mouse leaves the widget</p>
<p> <b>map</b>
 Called when the window associated with the widget is mapped</p>
<p> <b>map_event</b>
 Called just before the 'map' signal</p>
<p> <b>motion_notify_event</b>
 Called when the mouse is moved inside the widget</p>
<p> <b>no_expose_event</b></p>
<p> <b>other_event</b></p>
<p> <b>parent_set</b>
 Called when the parent widget is changed</p>
<p> <b>property_notify_event</b>
 Called when a property of the GDK window associated with the widget is changed</p>
<p> <b>proximity_in_event</b></p>
<p> <b>proximity_out_event</b></p>
<p> <b>realize</b>
 Called when the widget is realized. Some methods cannot be used until the widget has been realized, if you get assertion errors related to 'w-&gt;window' or similar, this is probably the cause.</p>
<p> <b>remove_accelerator</b>
 Called when an accelerator (keyboard shortcut) is removed from the widget</p>
<p> <b>selection_clear_event</b>
 NYI</p>
<p> <b>selection_notify_event</b>
 NYI</p>
<p> <b>selection_received</b>
 NYI</p>
<p> <b>selection_request_event</b>
 NYI</p>
<p> <b>show</b>
 Called when the widget is shown</p>
<p> <b>size_allocate</b>
 Called when the widget get's the size it should be</p>
<p> <b>size_request</b>
 Called when the widget should calculate how big it want's to be</p>
<p> <b>state_changed</b></p>
<p> <b>style_set</b>
 Called when the style is changed</p>
<p> <b>unmap</b>
 Called when the window associated with the widget is unmapped</p>
<p> <b>unmap_event</b>
 Called just before the 'unmap' signal</p>
<p> <b>unrealize</b>
 Called when the widget is unrealized.</p>
<p> <b>visibility_notify_event</b>
 The widget has been mapped, unmapped, hidden, or otherwise had it's visibility modified</p>
</text></doc><docgroup homogen-name='Object' homogen-type='inherit'><doc>
</doc>
<inherit name='Object'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='214'/><classname resolved='predef::GTK.Object'>GTK.Object</classname></inherit>
</docgroup>
<docgroup homogen-name='activate' homogen-type='method'><doc><text><p>Activate the widget. This either activates the widget, if possible
 (as an example, buttons can be activated), or activates the default
 widget of it's parent (or it's parent, or it's parents parent
 etc.)</p>
</text></doc>
<method name='activate'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='216'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_accelerator' homogen-type='method'><doc><text><p>Add an accelerator (keyboard shortcut).</p>
<p> Flag is one of <ref resolved='predef::GTK.ACCEL_LOCKED'>ACCEL_LOCKED</ref>, <ref resolved='predef::GTK.ACCEL_SIGNAL_VISIBLE'>ACCEL_SIGNAL_VISIBLE</ref> and <ref resolved='predef::GTK.ACCEL_VISIBLE'>ACCEL_VISIBLE</ref></p>
<p> The signal is the signal to invoke when the accelerator key is pressed.</p>
<p> The modifiers is a bitwise or of one or more of GDK.ShiftMask,
 GDK.LockMask, GDK.ControlMask, <ref resolved='predef::GTK.GDK_MOD1_MASK'>GDK_MOD1_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD2_MASK'>GDK_MOD2_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD3_MASK'>GDK_MOD3_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD4_MASK'>GDK_MOD4_MASK</ref> and <ref resolved='predef::GTK.GDK_MOD5_MASK'>GDK_MOD5_MASK</ref>.</p>
<p> The group is the accelerator group in which the accelerator should be added.</p>
<p> The key is the unicode code for the key to bind.</p>
</text></doc>
<method name='add_accelerator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='224'/>
<arguments><argument name='signal'><type><string/></type></argument><argument name='group'><type><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></type></argument><argument name='key'><type><int/></type></argument><argument name='modifiers'><type><int/></type></argument><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='add_events' homogen-type='method'><doc><text><p>Events is one or more of:
 GDK.ExposureMask, GDK.PointerMotionMask,
 GDK.PointerMotion_HINTMask, GDK.ButtonMotionMask,
 GDK.Button1MotionMask, GDK.Button2MotionMask,
 GDK.Button3MotionMask, GDK.ButtonPressMask, GDK.ButtonReleaseMask,
 GDK.KeyPressMask, GDK.KeyReleaseMask, GDK.EnterNotifyMask,
 GDK.LeaveNotifyMask, GDK.FocusChangeMask, GDK.StructureMask,
 GDK.PropertyChangeMask, GDK.VisibilityNotifyMask,
 GDK.ProximityInMask, GDK.ProximityOutMask and GDK.AllEventsMask</p>
</text></doc>
<method name='add_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='240'/>
<arguments><argument name='events'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='allocation' homogen-type='method'><doc><text><p>Returns ([ "x":xoffset, "y":yoffset, "width":xsize, "height":ysize ])</p>
</text></doc>
<method name='allocation'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='253'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='class_path' homogen-type='method'><doc><text><p>Returns the class 'pathname' of this widget. Useful for rc-files and such.</p>
</text></doc>
<method name='class_path'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='258'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='copy_area' homogen-type='method'><doc><text><p>Copies the rectangle defined by xsource,ysource and width,height
 from the source widget, and places the results at xdest,ydest in
 the widget in which this function is called.
 NOTE: The widget must be realized before this function can be used</p>
</text></doc>
<method name='copy_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='263'/>
<arguments><argument name='gc'><type><object resolved='predef::GDK.GC'>GDK.GC</object></type></argument><argument name='xdest'><type><int/></type></argument><argument name='ydest'><type><int/></type></argument><argument name='source'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='xsource'><type><int/></type></argument><argument name='ysource'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_dest_set' homogen-type='method'><doc><text><p>Register a drop site, and possibly add default behaviors.
   arguments:
     flags:     Which types of default drag behavior to use (one of <ref resolved='predef::GTK.DEST_DEFAULT_ALL'>DEST_DEFAULT_ALL</ref>, <ref resolved='predef::GTK.DEST_DEFAULT_DROP'>DEST_DEFAULT_DROP</ref>, <ref resolved='predef::GTK.DEST_DEFAULT_HIGHLIGHT'>DEST_DEFAULT_HIGHLIGHT</ref> and <ref resolved='predef::GTK.DEST_DEFAULT_MOTION'>DEST_DEFAULT_MOTION</ref>)
     targets:   Table of targets that can be accepted
            ({ ({ content_type(string), flags(int(try 0)), id(int) }), ...})
       The id will be received in the signal handlers.
     actions:   one of <ref resolved='predef::GTK.GDK_ACTION_ASK'>GDK_ACTION_ASK</ref>, <ref resolved='predef::GTK.GDK_ACTION_COPY'>GDK_ACTION_COPY</ref>, <ref resolved='predef::GTK.GDK_ACTION_DEFAULT'>GDK_ACTION_DEFAULT</ref>, <ref resolved='predef::GTK.GDK_ACTION_LINK'>GDK_ACTION_LINK</ref>, <ref resolved='predef::GTK.GDK_ACTION_MOVE'>GDK_ACTION_MOVE</ref> and <ref resolved='predef::GTK.GDK_ACTION_PRIVATE'>GDK_ACTION_PRIVATE</ref>
   results:</p>
</text></doc>
<method name='drag_dest_set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='271'/>
<arguments><argument name='flags'><type><int/></type></argument><argument name='targets'><type><array/></type></argument><argument name='actions'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_dest_unset' homogen-type='method'><doc><text><p>Removes the drop support from this widget (see drag_dest_set)</p>
</text></doc>
<method name='drag_dest_unset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='283'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_get_data' homogen-type='method'><doc><text><p>Get the data from a context and an integer timestamp (from an
 event), requesting it from the dropping client. This function
 should probably never be used directly.</p>
<p>Use the selection argument passed to the drag_data_received signal
 instead.</p>
</text></doc>
<method name='drag_get_data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='288'/>
<arguments><argument name='ctx'><type><object resolved='predef::GDK.DragContext'>GDK.DragContext</object></type></argument><argument name='time'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_highlight' homogen-type='method'><doc><text><p>Highlight the widget. Not normaly used directly.</p>
</text></doc>
<method name='drag_highlight'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='298'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_source_set' homogen-type='method'><doc><text><p>Register a drop site, and possibly add default behaviors.
   arguments:
     buttons:     Which mouse buttons can be used to start the drag
     targets:   Table of targets that can be accepted
            ({ ({ content_type(string), flags(int(try 0)), id(int) }), ...})
       The id will be received in the signal handlers.
     actions:   one of <ref resolved='predef::GTK.GDK_ACTION_ASK'>GDK_ACTION_ASK</ref>, <ref resolved='predef::GTK.GDK_ACTION_COPY'>GDK_ACTION_COPY</ref>, <ref resolved='predef::GTK.GDK_ACTION_DEFAULT'>GDK_ACTION_DEFAULT</ref>, <ref resolved='predef::GTK.GDK_ACTION_LINK'>GDK_ACTION_LINK</ref>, <ref resolved='predef::GTK.GDK_ACTION_MOVE'>GDK_ACTION_MOVE</ref> and <ref resolved='predef::GTK.GDK_ACTION_PRIVATE'>GDK_ACTION_PRIVATE</ref>
   results:</p>
</text></doc>
<method name='drag_source_set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='303'/>
<arguments><argument name='flags'><type><int/></type></argument><argument name='targets'><type><array/></type></argument><argument name='actions'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_source_set_icon' homogen-type='method'><doc><text><p>Set the icon that will be used (by default) for drags
 from this widget.</p>
</text></doc>
<method name='drag_source_set_icon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='315'/>
<arguments><argument name='pm'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_source_unset' homogen-type='method'><doc><text><p>Remove the drag support from this widget. See drag_source_set.</p>
</text></doc>
<method name='drag_source_unset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='321'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='drag_unhighlight' homogen-type='method'><doc><text><p>Unhighlight the widget. Not normaly used directly.</p>
</text></doc>
<method name='drag_unhighlight'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='326'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='ensure_style' homogen-type='method'><doc><text><p>Ensure that the widget has a style associated with it.</p>
</text></doc>
<method name='ensure_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='331'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_composite_name' homogen-type='method'><doc><text><p>Like set name, but it is inherited by the children of this widget.</p>
</text></doc>
<method name='get_composite_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='336'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_events' homogen-type='method'><doc><text><p>Return the current event mask (see set_events and add_events)</p>
</text></doc>
<method name='get_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='341'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_extension_events' homogen-type='method'><doc><text><p>Returns one of <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_ALL'>GDK_EXTENSION_EVENTS_ALL</ref>, <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_CURSOR'>GDK_EXTENSION_EVENTS_CURSOR</ref> and <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_NONE'>GDK_EXTENSION_EVENTS_NONE</ref></p>
</text></doc>
<method name='get_extension_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='346'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_gdkwindow' homogen-type='method'><doc><text><p>Return the GDK.Window associated with this widget, if any.</p>
</text></doc>
<method name='get_gdkwindow'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='351'/>
<arguments/>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_name' homogen-type='method'><doc><text><p>Returns the name set by set_name or the class name</p>
</text></doc>
<method name='get_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='356'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_parent' homogen-type='method'><doc><text><p>Returns the parent of this widget, if any, if there is no parent
 0 is returned.</p>
</text></doc>
<method name='get_parent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='361'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_style' homogen-type='method'><doc><text><p>Return the style associated with this widget</p>
</text></doc>
<method name='get_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='367'/>
<arguments/>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_toplevel' homogen-type='method'><doc><text><p>return the toplevel widget this widget is inside (or this widget if
 it is the toplevel widget)</p>
</text></doc>
<method name='get_toplevel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='372'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='grab_default' homogen-type='method'><doc><text><p>Make this widget the default action for the parent widget</p>
</text></doc>
<method name='grab_default'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='378'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='grab_focus' homogen-type='method'><doc><text><p>Grab the focus.</p>
</text></doc>
<method name='grab_focus'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='383'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_set_flags' homogen-type='method'><doc><text><p>All possible flags are:
 GTK.AppPaintable,
 GTK.CanDefault,
 GTK.CanFocus,
 GTK.CompositeChild,
 GTK.HasDefault,
 GTK.HasFocus,
 GTK.HasGrab,
 GTK.Mapped,
 GTK.NoReparent,
 GTK.NoWindow,
 GTK.ParentSensitive,
 GTK.RcStyle,
 GTK.Realized,
 GTK.ReceivesDefault
 GTK.Sensitive,
 GTK.Toplevel and
 GTK.Visible.</p>
</text></doc>
<method name='has_set_flags'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='388'/>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide' homogen-type='method'><doc><text><p>Hide this widget</p>
</text></doc>
<method name='hide'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='410'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_all' homogen-type='method'><doc><text><p>Hide this widget and all it's children</p>
</text></doc>
<method name='hide_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='415'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='intersect' homogen-type='method'><doc><text><p>Do an intersection with the area and place the result in
 'intersection'.</p>
</text></doc>
<method name='intersect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='420'/>
<arguments><argument name='area'><type><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></type></argument><argument name='intersection'><type><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_ancestor' homogen-type='method'><doc><text><p>Returns true if the specified widget is an ancestor of this widget.</p>
</text></doc>
<method name='is_ancestor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='426'/>
<arguments><argument name='of'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='lock_accelerators' homogen-type='method'><doc><text><p>Make it impossible to add new accelerators, or remove old ones</p>
</text></doc>
<method name='lock_accelerators'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='431'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='map' homogen-type='method'><doc><text><p>Map the widget. Should normally not be called directly.</p>
</text></doc>
<method name='map'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='436'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='path' homogen-type='method'><doc><text><p>Returns the 'pathname' of this widget. Useful for rc-files and such.</p>
</text></doc>
<method name='path'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='441'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='popup' homogen-type='method'><doc><text><p>Map the widget at the specified coordinates.</p>
</text></doc>
<method name='popup'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='446'/>
<arguments><argument name='xpos'><type><int/></type></argument><argument name='ypos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='queue_clear' homogen-type='method'><doc><text><p>Force a clear (and subsequent redraw) of the widget</p>
</text></doc>
<method name='queue_clear'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='451'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='queue_clear_area' homogen-type='method'><doc><text><p>Force a clear (and subsequent redraw) of part of the widget</p>
</text></doc>
<method name='queue_clear_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='456'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='queue_draw' homogen-type='method'><doc><text><p>Force a redraw of the widget</p>
</text></doc>
<method name='queue_draw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='461'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='queue_draw_area' homogen-type='method'><doc><text><p>Force a redraw of part of the widget</p>
</text></doc>
<method name='queue_draw_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='466'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='queue_resize' homogen-type='method'><doc><text><p>Force a allocation recalculation, followed by a redraw</p>
</text></doc>
<method name='queue_resize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='471'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='realize' homogen-type='method'><doc><text><p>Realize this widget, and it's children, if nessesary</p>
</text></doc>
<method name='realize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='476'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_accelerator' homogen-type='method'><doc><text><p>Remove an accelerator (keyboard shortcut).</p>
<p> The modifiers is a bitwise or of one or more of GDK.ShiftMask,
 GDK.LockMask, GDK.ControlMask, <ref resolved='predef::GTK.GDK_MOD1_MASK'>GDK_MOD1_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD2_MASK'>GDK_MOD2_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD3_MASK'>GDK_MOD3_MASK</ref>, <ref resolved='predef::GTK.GDK_MOD4_MASK'>GDK_MOD4_MASK</ref> and <ref resolved='predef::GTK.GDK_MOD5_MASK'>GDK_MOD5_MASK</ref>.</p>
<p> The group is the accelerator group in which the accelerator should be added.</p>
<p> The key is the unicode code for the key to bind.</p>
</text></doc>
<method name='remove_accelerator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='481'/>
<arguments><argument name='group'><type><object resolved='predef::GTK.AccelGroup'>GTK.AccelGroup</object></type></argument><argument name='key'><type><int/></type></argument><argument name='modifiers'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reparent' homogen-type='method'><doc><text><p>Change the parent of the widget.</p>
</text></doc>
<method name='reparent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='493'/>
<arguments><argument name='to'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reset_rc_styles' homogen-type='method'><doc><text><p>Reset all styles to their default value, recursively</p>
</text></doc>
<method name='reset_rc_styles'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='498'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='restore_default_style' homogen-type='method'><doc><text><p>Reset all styles to their default value</p>
</text></doc>
<method name='restore_default_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='503'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='selection_add_target' homogen-type='method'><doc><text><p>Supplying the selection is a bit more complicated than requesting
 it. You must register handlers that will be called when your
 selection is requested. For each selection/target pair you will
 handle, you make a call to this function.</p>
<p> selection, and target identify the requests this handler will
 manage. When a request for a selection is received, the
 "selection_get" signal will be called. info can be used as an
 enumerator to identify the specific target within the callback
 function.</p>
<p> Selection defaults to PRIMARY, and target defaults to STRING.</p>
</text></doc>
<method name='selection_add_target'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='508'/>
<arguments><argument name='selection'><type><or><object resolved='predef::GDK.Atom'>GDK.Atom</object><void/></or></type></argument><argument name='target'><type><or><object resolved='predef::GDK.Atom'>GDK.Atom</object><void/></or></type></argument><argument name='info'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='selection_owner_set' homogen-type='method'><doc><text><p>When prompted by the user, you claim ownership of the selection by
 calling this function.</p>
<p> If another application claims ownership of the selection, you will
 receive a "selection_clear_event".</p>
<p> The selection defaults to the PRIMARY selection, and the time to
 GDK.CurrentTime.</p>
</text></doc>
<method name='selection_owner_set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='524'/>
<arguments><argument name='selection'><type><or><object resolved='predef::GDK.Atom'>GDK.Atom</object><void/></or></type></argument><argument name='time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='selecton_convert' homogen-type='method'><doc><text><p>Retrieving the selection is an asynchronous process. To start the
 process, you call this function.</p>
<p> This converts the selection into the form specified by target. If
 at all possible, the time field should be the time from the event
 that triggered the selection. This helps make sure that events
 occur in the order that the user requested them. However, if it is
 not available (for instance, if the conversion was triggered by a
 "clicked" signal), then you can omit it altogether. This will
 cause it to be set to GDK.CurrentTime.</p>
<p> When the selection owner responds to the request, a
 "selection_received" signal is sent to your application. The
 handler for this signal receives a pointer to a GTK.SelectionData
 object.</p>
<p> The special target TARGETS generates a list of all valid targets.</p>
<p> Selection defaults to PRIMARY, and target defaults to STRING.</p>
</text></doc>
<method name='selecton_convert'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='536'/>
<arguments><argument name='selection'><type><or><object resolved='predef::GDK.Atom'>GDK.Atom</object><void/></or></type></argument><argument name='target'><type><or><object resolved='predef::GDK.Atom'>GDK.Atom</object><void/></or></type></argument><argument name='time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_app_paintable' homogen-type='method'><doc><text><p>Make it possible to draw directly in the widget using the low-level
 drawing functions.</p>
</text></doc>
<method name='set_app_paintable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='559'/>
<arguments><argument name='paintablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_background' homogen-type='method'><doc><text><p>Set the background color or image.
 The argument is either a GDK.Pixmap or a GDK.Color object.
 NOTE: The widget must be realized before this function can be used</p>
</text></doc>
<method name='set_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='565'/>
<arguments><argument name='background'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_bitmap_cursor' homogen-type='method'><doc><text><p>xhot and yhot are the locations of the x and y hotspot relative to the
 upper left corner of the cursor image.
 Both the bitmaps and the colors must be specified.</p>
</text></doc>
<method name='set_bitmap_cursor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='572'/>
<arguments><argument name='source'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='fg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='bg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='xhot'><type><int/></type></argument><argument name='yhot'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_composite_name' homogen-type='method'><doc><text><p>Like set name, but it is inherited by the children of this widget.</p>
</text></doc>
<method name='set_composite_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='579'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_cursor' homogen-type='method'><doc><text><p>Change the widget cursor.
 If no arguments are passed, restore the default cursor.
 Both fg and bg must be specified if either one is.
 &lt;table border="0" cellpadding="3" cellspacing="0"&gt;
 CURS(GDK.Arrow)
 CURS(GDK.BasedArrowDown)
 CURS(GDK.BasedArrowUp)
 CURS(GDK.Boat)
 CURS(GDK.Bogosity)
 CURS(GDK.BottomLeftCorner)
 CURS(GDK.BottomRightCorner)
 CURS(GDK.BottomSide)
 CURS(GDK.BottomTee)
 CURS(GDK.BoxSpiral)
 CURS(GDK.CenterPtr)
 CURS(GDK.Circle)
 CURS(GDK.Clock)
 CURS(GDK.CoffeeMug)
 CURS(GDK.Cross)
 CURS(GDK.CrossReverse)
 CURS(GDK.Crosshair)
 CURS(GDK.DiamondCross)
 CURS(GDK.Dot)
 CURS(GDK.Dotbox)
 CURS(GDK.DoubleArrow)
 CURS(GDK.DraftLarge)
 CURS(GDK.DraftSmall)
 CURS(GDK.DrapedBox)
 CURS(GDK.Exchange)
 CURS(GDK.Fleur)
 CURS(GDK.Gobbler)
 CURS(GDK.Gumby)
 CURS(GDK.Hand1)
 CURS(GDK.Hand2)
 CURS(GDK.Heart)
 CURS(GDK.Icon)
 CURS(GDK.IronCross)
 CURS(GDK.LeftPtr)
 CURS(GDK.LeftSide)
 CURS(GDK.LeftTee)
 CURS(GDK.Leftbutton)
 CURS(GDK.LlAngle)
 CURS(GDK.LrAngle)
 CURS(GDK.Man)
 CURS(GDK.Middlebutton)
 CURS(GDK.Mouse)
 CURS(GDK.Pencil)
 CURS(GDK.Pirate)
 CURS(GDK.Plus)
 CURS(GDK.QuestionArrow)
 CURS(GDK.RightPtr)
 CURS(GDK.RightSide)
 CURS(GDK.RightTee)
 CURS(GDK.Rightbutton)
 CURS(GDK.RtlLogo)
 CURS(GDK.Sailboat)
 CURS(GDK.SbDownArrow)
 CURS(GDK.SbHDoubleArrow)
 CURS(GDK.SbLeftArrow)
 CURS(GDK.SbRightArrow)
 CURS(GDK.SbUpArrow)
 CURS(GDK.SbVDoubleArrow)
 CURS(GDK.Shuttle)
 CURS(GDK.Sizing)
 CURS(GDK.Spider)
 CURS(GDK.Spraycan)
 CURS(GDK.Star)
 CURS(GDK.Target)
 CURS(GDK.Tcross)
 CURS(GDK.TopLeftArrow)
 CURS(GDK.TopLeftCorner)
 CURS(GDK.TopRightCorner)
 CURS(GDK.TopSide)
 CURS(GDK.TopTee)
 CURS(GDK.Trek)
 CURS(GDK.UlAngle)
 CURS(GDK.Umbrella)
 CURS(GDK.UrAngle)
 CURS(GDK.Watch)
 CURS(GDK.Xterm)
 &lt;/table&gt;</p>
</text></doc>
<method name='set_cursor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='584'/>
<arguments><argument name='cursor_type'><type><or><int/><void/></or></type></argument><argument name='fg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='bg'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_events' homogen-type='method'><doc><text><p>Events is one or more of:
 GDK.ExposureMask, GDK.PointerMotionMask,
 GDK.PointerMotion_HINTMask, GDK.ButtonMotionMask,
 GDK.Button1MotionMask, GDK.Button2MotionMask,
 GDK.Button3MotionMask, GDK.ButtonPressMask, GDK.ButtonReleaseMask,
 GDK.KeyPressMask, GDK.KeyReleaseMask, GDK.EnterNotifyMask,
 GDK.LeaveNotifyMask, GDK.FocusChangeMask, GDK.StructureMask,
 GDK.PropertyChangeMask, GDK.VisibilityNotifyMask,
 GDK.ProximityInMask, GDK.ProximityOutMask and GDK.AllEventsMask</p>
</text></doc>
<method name='set_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='669'/>
<arguments><argument name='events'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_extension_events' homogen-type='method'><doc><text><p>Events is one of <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_ALL'>GDK_EXTENSION_EVENTS_ALL</ref>, <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_CURSOR'>GDK_EXTENSION_EVENTS_CURSOR</ref> and <ref resolved='predef::GTK.GDK_EXTENSION_EVENTS_NONE'>GDK_EXTENSION_EVENTS_NONE</ref></p>
</text></doc>
<method name='set_extension_events'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='682'/>
<arguments><argument name='events'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_flags' homogen-type='method'><doc><text><p>The flags that it makes sense to set are:
 GTK.CanFocus and GTK.CanDefault</p>
</text></doc>
<method name='set_flags'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='687'/>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_name' homogen-type='method'><doc><text><p>Set the name of the widget. The name is used when the rc-file is
 parsed, you can also parse your own resources by calling
 GTK.parse_rc() with a resource string. Example: 
 TODO</p>
</text></doc>
<method name='set_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='693'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_rc_style' homogen-type='method'><doc><text><p>Set the style from the .rc files</p>
</text></doc>
<method name='set_rc_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='701'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_scroll_adjustments' homogen-type='method'><doc><text><p>Set the scrolling (panning) adjustment objects for this widget.
 Returns 1 if it is possible to do so, and 0 otherwise.</p>
</text></doc>
<method name='set_scroll_adjustments'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='706'/>
<arguments><argument name='hadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument><argument name='vadjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_sensitive' homogen-type='method'><doc><text><p>True (1) or false (0). If true, the widget can receive events,
 otherwise the user cannot interact with the widget. Most widgets
 are drawn 'greyed' or more dim when they are unsensitive.</p>
</text></doc>
<method name='set_sensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='712'/>
<arguments><argument name='sensitivep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_state' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.STATE_ACTIVE'>STATE_ACTIVE</ref>, <ref resolved='predef::GTK.STATE_INSENSITIVE'>STATE_INSENSITIVE</ref>, <ref resolved='predef::GTK.STATE_NORMAL'>STATE_NORMAL</ref>, <ref resolved='predef::GTK.STATE_PRELIGHT'>STATE_PRELIGHT</ref> and <ref resolved='predef::GTK.STATE_SELECTED'>STATE_SELECTED</ref>.
 This function should normaly not be used directly.</p>
</text></doc>
<method name='set_state'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='719'/>
<arguments><argument name='state'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_style' homogen-type='method'><doc><text><p>Set the style to be associated with this widget</p>
</text></doc>
<method name='set_style'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='725'/>
<arguments><argument name='cf'><type><object resolved='predef::GTK.Style'>GTK.Style</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_uposition' homogen-type='method'><doc><text><p>Set the absolute coordinates of the widget relative to it's parent.</p>
</text></doc>
<method name='set_uposition'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='730'/>
<arguments><argument name='xpos'><type><int/></type></argument><argument name='ypos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_usize' homogen-type='method'><doc><text><p>Set the absolute size of the widget. It might resize itself anyway,
 but this size is used as is in most widgets. Beware of this
 function, it might produce unexpected results. 0 for any size means
 'keep old size'. When setting sizes of wtoplevel windows, it is
 preferable to use set_default_size</p>
</text></doc>
<method name='set_usize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='735'/>
<arguments><argument name='xsize'><type><int/></type></argument><argument name='ysize'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='shape_combine_mask' homogen-type='method'><doc><text><p>Set the shape of the widget, or, rather, it's window, to that of
 the supplied bitmap. Notice how the window behind the example
 window can be seen because of the rather odd shape the example window has.
<expr> GTK.Window( GTK.WINDOW_TOPLEVEL )-&gt;add(GTK.Label("A rather Oddly shaped\n" "Window\n" "Indeed\n" "Or what do you\nthink?\n" "This text\n" "should\n" "be long enough"))-&gt;shape_combine_mask( GDK.Bitmap(Image.image(100,100,255,255,255)-&gt;rotate(10,0,0,0) ), 20,20)</expr>
<image file='predef.GTK.Widget.shape_combine_mask.1.png' width='112' height='104'>../images/gtk_widget_shape_combine_mask.png</image></p>
<p> NOTE: The widget must be realized before this function can be used</p>
</text></doc>
<method name='shape_combine_mask'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='744'/>
<arguments><argument name='shape'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='yoffset'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show' homogen-type='method'><doc><text><p>Show the widget. Most (almost all) widgets must be shown to be
 visible on the screen.</p>
</text></doc>
<method name='show'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='755'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_all' homogen-type='method'><doc><text><p>Show this widget and all it's children</p>
</text></doc>
<method name='show_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='761'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_now' homogen-type='method'><doc><text><p>Show this widget and do not return until it is visible.</p>
</text></doc>
<method name='show_now'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='766'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='text_width' homogen-type='method'><doc><text><p>Returns the width, in pixels, the string would have if it was
 written with the default font in the style object assosiated with
 the widget.</p>
</text></doc>
<method name='text_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='771'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='unlock_accelerators' homogen-type='method'><doc><text><p>Make it possible to add new accelerators, and remove old ones,
 again. Use this after lock_accelerators()</p>
</text></doc>
<method name='unlock_accelerators'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='778'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unmap' homogen-type='method'><doc><text><p>Unmap the widget. Should normally not be called directly.</p>
</text></doc>
<method name='unmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='784'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unparent' homogen-type='method'><doc><text><p>Remove this widget from it's parent</p>
</text></doc>
<method name='unparent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='789'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unrealize' homogen-type='method'><doc><text><p>Unrealize this widget, and it's children, if nessesary</p>
</text></doc>
<method name='unrealize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='794'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unset_flags' homogen-type='method'><doc><text><p>The flags that it makes sense to unset are:
 GTK.CanFocus and GTK.CanDefault</p>
</text></doc>
<method name='unset_flags'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='799'/>
<arguments><argument name='flags'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='xoffset' homogen-type='method'><doc><text><p>Returns the x position of the upper left corner relative to the
 widgets window in pixels. For widgets that have their own window
 this will most likely be 0.</p>
</text></doc>
<method name='xoffset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='805'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='xsize' homogen-type='method'><doc><text><p>Returns the width of the widget in pixels.</p>
</text></doc>
<method name='xsize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='812'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='yoffset' homogen-type='method'><doc><text><p>Returns the y position of the upper left corner relative to the
 widgets window in pixels. For widgets that have their own window
 this will most likely be 0.</p>
</text></doc>
<method name='yoffset'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='817'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='ysize' homogen-type='method'><doc><text><p>Returns the height of the widget in pixels.</p>
</text></doc>
<method name='ysize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Widget.pike' first-line='824'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Tooltips'><doc><text><p>Tooltips are the messages that appear next to a widget when the
 mouse pointer is held over it for a short amount of time. They are
 especially helpful for adding more verbose descriptions of things
 such as buttons in a toolbar.</p>
<p> An individual tooltip belongs to a group of tooltips. A group is
 created with a call to GTK.Tooltips(). Every tooltip in the
 group can then be turned off with a call to disable()
 and enabled with enable().</p>
<p> The length of time the user must keep the mouse over a widget
 before the tip is shown, can be altered with set_delay(). This is
 set on a 'per group of tooltips' basis.</p>
<p> To assign a tip to a particular W(Widget), set_tip() is used.</p>
<p> The default appearance of all tooltips in a program is determined
 by the current gtk theme that the user has selected. To change the
 tooltip appearance manually, use set_colors(). Again, this is per
 group of tooltips.</p>
</text></doc><docgroup homogen-name='Data' homogen-type='inherit'><doc>
</doc>
<inherit name='Data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='24'/><classname resolved='predef::GTK.Data'>GTK.Data</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates an empty group of tooltips. This function initialises a
 GTK.Tooltips structure. Without at least one such structure, you
 can not add tips to your application.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable' homogen-type='method'><doc><text><p>Disable this tooltip collection</p>
</text></doc>
<method name='disable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='33'/>
<arguments/>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable' homogen-type='method'><doc><text><p>Enable this tooltip collection</p>
</text></doc>
<method name='enable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='38'/>
<arguments/>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='force_window' homogen-type='method'><doc><text><p>Realize the tooltip window (as returned from get_gdkwindow())</p>
</text></doc>
<method name='force_window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='43'/>
<arguments/>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_colors' homogen-type='method'><doc><text><p>Changes the foreground and background colors.</p>
</text></doc>
<method name='set_colors'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='48'/>
<arguments><argument name='foreground'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='background'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_delay' homogen-type='method'><doc><text><p>Set the delat (in seconds)</p>
</text></doc>
<method name='set_delay'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='53'/>
<arguments><argument name='delay'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tip' homogen-type='method'><doc><text><p>Adds a tooltip containing the message tip_text to the specified
 W(Widget).</p>
</text></doc>
<method name='set_tip'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Tooltips.pike' first-line='58'/>
<arguments><argument name='in'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Tooltips'>GTK.Tooltips</object></returntype>
</method>
</docgroup>
</class>

<class name='CTreeNode'><doc><text><p>This is one of the nodes (branch or leaf) of the CTree.
 They are the equivalent of row numbers in a normal CList.</p>
</text></doc><docgroup homogen-name='child' homogen-type='method'><doc><text><p>Returns the first child node</p>
</text></doc>
<method name='child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='6'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_expanded' homogen-type='method'><doc><text><p>Returns the previous sibling (the next on the same level)</p>
</text></doc>
<method name='get_expanded'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='11'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_is_leaf' homogen-type='method'><doc><text><p>Returns the previous sibling (the next on the same level)</p>
</text></doc>
<method name='get_is_leaf'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='16'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_level' homogen-type='method'><doc><text><p>Returns the previous sibling (the next on the same level)</p>
</text></doc>
<method name='get_level'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='21'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='next' homogen-type='method'><doc><text><p>Returns the next sibling (the next on the same  level)</p>
</text></doc>
<method name='next'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='26'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parent' homogen-type='method'><doc><text><p>Returns the parent node</p>
</text></doc>
<method name='parent'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='31'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>GTK.CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prev' homogen-type='method'><doc><text><p>Returns the previous sibling (the next on the same level)</p>
</text></doc>
<method name='prev'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='36'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeNode'>CTreeNode</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='row' homogen-type='method'><doc><text><p>Returns the CTreeRow associated with this CTreeNode.
 <b>DEPRECATED</b>, all CTreeRow functions are also available
 directly in this object.</p>
</text></doc>
<method name='row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CTreeNode.pike' first-line='41'/>
<arguments/>
<returntype><object resolved='predef::GTK.CTreeRow'>GTK.CTreeRow</object></returntype>
</method>
</docgroup>
</class>

<class name='Vruler'><doc><text><p>Ruler widgets are used to indicate the location of the mouse
 pointer in a given window. A window can have a vertical ruler
 spanning across the width and a horizontal ruler spanning down the
 height. A small triangular indicator on the ruler shows the exact
 location of the pointer relative to the ruler.</p>
<p><expr> GTK.Vruler()-&gt;set_metric(GTK.PIXELS)-&gt;set_range(0.0,100.0,50.0,100.0)-&gt;draw_ticks()-&gt;draw_pos()-&gt;set_usize(30,50)</expr>
<image file='predef.GTK.Vruler.1.png' width='30' height='50'>../images/gtk_vruler.png</image></p>
<p><expr> GTK.Vruler()-&gt;set_metric(GTK.CENTIMETERS)-&gt;set_range(0.0,100.0,50.0,100.0)-&gt;draw_ticks()-&gt;draw_pos()-&gt;set_usize(30,50)</expr>
<image file='predef.GTK.Vruler.2.png' width='30' height='50'>../images/gtk_vruler_2.png</image></p>
<p><expr> GTK.Vruler()-&gt;set_usize(30,50)</expr>
<image file='predef.GTK.Vruler.3.png' width='30' height='50'>../images/gtk_vruler_3.png</image></p>
</text></doc><docgroup homogen-name='Ruler' homogen-type='inherit'><doc>
</doc>
<inherit name='Ruler'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vruler.pike' first-line='19'/><classname resolved='predef::GTK.Ruler'>GTK.Ruler</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new vruler widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vruler.pike' first-line='21'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Vruler'>GTK.Vruler</object></returntype>
</method>
</docgroup>
</class>

<class name='Calendar'><doc><text><p>A calendar widget.
<expr> GTK.Calendar();</expr>
<image file='predef.GTK.Calendar.1.png' width='187' height='113'>../images/gtk_calendar.png</image></p>
<p><expr> GTK.Calendar()-&gt;select_day( 16 );</expr>
<image file='predef.GTK.Calendar.2.png' width='187' height='113'>../images/gtk_calendar_2.png</image></p>
<p>  Signals:
 <b>day_selected</b></p>
<p> <b>day_selected_double_click</b></p>
<p> <b>month_changed</b></p>
<p> <b>next_month</b></p>
<p> <b>next_year</b></p>
<p> <b>prev_month</b></p>
<p> <b>prev_year</b></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='26'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='clear_marks' homogen-type='method'><doc><text><p>Remove all day markers</p>
</text></doc>
<method name='clear_marks'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='28'/>
<arguments/>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new calendar widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='33'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='display_options' homogen-type='method'><doc><text><p>Bitwise or of one or more of <ref resolved='predef::GTK.CALENDAR_NO_MONTH_CHANGE'>CALENDAR_NO_MONTH_CHANGE</ref>, <ref resolved='predef::GTK.CALENDAR_SHOW_DAY_NAMES'>CALENDAR_SHOW_DAY_NAMES</ref>, <ref resolved='predef::GTK.CALENDAR_SHOW_HEADING'>CALENDAR_SHOW_HEADING</ref>, <ref resolved='predef::GTK.CALENDAR_SHOW_WEEK_NUMBERS'>CALENDAR_SHOW_WEEK_NUMBERS</ref> and <ref resolved='predef::GTK.CALENDAR_WEEK_START_MONDAY'>CALENDAR_WEEK_START_MONDAY</ref>.</p>
</text></doc>
<method name='display_options'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='38'/>
<arguments><argument name='options'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='freeze' homogen-type='method'><doc><text><p>Suspend all dynamic updating of the widget</p>
</text></doc>
<method name='freeze'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='43'/>
<arguments/>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_date' homogen-type='method'><doc><text><p>returns a mapping:
 ([ "year":year, "month":month, "day":day ])</p>
</text></doc>
<method name='get_date'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='48'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_day' homogen-type='method'><doc><text><p>Return an array of 6x7 days, representing the cells in the
 currently viewed calendar month.</p>
</text></doc>
<method name='get_day'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='54'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_day_month' homogen-type='method'><doc><text><p>Return an array of 6x7 days, representing the cells in the
 currently viewed calendar month.  The value is the day of month.</p>
</text></doc>
<method name='get_day_month'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='60'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_focus_col' homogen-type='method'><doc><text><p>The currently focused column</p>
</text></doc>
<method name='get_focus_col'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='66'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_focus_row' homogen-type='method'><doc><text><p>The currently focused row</p>
</text></doc>
<method name='get_focus_row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='71'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_highlight_col' homogen-type='method'><doc><text><p>The currently highlighted column</p>
</text></doc>
<method name='get_highlight_col'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='76'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_highlight_row' homogen-type='method'><doc><text><p>The currently highlighted row</p>
</text></doc>
<method name='get_highlight_row'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='81'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_marked_dates' homogen-type='method'><doc><text><p>Returns an array (with 31 elements) with 1es and 0es.</p>
</text></doc>
<method name='get_marked_dates'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='86'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_month' homogen-type='method'><doc><text><p>The current month</p>
</text></doc>
<method name='get_month'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='91'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_num_marked_dates' homogen-type='method'><doc><text><p>The number of days that are marked</p>
</text></doc>
<method name='get_num_marked_dates'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='96'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_selected_day' homogen-type='method'><doc><text><p>The currently selected day</p>
</text></doc>
<method name='get_selected_day'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='101'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_year' homogen-type='method'><doc><text><p>The current year</p>
</text></doc>
<method name='get_year'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='106'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mark_day' homogen-type='method'><doc><text><p>Mark a day</p>
</text></doc>
<method name='mark_day'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='111'/>
<arguments><argument name='day_of_month'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_day' homogen-type='method'><doc><text><p>Select a certain day of the currently selected month</p>
</text></doc>
<method name='select_day'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='116'/>
<arguments><argument name='day_of_month'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_month' homogen-type='method'><doc><text><p>Select the month to be viewed.</p>
</text></doc>
<method name='select_month'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='121'/>
<arguments><argument name='month'><type><int/></type></argument><argument name='year'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_marked_date_color' homogen-type='method'><doc><text><p>Set the color to use to mark dates</p>
</text></doc>
<method name='set_marked_date_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='126'/>
<arguments><argument name='index'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='thaw' homogen-type='method'><doc><text><p>Resume dynamic updating of the widget</p>
</text></doc>
<method name='thaw'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='131'/>
<arguments/>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='unmark_day' homogen-type='method'><doc><text><p>Unmark a day</p>
</text></doc>
<method name='unmark_day'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Calendar.pike' first-line='136'/>
<arguments><argument name='day_of_month'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Calendar'>GTK.Calendar</object></returntype>
</method>
</docgroup>
</class>

<class name='CheckButton'><doc><text><p>Check buttons inherent many properties and functions from the the
 toggle buttons, but look a little different. Rather than
 being buttons with text inside them, they are small squares with
 the text to the right of them. These are often used for toggling
 options on and off in applications.
<expr> GTK.Check_button( "title" )</expr>
<image file='predef.GTK.CheckButton.1.png' width='219' height='32'>../images/gtk_checkbutton.png</image></p>
</text></doc><docgroup homogen-name='ToggleButton' homogen-type='inherit'><doc>
</doc>
<inherit name='ToggleButton'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckButton.pike' first-line='12'/><classname resolved='predef::GTK.ToggleButton'>GTK.ToggleButton</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The argument, if specified, is the label of the item.
 If no label is specified, use object-&gt;add() to add some
 other widget (such as an pixmap or image widget)</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckButton.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments><argument name='label'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.CheckButton'>GTK.CheckButton</object></returntype>
</method>
</docgroup>
</class>

<class name='FontSelectionDialog'><doc><text><p>The GtkFontSelectionDialog widget is a dialog box for selecting a font.</p>
<p> To set the font which is initially selected, use set_font_name().</p>
<p> To get the selected font use get_font() or get_font_name().</p>
<p> To change the text which is shown in the preview area, use
 set_preview_text().</p>
<p> The base filter is not yet implemented in Pike GTK.
 <i>
 Filters can be used to limit the fonts shown. There are 2 filters in
 the GtkFontSelectionDialog - a base filter and a user filter. The
 base filter can not be changed by the user, so this can be used when
 the user must choose from the restricted set of fonts (e.g. for a
 terminal-type application you may want to force the user to select a
 fixed-width font). The user filter can be changed or reset by the
 user, by using the 'Reset Filter' button or changing the options on
 the 'Filter' page of the dialog.
 </i>
<expr> GTK.FontSelectionDialog("Select a font")</expr>
<image file='predef.GTK.FontSelectionDialog.1.png' width='452' height='353'>../images/gtk_fontselectiondialog.png</image></p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='27'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new font selection dialog with the specified window title</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='29'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FontSelectionDialog'>GTK.FontSelectionDialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_apply_button' homogen-type='method'><doc><text><p>The apply button</p>
</text></doc>
<method name='get_apply_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='34'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cancel_button' homogen-type='method'><doc><text><p>The cancel button</p>
</text></doc>
<method name='get_cancel_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='39'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fontsel' homogen-type='method'><doc><text><p>The W(FontSelection) widget</p>
</text></doc>
<method name='get_fontsel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='44'/>
<arguments/>
<returntype><object resolved='predef::GTK.FontSelection'>GTK.FontSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ok_button' homogen-type='method'><doc><text><p>The ok button</p>
</text></doc>
<method name='get_ok_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FontSelectionDialog.pike' first-line='49'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
</class>

<class name='MenuItem'><doc><text><p>Menu items, to be added to menues.</p>
</text></doc><docgroup homogen-name='Item' homogen-type='inherit'><doc>
</doc>
<inherit name='Item'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='5'/><classname resolved='predef::GTK.Item'>GTK.Item</classname></inherit>
</docgroup>
<docgroup homogen-name='activate' homogen-type='method'><doc><text><p>Emulate an activate signal</p>
</text></doc>
<method name='activate'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='7'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='configure' homogen-type='method'><doc><text><p>First argument is 'show_toggle_indicator', second is
 'show_submenu_indicator'.</p>
</text></doc>
<method name='configure'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='12'/>
<arguments><argument name='toggle_indicator'><type><int/></type></argument><argument name='submenu_indicator'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>If a string is supplied, a W(Label) widget is created using that
 string and added to the item. Otherwise, you should add another
 widget to the list item with -&amp;gt;add().</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='18'/><modifiers><static/></modifiers>
<arguments><argument name='label'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='deselect' homogen-type='method'><doc><text><p>Emulate a deselect signal</p>
</text></doc>
<method name='deselect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='25'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_accelerator_width' homogen-type='method'><doc><text><p>The width of the accelerator string, in pixels</p>
</text></doc>
<method name='get_accelerator_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='30'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_right_justify' homogen-type='method'><doc><text><p>Is the widget right justified?</p>
</text></doc>
<method name='get_right_justify'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='35'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_show_submenu_indicator' homogen-type='method'><doc><text><p>Should the submenu indicator be shown?</p>
</text></doc>
<method name='get_show_submenu_indicator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_show_toggle_indicator' homogen-type='method'><doc><text><p>Should the toggle indicator be shown?</p>
</text></doc>
<method name='get_show_toggle_indicator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='45'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_submenu_direction' homogen-type='method'><doc><text><p>The direction the submenu will be shown in. One of <ref resolved='predef::GTK.DIR_DOWN'>DIR_DOWN</ref>, <ref resolved='predef::GTK.DIR_LEFT'>DIR_LEFT</ref>, <ref resolved='predef::GTK.DIR_RIGHT'>DIR_RIGHT</ref>, <ref resolved='predef::GTK.DIR_TAB_BACKWARD'>DIR_TAB_BACKWARD</ref>, <ref resolved='predef::GTK.DIR_TAB_FORWARD'>DIR_TAB_FORWARD</ref> and <ref resolved='predef::GTK.DIR_UP'>DIR_UP</ref></p>
</text></doc>
<method name='get_submenu_direction'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='50'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_submenu_placement' homogen-type='method'><doc><text><p>The placement of the submenu.</p>
</text></doc>
<method name='get_submenu_placement'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='55'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_toggle_size' homogen-type='method'><doc><text><p>The size of the toggle indicator</p>
</text></doc>
<method name='get_toggle_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='60'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_submenu' homogen-type='method'><doc><text><p>Remove the submenu for this menu button.</p>
</text></doc>
<method name='remove_submenu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='65'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='right_justify' homogen-type='method'><doc><text><p>Make the menu item stick to the right edge of it's container.</p>
</text></doc>
<method name='right_justify'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='70'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='select' homogen-type='method'><doc><text><p>Emulate a select signal</p>
</text></doc>
<method name='select'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='75'/>
<arguments/>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_placement' homogen-type='method'><doc><text><p>(sub menu placement) One of <ref resolved='predef::GTK.DIRECTION_LEFT'>DIRECTION_LEFT</ref> and <ref resolved='predef::GTK.DIRECTION_RIGHT'>DIRECTION_RIGHT</ref></p>
</text></doc>
<method name='set_placement'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='80'/>
<arguments><argument name='dir'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_submenu' homogen-type='method'><doc><text><p>Set the submenu for this menu button.</p>
</text></doc>
<method name='set_submenu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/MenuItem.pike' first-line='85'/>
<arguments><argument name='menu'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.MenuItem'>GTK.MenuItem</object></returntype>
</method>
</docgroup>
</class>

<class name='Object'><doc><text><p>The basic GTK class.
 All other GTK classes inherit this class.
 The only user-callable functions are the signal related ones.</p>
<p>  Signals:
 <b>destroy</b>
 Called when the object is destroyed</p>
</text></doc><docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='12'/>
<arguments/>
<returntype><object resolved='predef::GTK.Object'>GTK.Object</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_block' homogen-type='method'><doc><text><p>Temporarily block a signal handler. No signals will be received
 while the hander is blocked.
 See signal connect for more info.</p>
</text></doc>
<method name='signal_block'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='15'/>
<arguments><argument name='signal_id'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Object'>GTK.Object</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_connect' homogen-type='method'><doc><text><p>Connect a signal to a pike function. The function will be called with
 the last argument to this function as it's first argument (defaults
 to 0), the second argument is always the widget, any other
 arguments are the ones supplied by GTK.</p>
<p> The return value of this function can be used to remove a signal
 with signal_disconnect, and block and unblock the signal will
 signal_block and signal_unblock.</p>
</text></doc>
<method name='signal_connect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='22'/>
<arguments><argument name='signal'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='callback_arg'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_connect_new' homogen-type='method'><doc><text><p>Connect a signal to a pike function.</p>
<p> This function differs from the signal_connect function in how it
 calls the callback function.</p>
<p> The old interface:
 <pre>
   void signal_handler( mixed my_arg, GTK.Object object,
                        mixed ... signal_arguments )
 </pre>
 The new interface:
 <pre>
   void signal_handler( mixed ... signal_arguments,
                        mixed my_arg, GTK.Object object )
 </pre></p>
<p> The return value of this function can be used to remove a signal
 with signal_disconnect, and block and unblock the signal will
 signal_block and signal_unblock.</p>
</text></doc>
<method name='signal_connect_new'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='35'/>
<arguments><argument name='signal'><type><string/></type></argument><argument name='callback'><type><function/></type></argument><argument name='callback_arg'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_disconnect' homogen-type='method'><doc><text><p>Remove a signal formerly added by signal_connect. The argument is
 the return value of signal_connect(). See signal connect for more info.</p>
</text></doc>
<method name='signal_disconnect'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='64'/>
<arguments><argument name='signal_id'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Object'>GTK.Object</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_emit' homogen-type='method'><doc><text><p>Halt the emit of the current named signal.
 Useful in signal handlers when you want to override the behaviour
 of some default signal handler (key press events, as an example)
 See signal_connect.</p>
</text></doc>
<method name='signal_emit'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='70'/>
<arguments><argument name='signal_name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Object'>GTK.Object</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='signal_unblock' homogen-type='method'><doc><text><p>Unblock a formerly blocked signal handler. See signal_block and
 signal_connect for more info.</p>
</text></doc>
<method name='signal_unblock'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Object.pike' first-line='78'/>
<arguments><argument name='signal_id'><type><mixed/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Object'>GTK.Object</object></returntype>
</method>
</docgroup>
</class>

<class name='AccelLabel'><doc><text><p>A label for accelerators.</p>
</text></doc><docgroup homogen-name='Label' homogen-type='inherit'><doc>
</doc>
<inherit name='Label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelLabel.pike' first-line='5'/><classname resolved='predef::GTK.Label'>GTK.Label</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelLabel.pike' first-line='7'/><modifiers><static/></modifiers>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.AccelLabel'>GTK.AccelLabel</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_accel_width' homogen-type='method'><doc/>
<method name='get_accel_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelLabel.pike' first-line='10'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='refetch' homogen-type='method'><doc/>
<method name='refetch'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelLabel.pike' first-line='13'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_accel_widget' homogen-type='method'><doc/>
<method name='set_accel_widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/AccelLabel.pike' first-line='16'/>
<arguments><argument name='accel_widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.AccelLabel'>GTK.AccelLabel</object></returntype>
</method>
</docgroup>
</class>

<class name='ButtonBox'><doc><text><p>More or less equivalent to a normal box, but you can set a few
 layout schemes that are not available for normal boxes.
 See the hbox and vbox documentation for examples.</p>
</text></doc><docgroup homogen-name='Box' homogen-type='inherit'><doc>
</doc>
<inherit name='Box'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='7'/><classname resolved='predef::GTK.Box'>GTK.Box</classname></inherit>
</docgroup>
<docgroup homogen-name='get_child_ipadding' homogen-type='method'><doc><text><p>Return the default inter-child padding ([ "x":xpadding, "y":ypadding ])</p>
</text></doc>
<method name='get_child_ipadding'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='9'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_child_size' homogen-type='method'><doc><text><p>Return the child size as ([ "x":xsize, "y":ysize ])</p>
</text></doc>
<method name='get_child_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='14'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_layout' homogen-type='method'><doc><text><p>Returns the currently configured layout.
 One of  <ref resolved='predef::GTK.BUTTONBOX_DEFAULT_STYLE'>BUTTONBOX_DEFAULT_STYLE</ref>, <ref resolved='predef::GTK.BUTTONBOX_EDGE'>BUTTONBOX_EDGE</ref>, <ref resolved='predef::GTK.BUTTONBOX_END'>BUTTONBOX_END</ref>, <ref resolved='predef::GTK.BUTTONBOX_SPREAD'>BUTTONBOX_SPREAD</ref> and <ref resolved='predef::GTK.BUTTONBOX_START'>BUTTONBOX_START</ref></p>
</text></doc>
<method name='get_layout'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='19'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_spacing' homogen-type='method'><doc><text><p>Return the spacing that is added between the buttons</p>
</text></doc>
<method name='get_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='25'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_child_ipadding' homogen-type='method'><doc><text><p>Set the padding for a specific child.</p>
</text></doc>
<method name='set_child_ipadding'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='30'/>
<arguments><argument name='child_number'><type><int/></type></argument><argument name='child_padding'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_child_size' homogen-type='method'><doc><text><p>Set the size of a specified child</p>
</text></doc>
<method name='set_child_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='35'/>
<arguments><argument name='child_number'><type><int/></type></argument><argument name='child_size'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_layout' homogen-type='method'><doc><text><p>layout is one of <ref resolved='predef::GTK.BUTTONBOX_DEFAULT_STYLE'>BUTTONBOX_DEFAULT_STYLE</ref>, <ref resolved='predef::GTK.BUTTONBOX_EDGE'>BUTTONBOX_EDGE</ref>, <ref resolved='predef::GTK.BUTTONBOX_END'>BUTTONBOX_END</ref>, <ref resolved='predef::GTK.BUTTONBOX_SPREAD'>BUTTONBOX_SPREAD</ref> and <ref resolved='predef::GTK.BUTTONBOX_START'>BUTTONBOX_START</ref></p>
</text></doc>
<method name='set_layout'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='40'/>
<arguments><argument name='layout'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_spacing' homogen-type='method'><doc><text><p>in pixels</p>
</text></doc>
<method name='set_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ButtonBox.pike' first-line='45'/>
<arguments><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</object></returntype>
</method>
</docgroup>
</class>

<class name='Vscrollbar'><doc><text><p>General documentation: See W(Scrollbar)
<expr> GTK.Vscrollbar(GTK.Adjustment())-&gt;set_usize(15,60)</expr>
<image file='predef.GTK.Vscrollbar.1.png' width='15' height='60'>../images/gtk_vscrollbar.png</image></p>
</text></doc><docgroup homogen-name='Scrollbar' homogen-type='inherit'><doc>
</doc>
<inherit name='Scrollbar'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vscrollbar.pike' first-line='9'/><classname resolved='predef::GTK.Scrollbar'>GTK.Scrollbar</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new vscrollbar widget.
 The adjustment argument can either be an existing W(Adjustment), or
 0, in which case one will be created for you. Specifying 0 might
 actually be useful in this case, if you wish to pass the newly
 automatically created adjustment to the constructor function of
 some other widget which will configure it for you, such as a text
 widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vscrollbar.pike' first-line='11'/><modifiers><static/></modifiers>
<arguments><argument name='pos'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Vscrollbar'>GTK.Vscrollbar</object></returntype>
</method>
</docgroup>
</class>

<class name='Button'><doc><text><p>A container that can only contain one child, and accepts events.
 draws a bevelbox around itself.
<expr> GTK.Button("A button")</expr>
<image file='predef.GTK.Button.1.png' width='48' height='19'>../images/gtk_button.png</image></p>
<p><expr> GTK.Button("A button\nwith multiple lines\nof text")</expr>
<image file='predef.GTK.Button.2.png' width='97' height='45'>../images/gtk_button_2.png</image></p>
<p><expr> GTK.Button()-&gt;add(GTK.Image(GDK.Image(0)-&gt;set(Image.image(100,40)-&gt;test())))</expr>
<image file='predef.GTK.Button.3.png' width='219' height='32'>../images/gtk_button_3.png</image></p>
<p>  Signals:
 <b>clicked</b>
 Called when the button is pressed, and then released</p>
<p> <b>enter</b>
 Called when the mouse enters the button</p>
<p> <b>leave</b>
 Called when the mouse leaves the button</p>
<p> <b>pressed</b>
 Called when the button is pressed</p>
<p> <b>released</b>
 Called when the button is released</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='36'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='clicked' homogen-type='method'><doc><text><p>Emulate a 'clicked' event (press followed by release).</p>
</text></doc>
<method name='clicked'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='38'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>If a string is supplied, a W(Label) is created and added to the button.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='43'/><modifiers><static/></modifiers>
<arguments><argument name='label_text'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='enter' homogen-type='method'><doc><text><p>Emulate a 'enter' event.</p>
</text></doc>
<method name='enter'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='48'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='child' homogen-type='method'><doc><text><p>The (one and only) child of this container.</p>
</text></doc>
<method name='child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='53'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_relief' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.RELIEF_HALF'>RELIEF_HALF</ref>, <ref resolved='predef::GTK.RELIEF_NONE'>RELIEF_NONE</ref> and <ref resolved='predef::GTK.RELIEF_NORMAL'>RELIEF_NORMAL</ref>, set with set_relief()</p>
</text></doc>
<method name='get_relief'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='58'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='leave' homogen-type='method'><doc><text><p>Emulate a 'leave' event.</p>
</text></doc>
<method name='leave'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='63'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pressed' homogen-type='method'><doc><text><p>Emulate a 'press' event.</p>
</text></doc>
<method name='pressed'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='68'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='released' homogen-type='method'><doc><text><p>Emulate a 'release' event.</p>
</text></doc>
<method name='released'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='73'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_relief' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.RELIEF_HALF'>RELIEF_HALF</ref>, <ref resolved='predef::GTK.RELIEF_NONE'>RELIEF_NONE</ref> and <ref resolved='predef::GTK.RELIEF_NORMAL'>RELIEF_NORMAL</ref></p>
</text></doc>
<method name='set_relief'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Button.pike' first-line='78'/>
<arguments><argument name='newstyle'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
</class>

<class name='HandleBox'><doc><text><p>The contents of a handle box can be 'dragged' out of the box by the user.
 The contents will then be placed in a separate window.
<expr> GTK.HandleBox()-&gt;add(GTK.Label("The contents"))</expr>
<image file='predef.GTK.HandleBox.1.png' width='75' height='13'>../images/gtk_handlebox.png</image></p>
<p>  Signals:
 <b>child_attached</b>
 Called when a new child is added to the box</p>
<p> <b>child_detached</b>
 Called when a child is removed from the box</p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='18'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new handle box widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.HandleBox'>GTK.HandleBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_child_detached' homogen-type='method'><doc><text><p>Is the child detatched?</p>
</text></doc>
<method name='get_child_detached'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='25'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_float_window_mapped' homogen-type='method'><doc><text><p>Is the floating window mapped?</p>
</text></doc>
<method name='get_float_window_mapped'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='30'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_handle_position' homogen-type='method'><doc><text><p>The position of the handle. One of <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref></p>
</text></doc>
<method name='get_handle_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='35'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_in_drag' homogen-type='method'><doc><text><p>1 if the window is beeing dragged around right now.</p>
</text></doc>
<method name='get_in_drag'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_shrink_on_detach' homogen-type='method'><doc><text><p>True if the container should shrink when the child is detatched</p>
</text></doc>
<method name='get_shrink_on_detach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='45'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_snap_edge' homogen-type='method'><doc><text><p>The edge to snap to. One of <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref>, or -1 for unset.</p>
</text></doc>
<method name='get_snap_edge'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='50'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_handle_position' homogen-type='method'><doc><text><p>The position of the handle. One of <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref></p>
</text></doc>
<method name='set_handle_position'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='55'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.HandleBox'>GTK.HandleBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_shrink_on_detach' homogen-type='method'><doc><text><p>True if the container should shrink when the child is detatched</p>
</text></doc>
<method name='set_set_shrink_on_detach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='60'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_shadow_type' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref></p>
</text></doc>
<method name='set_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='65'/>
<arguments><argument name='shadow_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.HandleBox'>GTK.HandleBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_snap_edge' homogen-type='method'><doc><text><p>The edge to snap to. One of <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref>, or -1 for unset.</p>
</text></doc>
<method name='set_snap_edge'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/HandleBox.pike' first-line='70'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.HandleBox'>GTK.HandleBox</object></returntype>
</method>
</docgroup>
</class>

<class name='Progress'><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='3'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='configure' homogen-type='method'><doc><text><p>Sets the current value, the minimum value and the maximum value.
 The default min and max are 0.0 and 1.0 respectively.</p>
</text></doc>
<method name='configure'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='5'/>
<arguments><argument name='value'><type><float/></type></argument><argument name='min'><type><float/></type></argument><argument name='max'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_activity_mode' homogen-type='method'><doc><text><p>The currently set activity mode.</p>
</text></doc>
<method name='get_activity_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='11'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_current_percentage' homogen-type='method'><doc><text><p>Returns a float between 0.0 and 1.0</p>
</text></doc>
<method name='get_current_percentage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='16'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_current_text' homogen-type='method'><doc><text><p>Return the current text (see set_format_string)</p>
</text></doc>
<method name='get_current_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='21'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_format' homogen-type='method'><doc><text><p>The format used to convert the value to a the text</p>
</text></doc>
<method name='get_format'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='26'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_percentage_from_value' homogen-type='method'><doc><text><p>Returns a float between 0.0 and 1.0</p>
</text></doc>
<method name='get_percentage_from_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='31'/>
<arguments><argument name='value'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_show_text' homogen-type='method'><doc><text><p>1 if the text will be shown</p>
</text></doc>
<method name='get_show_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='36'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text_from_value' homogen-type='method'><doc><text><p>Formats 'value' and returns it as a text.</p>
</text></doc>
<method name='get_text_from_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='41'/>
<arguments><argument name='value'><type><float/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value' homogen-type='method'><doc><text><p>Return the current value</p>
</text></doc>
<method name='get_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='46'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_x_align' homogen-type='method'><doc><text><p>The text alignment, 0.0 is leftmost, 1.0 is rightmost</p>
</text></doc>
<method name='get_x_align'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='51'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_y_align' homogen-type='method'><doc><text><p>The text alignment, 0.0 is topmost, 1.0 is bottommost</p>
</text></doc>
<method name='get_y_align'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='56'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_activity_mode' homogen-type='method'><doc><text><p>As well as indicating the amount of progress that has occured, the
 progress bar may be set to just indicate that there is some
 activity. This can be useful in situations where progress cannot be
 measured against a value range.
 Mode is:
 1: active
 0: inactive</p>
</text></doc>
<method name='set_activity_mode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='61'/>
<arguments><argument name='modep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_adjustment' homogen-type='method'><doc><text><p>Sets the adjustment to use. See the adjustment documentation for more info</p>
</text></doc>
<method name='set_adjustment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='73'/>
<arguments><argument name='adjustment'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_format_string' homogen-type='method'><doc><text><p>More or less like sprintf.
 %[field width][character]
 0&amp;lt;=width&amp;gt;=2
 Supported characters:
 <pre>
 %: Insert a %
 p or P: The percentage completed, with 'digits' number of decimals
 v or V: The actual value, with digits decimals.
 l or L: The lower value (from the adjustment)
 u or U: The higer value (from the adjustment)
 %: Insert a %
 </pre>The default format is '%P%%'</p>
</text></doc>
<method name='set_format_string'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='78'/>
<arguments><argument name='format'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_percentage' homogen-type='method'><doc><text><p>Sets the value (between 0.0 and 1.0). Uses the min and max values.</p>
</text></doc>
<method name='set_percentage'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='96'/>
<arguments><argument name='pct'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_text' homogen-type='method'><doc><text><p>If true, write a text in the progress bar.</p>
</text></doc>
<method name='set_show_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='101'/>
<arguments><argument name='textp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text_alignment' homogen-type='method'><doc><text><p>The location for the text in the progress bar.
 xalign is between 0.0 (leftmost) and 1.0 (rightmost)
 yalign is between 0.0 (topmost) and 1.0 (bottommost)</p>
<p> Default is xalign == yalign == 0.5</p>
</text></doc>
<method name='set_text_alignment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='106'/>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Set the value.</p>
</text></doc>
<method name='set_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Progress.pike' first-line='116'/>
<arguments><argument name='value'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Progress'>GTK.Progress</object></returntype>
</method>
</docgroup>
</class>

<class name='Arrow'><doc><text><p>An arrow pointing in one of four directions. The 'etched' shadow
 types does not work.
<expr> GTK.Arrow(GTK.ARROW_UP, GTK.SHADOW_OUT)</expr>
<image file='predef.GTK.Arrow.1.png' width='11' height='11'>../images/gtk_arrow.png</image></p>
<p><expr> GTK.Arrow(GTK.ARROW_LEFT, GTK.SHADOW_IN)</expr>
<image file='predef.GTK.Arrow.2.png' width='11' height='11'>../images/gtk_arrow_2.png</image></p>
<p><expr> GTK.Arrow(GTK.ARROW_RIGHT, GTK.SHADOW_IN)</expr>
<image file='predef.GTK.Arrow.3.png' width='11' height='11'>../images/gtk_arrow_3.png</image></p>
<p><expr> GTK.Arrow(GTK.ARROW_DOWN, GTK.SHADOW_OUT)</expr>
<image file='predef.GTK.Arrow.4.png' width='11' height='11'>../images/gtk_arrow_4.png</image></p>
</text></doc><docgroup homogen-name='Misc' homogen-type='inherit'><doc>
</doc>
<inherit name='Misc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Arrow.pike' first-line='18'/><classname resolved='predef::GTK.Misc'>GTK.Misc</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>First argument is one of <ref resolved='predef::GTK.ARROW_DOWN'>ARROW_DOWN</ref>, <ref resolved='predef::GTK.ARROW_LEFT'>ARROW_LEFT</ref>, <ref resolved='predef::GTK.ARROW_RIGHT'>ARROW_RIGHT</ref> and <ref resolved='predef::GTK.ARROW_UP'>ARROW_UP</ref>, second one of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref>.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Arrow.pike' first-line='20'/><modifiers><static/></modifiers>
<arguments><argument name='arrow_type'><type><int/></type></argument><argument name='shadow_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Arrow'>GTK.Arrow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_arrow_type' homogen-type='method'><doc><text><p>Return the arrow type. One of <ref resolved='predef::GTK.ARROW_DOWN'>ARROW_DOWN</ref>, <ref resolved='predef::GTK.ARROW_LEFT'>ARROW_LEFT</ref>, <ref resolved='predef::GTK.ARROW_RIGHT'>ARROW_RIGHT</ref> and <ref resolved='predef::GTK.ARROW_UP'>ARROW_UP</ref>.</p>
</text></doc>
<method name='get_arrow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Arrow.pike' first-line='25'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_shadow_type' homogen-type='method'><doc><text><p>Return the shadow type. One of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref>.</p>
</text></doc>
<method name='get_shadow_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Arrow.pike' first-line='30'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>First argument is one of <ref resolved='predef::GTK.ARROW_DOWN'>ARROW_DOWN</ref>, <ref resolved='predef::GTK.ARROW_LEFT'>ARROW_LEFT</ref>, <ref resolved='predef::GTK.ARROW_RIGHT'>ARROW_RIGHT</ref> and <ref resolved='predef::GTK.ARROW_UP'>ARROW_UP</ref>, second one of <ref resolved='predef::GTK.SHADOW_ETCHED_IN'>SHADOW_ETCHED_IN</ref>, <ref resolved='predef::GTK.SHADOW_ETCHED_OUT'>SHADOW_ETCHED_OUT</ref>, <ref resolved='predef::GTK.SHADOW_IN'>SHADOW_IN</ref>, <ref resolved='predef::GTK.SHADOW_NONE'>SHADOW_NONE</ref> and <ref resolved='predef::GTK.SHADOW_OUT'>SHADOW_OUT</ref>.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Arrow.pike' first-line='35'/>
<arguments><argument name='arrow_type'><type><int/></type></argument><argument name='shadow_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Arrow'>GTK.Arrow</object></returntype>
</method>
</docgroup>
</class>

<class name='PixmapMenuItem'><doc><text><p>GtkPixmapMenuItem works like a normal GTK menu item, but you can
 insert a arbitrary widget (most often a pixmap widget), which is
 displayed at the left side. The advantage is that indentation is
 handled the same way as GTK does (i.e if you create a menu with a
 gtk_check_menu_item, all normal menu items are automatically
 indented by GTK - so if you use a normal menu item to display
 pixmaps at the left side, the pixmaps will be indented, which is
 not what you want. This widget solves the problem).</p>
</text></doc><docgroup homogen-name='MenuItem' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuItem'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/PixmapMenuItem.pike' first-line='12'/><classname resolved='predef::GTK.MenuItem'>GTK.MenuItem</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new pixmap menu item.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/PixmapMenuItem.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.PixmapMenuItem'>GTK.PixmapMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pixmap' homogen-type='method'><doc><text><p>Set the pixmap of the menu item.</p>
</text></doc>
<method name='set_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/PixmapMenuItem.pike' first-line='19'/>
<arguments><argument name='pixmap'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.PixmapMenuItem'>GTK.PixmapMenuItem</object></returntype>
</method>
</docgroup>
</class>

<class name='Notebook'><doc><text><p>The NoteBook Widget is a collection of 'pages' that overlap each
 other, each page contains different information. This widget has
 become more common lately in GUI programming, and it is a good way
 to show blocks similar information that warrant separation in their
 display.</p>
<p><expr> GTK.Notebook( )-&gt;set_tab_pos( GTK.POS_LEFT )-&gt;append_page( GTK.Label("Page 1\nContents"), GTK.Label("Page 1"))-&gt;append_page( GTK.Label(""), GTK.Label("Page 2"))-&gt;append_page(GTK.Label("Page 3 contents\nare here!"), GTK.Label("Page 3"))</expr>
<image file='predef.GTK.Notebook.1.png' width='126' height='71'>../images/gtk_notebook.png</image></p>
<p><expr> GTK.Notebook( )-&gt;set_tab_pos( GTK.POS_TOP )-&gt;append_page( GTK.Label("Page 1\nContents"), GTK.Label("Page 1"))-&gt;append_page( GTK.Label(""), GTK.Label("Page 2"))-&gt;append_page(GTK.Label("Page 3 contents\nare here!"), GTK.Label("Page 3"))</expr>
<image file='predef.GTK.Notebook.2.png' width='131' height='53'>../images/gtk_notebook_2.png</image></p>
<p><expr> GTK.Notebook( )-&gt;set_tab_pos( GTK.POS_RIGHT )-&gt;append_page( GTK.Label("Page 1\nContents"), GTK.Label("Page 1"))-&gt;append_page( GTK.Label(""), GTK.Label("Page 2"))-&gt;append_page(GTK.Label("Page 3 contents\nare here!"), GTK.Label("Page 3"))-&gt;next_page()-&gt;next_page()</expr>
<image file='predef.GTK.Notebook.3.png' width='126' height='71'>../images/gtk_notebook_3.png</image></p>
<p>  Signals:
 <b>switch_page</b>
 Called when a different page is selected</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='24'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='append_page' homogen-type='method'><doc><text><p>Add a new 'page' to the notebook. The first argument is the contents of
 the page, the second argument is the label.</p>
</text></doc>
<method name='append_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='26'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='append_page_menu' homogen-type='method'><doc><text><p>Add a new 'page' to the notebook. The first argument is the
 contents of the page, the second argument is the label, the third
 argument is a menu widget.</p>
</text></doc>
<method name='append_page_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='32'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='menu'><type><object resolved='predef::GTK.Menu'>GTK.Menu</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='39'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_current_page' homogen-type='method'><doc><text><p>Returns the index of the currently selected page</p>
</text></doc>
<method name='get_current_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='42'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_menu_label' homogen-type='method'><doc/>
<method name='get_menu_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='47'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_nth_page' homogen-type='method'><doc><text><p>Returns the page for the specified index</p>
</text></doc>
<method name='get_nth_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='50'/>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_tab_label' homogen-type='method'><doc/>
<method name='get_tab_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='55'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_page' homogen-type='method'><doc><text><p>Insert a page at the specified location, arguments as for
 append_page, but an aditional integer specifies the location.</p>
</text></doc>
<method name='insert_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='58'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_page_menu' homogen-type='method'><doc><text><p>Insert a page at the specified location, arguments as for
 append_page_menu, but an aditional integer specifies the location.</p>
</text></doc>
<method name='insert_page_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='64'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='menu'><type><object resolved='predef::GTK.Menu'>GTK.Menu</object></type></argument><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='next_page' homogen-type='method'><doc><text><p>Go to the next page</p>
</text></doc>
<method name='next_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='70'/>
<arguments/>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='page_num' homogen-type='method'><doc><text><p>Returns the index for the specified page</p>
</text></doc>
<method name='page_num'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='75'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='popup_disable' homogen-type='method'><doc><text><p>Disable the popup menu (set with insert_page_menu)</p>
</text></doc>
<method name='popup_disable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='80'/>
<arguments/>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='popup_enable' homogen-type='method'><doc><text><p>Enable the popup menu (set with insert_page_menu)</p>
</text></doc>
<method name='popup_enable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='85'/>
<arguments/>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_page' homogen-type='method'><doc><text><p>Add a page at the end of the list of pages. The first argument is
 the contents of the page, the second argument is the label.</p>
</text></doc>
<method name='prepend_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='90'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_page_menu' homogen-type='method'><doc><text><p>Add a new 'page' at the end of the list of pages. The first
 argument is the contents of the page, the second argument is the
 label, the third argument is a menu widget.</p>
</text></doc>
<method name='prepend_page_menu'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='96'/>
<arguments><argument name='contents'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='menu'><type><object resolved='predef::GTK.Menu'>GTK.Menu</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='prev_page' homogen-type='method'><doc><text><p>Go to the previous page</p>
</text></doc>
<method name='prev_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='103'/>
<arguments/>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_tab_label_packing' homogen-type='method'><doc><text><p>Returns ([ "expand":expandp, "fill":fillp, "pack_type":type ])</p>
</text></doc>
<method name='query_tab_label_packing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='108'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove_page' homogen-type='method'><doc><text><p>Remove a page.</p>
</text></doc>
<method name='remove_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='113'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='reorder_child' homogen-type='method'><doc><text><p>Move the specified page to the index new_index</p>
</text></doc>
<method name='reorder_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='118'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='new_index'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_homogeneous_tabs' homogen-type='method'><doc><text><p>If true, all tabs will have the same size</p>
</text></doc>
<method name='set_homogeneous_tabs'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='123'/>
<arguments><argument name='homogeneousp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_menu_label' homogen-type='method'><doc/>
<method name='set_menu_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='128'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_menu_label_text' homogen-type='method'><doc/>
<method name='set_menu_label_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='131'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_page' homogen-type='method'><doc><text><p>Go to the specified page</p>
</text></doc>
<method name='set_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='134'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_scrollable' homogen-type='method'><doc><text><p>If true, add scrollbars if nessesary.</p>
</text></doc>
<method name='set_scrollable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='139'/>
<arguments><argument name='scrollablep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_border' homogen-type='method'><doc><text><p>If true, show the borders around the contents and tabs.</p>
</text></doc>
<method name='set_show_border'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='144'/>
<arguments><argument name='showborderp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_tabs' homogen-type='method'><doc><text><p>If supplied with a true value, the tabs will be shown. Otherwise
 they will not be shown. The user will not be able to select the
 pages without them, but you can add 'next' and 'previous' buttons
 to create a wizard-line interface.</p>
</text></doc>
<method name='set_show_tabs'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='149'/>
<arguments><argument name='showtabsp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_border' homogen-type='method'><doc><text><p>In pixels.</p>
</text></doc>
<method name='set_tab_border'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='157'/>
<arguments><argument name='border_width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_hborder' homogen-type='method'><doc><text><p>In pixels.</p>
</text></doc>
<method name='set_tab_hborder'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='162'/>
<arguments><argument name='border_width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_label' homogen-type='method'><doc/>
<method name='set_tab_label'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='167'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='label'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_label_packing' homogen-type='method'><doc/>
<method name='set_tab_label_packing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='170'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='expand'><type><int/></type></argument><argument name='fill'><type><int/></type></argument><argument name='type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_label_text' homogen-type='method'><doc/>
<method name='set_tab_label_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='173'/>
<arguments><argument name='page'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_pos' homogen-type='method'><doc><text><p>One of <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref></p>
</text></doc>
<method name='set_tab_pos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='176'/>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_tab_vborder' homogen-type='method'><doc><text><p>In pixels.</p>
</text></doc>
<method name='set_tab_vborder'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Notebook.pike' first-line='181'/>
<arguments><argument name='border_width'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Notebook'>GTK.Notebook</object></returntype>
</method>
</docgroup>
</class>

<class name='Plug'><doc><text><p>Together with W(Socket), GTK.Plug provides the ability to embed
 widgets from one process into another process in a fashion that is
 transparent to the user. One process creates a W(Socket) widget
 and, passes the XID of that widgets window to the other process,
 which then creates a GTK.Plug window with that XID. Any widgets
 contained in the GTK.Plug then will appear inside the first
 applications window.</p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Plug.pike' first-line='11'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new plug, the socket_id is the window into which this plug
 will be plugged.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Plug.pike' first-line='13'/><modifiers><static/></modifiers>
<arguments><argument name='socket_id'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Plug'>GTK.Plug</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_same_app' homogen-type='method'><doc><text><p>returns 1 if the socket the plug is connected to is in this
 application.</p>
</text></doc>
<method name='get_same_app'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Plug.pike' first-line='19'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='Alignment'><doc><text><p>The W(Alignment) widget controls the alignment and size of its
 child widget. It has four settings: xscale, yscale, xalign, and
 yalign.</p>
<p> The scale settings are used to specify how much the child widget
 should expand to fill the space allocated to the W(Alignment). The
 values can range from 0 (meaning the child doesn't expand at all)
 to 1 (meaning the child expands to fill all of the available
 space).</p>
<p> The align settings are used to place the child widget within the
 available area. The values range from 0 (top or left) to 1 (bottom
 or right). Of course, if the scale settings are both set to 1, the
 alignment settings have no effect.</p>
<p> NOIMG</p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='20'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p><matrix>
 <r><c>xalign :</c>
 <c>the horizontal alignment of the child widget, from 0 (left) to 1 (right).</c></r>
 <r><c>                  yalign :</c>
 <c>the vertical alignment of the child widget, from 0 (top) to 1 (bottom).</c></r>
 <r><c>                  xscale :</c>
 <c>the amount that the child widget expands horizontally to fill up unused space, from 0 to 1. A value of 0 indicates that the child widget should never expand. A value of 1 indicates that the child widget will expand to fill all of the space allocated for the GTK.Alignment.</c></r>
 <r><c>                  yscale :</c>
 <c>the amount that the child widget expands vertically to fill up unused space, from 0 to 1. The values are similar to xscale.</c></r>
 </matrix></p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='22'/><modifiers><static/></modifiers>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument><argument name='xscale'><type><float/></type></argument><argument name='yscale'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Alignment'>GTK.Alignment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xalign' homogen-type='method'><doc><text><p>the horizontal alignment of the child widget, from 0 (left) to 1 (right).</p>
</text></doc>
<method name='get_xalign'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='36'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xscale' homogen-type='method'><doc><text><p>the amount that the child widget expands horizontally to fill up
 unused space, from 0 to 1. A value of 0 indicates that the child
 widget should never expand. A value of 1 indicates that the child
 widget will expand to fill all of the space allocated for the
 GTK.Alignment.</p>
</text></doc>
<method name='get_xscale'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='41'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_yalign' homogen-type='method'><doc><text><p>the vertical alignment of the child widget, from 0 (top) to 1 (bottom).</p>
</text></doc>
<method name='get_yalign'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='50'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_yscale' homogen-type='method'><doc><text><p>the amount that the child widget expands vertically to fill up
 unused space, from 0 to 1. The values are similar to xscale.</p>
</text></doc>
<method name='get_yscale'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='55'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p><matrix>
 <r><c>xalign :</c>
 <c>the horizontal alignment of the child widget, from 0 (left) to 1 (right).</c></r>
 <r><c>                  yalign :</c>
 <c>the vertical alignment of the child widget, from 0 (top) to 1 (bottom).</c></r>
 <r><c>                  xscale :</c>
 <c>the amount that the child widget expands horizontally to fill up unused space, from 0 to 1. A value of 0 indicates that the child widget should never expand. A value of 1 indicates that the child widget will expand to fill all of the space allocated for the GTK.Alignment.</c></r>
 <r><c>                  yscale :</c>
 <c>the amount that the child widget expands vertically to fill up unused space, from 0 to 1. The values are similar to xscale.</c></r>
 </matrix></p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Alignment.pike' first-line='61'/>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument><argument name='xscale'><type><float/></type></argument><argument name='yscale'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Alignment'>GTK.Alignment</object></returntype>
</method>
</docgroup>
</class>

<class name='InputDialog'><doc><text><p>This dialog is used to enable XInput devices.  By default, no
 extension devices are enabled. We need a mechanism to allow users
 to enable and configure their extension devices. GTK provides the
 InputDialog widget to automate this process. The following
 procedure manages an InputDialog widget. It creates the dialog if
 it isn't present, and shows it otherwise.</p>
<p> <pre>
 GTK.InputDialog inputd;
 void create_input_dialog ()
 {
   if (!inputd)
   {
     inputd = GTK.InputDialog();
     inputd-&amp;gt;close_button()-&amp;gt;signal_connect("clicked",inputd-&amp;gt;hide, 0);
     inputd-&amp;gt;save_button()-&amp;gt;hide();
     inputd-&amp;gt;show();
   }
   else
     inputd-&amp;gt;show();
 }
 </pre>
<expr> GTK.InputDialog()</expr>
<image file='predef.GTK.InputDialog.1.png' width='113' height='75'>../images/gtk_inputdialog.png</image></p>
<p>  Signals:
 <b>disable_device</b>
 his signal is emitted when the user changes the mode of a device from a GDK_MODE_SCREEN or GDK_MODE_WINDOW to GDK_MODE_ENABLED</p>
<p> <b>enable_device</b>
 This signal is emitted when the user changes the mode of a device from GDK_MODE_DISABLED to a GDK_MODE_SCREEN or GDK_MODE_WINDOW.</p>
</text></doc><docgroup homogen-name='Dialog' homogen-type='inherit'><doc>
</doc>
<inherit name='Dialog'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/InputDialog.pike' first-line='38'/><classname resolved='predef::GTK.Dialog'>GTK.Dialog</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new input dialog window.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/InputDialog.pike' first-line='40'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.InputDialog'>GTK.InputDialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_close_button' homogen-type='method'><doc><text><p>The 'close' button of the dialog.</p>
</text></doc>
<method name='get_close_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/InputDialog.pike' first-line='45'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_save_button' homogen-type='method'><doc><text><p>The 'save' button of the dialog.</p>
</text></doc>
<method name='get_save_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/InputDialog.pike' first-line='50'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
</class>

<class name='Statusbar'><doc><text><p>Statusbars are simple widgets used to display a text message. They
 keep a stack of the messages pushed onto them, so that popping the
 current message will re-display the previous text message.</p>
<p> In order to allow different parts of an application to use the same
 statusbar to display messages, the statusbar widget issues Context
 Identifiers which are used to identify different 'users'. The
 message on top of the stack is the one displayed, no matter what
 context it is in. Messages are stacked in last-in-first-out order,
 not context identifier order.</p>
<p><expr> lambda() {object sb = GTK.Statusbar();int id = sb-&gt;get_context_id("test");sb-&gt;push(id,"A message");sb-&gt;push(id,"Another message");return sb;}()</expr>
<image file='predef.GTK.Statusbar.1.png' width='90' height='17'>../images/gtk_statusbar.png</image></p>
<p><expr> lambda() {object sb = GTK.Statusbar();int id = sb-&gt;get_context_id("test");sb-&gt;push(id,"A message");sb-&gt;push(id,"Another message");sb-&gt;pop(id);return sb;}()</expr>
<image file='predef.GTK.Statusbar.2.png' width='57' height='17'>../images/gtk_statusbar_2.png</image></p>
<p>  Signals:
 <b>text_poped</b></p>
<p> <b>text_pushed</b></p>
</text></doc><docgroup homogen-name='Hbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Hbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='27'/><classname resolved='predef::GTK.Hbox'>GTK.Hbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new statusbar widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='29'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Statusbar'>GTK.Statusbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_context_id' homogen-type='method'><doc><text><p>Create a new context id (or get the id of an old one). The argument
 is any string. The return value can be used for -&amp;gt;push() -&amp;gt;pop()
 and -&amp;gt;remove later on.</p>
</text></doc>
<method name='get_context_id'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='34'/>
<arguments><argument name='context'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='pop' homogen-type='method'><doc><text><p>Remove the topmost message.</p>
</text></doc>
<method name='pop'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='41'/>
<arguments><argument name='context'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Statusbar'>GTK.Statusbar</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='push' homogen-type='method'><doc><text><p>Push a message onto the statusbar. The return value is an id that
 can be passed to remove later on.</p>
</text></doc>
<method name='push'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='46'/>
<arguments><argument name='context'><type><int/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='remove' homogen-type='method'><doc><text><p>Remove the specified message (the message id is the second argument).</p>
</text></doc>
<method name='remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Statusbar.pike' first-line='52'/>
<arguments><argument name='context'><type><int/></type></argument><argument name='id'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Statusbar'>GTK.Statusbar</object></returntype>
</method>
</docgroup>
</class>

<class name='Dialog'><doc><text><p>A dialog is a window with a few default widgets added.
 The 'vbox' is the main content area of the widget. The
 'action_area' is allocated for buttons (ok, cancel etc)</p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dialog.pike' first-line='7'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new dialog widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dialog.pike' first-line='9'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Dialog'>GTK.Dialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_action_area' homogen-type='method'><doc><text><p>The action area, this is where the buttons (ok, cancel etc) go</p>
</text></doc>
<method name='get_action_area'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dialog.pike' first-line='14'/>
<arguments/>
<returntype><object resolved='predef::GTK.HbuttonBox'>GTK.HbuttonBox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_vbox' homogen-type='method'><doc><text><p>The vertical box that should contain the contents of the dialog</p>
</text></doc>
<method name='get_vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Dialog.pike' first-line='19'/>
<arguments/>
<returntype><object resolved='predef::GTK.Vbox'>GTK.Vbox</object></returntype>
</method>
</docgroup>
</class>

<class name='Adjustment'><doc><text><p>The GTK.Adjustment object represents a value which has an associated
 lower and upper bound, together with step and page increments, and
 a page size. It is used within several GTK+ widgets, including
 GtkSpinButton, GtkViewport, and GtkRange (which is a base class for
 GtkHScrollbar, GtkVScrollbar, GtkHScale, and GtkVScale).</p>
<p> The GtkAdjustment object does not update the value itself. Instead
 it is left up to the owner of the GtkAdjustment to control the
 value.</p>
<p> The owner of the GtkAdjustment typically calls the value_changed()
 and changed() functions after changing the value or its
 bounds. This results in the emission of the "value_changed" or
 "changed" signal respectively.</p>
<p>  Signals:
 <b>changed</b>
 The adjustment changed in some way</p>
<p> <b>value_changed</b>
 The value changed</p>
</text></doc><docgroup homogen-name='Data' homogen-type='inherit'><doc>
</doc>
<inherit name='Data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='28'/><classname resolved='predef::GTK.Data'>GTK.Data</classname></inherit>
</docgroup>
<docgroup homogen-name='changed' homogen-type='method'><doc><text><p>Call this when you have modified anything except the value member
 of the adjustment.</p>
</text></doc>
<method name='changed'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='30'/>
<arguments/>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='clamp_page' homogen-type='method'><doc><text><p>Updates the GTK.Adjustment value to ensure that the range between
 lower and upper is in the current page (i.e. between value and
 value + page_size). If the range is larger than the page size,
 then only the start of it will be in the current page. A
 "value_changed" signal will be emitted if the value is changed.</p>
</text></doc>
<method name='clamp_page'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='36'/>
<arguments><argument name='lower'><type><float/></type></argument><argument name='upper'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The value argument is the initial value you want to give to the
 adjustment, usually corresponding to the topmost or leftmost
 position of an adjustable widget. The lower argument specifies the
 lowest value which the adjustment can hold. The step_increment
 argument specifies the "smaller" of the two increments by which
 the user can change the value, while the page_increment is the
 "larger" one. The page_size argument usually corresponds somehow
 to the visible area of a panning widget. The upper argument is
 used to represent the bottom most or right most coordinate in a
 panning widget's child. Therefore it is not always the largest
 number that value can take, since the page_size of such widgets is
 usually non-zero.</p>
<p> All values are optional, they default to 0.0.
 For most widgets the unit is pixels.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='45'/><modifiers><static/></modifiers>
<arguments><argument name='value'><type><or><float/><void/></or></type></argument><argument name='lower'><type><or><float/><void/></or></type></argument><argument name='upper'><type><or><float/><void/></or></type></argument><argument name='step_increment'><type><or><float/><void/></or></type></argument><argument name='page_increment'><type><or><float/><void/></or></type></argument><argument name='page_size'><type><or><float/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_lower' homogen-type='method'><doc><text><p>Get the lower limit</p>
</text></doc>
<method name='get_lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='64'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_page_increment' homogen-type='method'><doc><text><p>Get the page increment (page down or through click)</p>
</text></doc>
<method name='get_page_increment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='69'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_page_size' homogen-type='method'><doc><text><p>Get the page size (the actual size of a page)</p>
</text></doc>
<method name='get_page_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='74'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_step_increment' homogen-type='method'><doc><text><p>Get the step increment (arrow click)</p>
</text></doc>
<method name='get_step_increment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='79'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_upper' homogen-type='method'><doc><text><p>get the upper limit.</p>
</text></doc>
<method name='get_upper'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='84'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value' homogen-type='method'><doc><text><p>Get the value component.</p>
</text></doc>
<method name='get_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='89'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_lower' homogen-type='method'><doc><text><p>Set the lower limit.</p>
</text></doc>
<method name='set_set_lower'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='94'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_page_increment' homogen-type='method'><doc><text><p>Set the page increment (page down or through click)</p>
</text></doc>
<method name='set_set_page_increment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='99'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_page_size' homogen-type='method'><doc><text><p>Set the page size (the actual size of a page)</p>
</text></doc>
<method name='set_set_page_size'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='104'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_step_increment' homogen-type='method'><doc><text><p>Set the step increment (arrow click)</p>
</text></doc>
<method name='set_set_step_increment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='109'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_set_upper' homogen-type='method'><doc><text><p>Set the upper limit.</p>
</text></doc>
<method name='set_set_upper'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='114'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value' homogen-type='method'><doc><text><p>Set the value component.</p>
</text></doc>
<method name='set_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Adjustment.pike' first-line='119'/>
<arguments><argument name='to'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></returntype>
</method>
</docgroup>
</class>

<class name='Socket'><doc><text><p>Together with W(Plug), GTK.Socket provides the ability to embed
 widgets from one process into another process in a fashion that is
 transparent to the user. One process creates a GTK.Socket widget
 and, passes the XID of that widget's window to the other process,
 which then creates a W(Plug) window with that XID. Any widgets
 contained in the W(Plug) then will appear inside the first
 applications window.</p>
<p> Note that if you pass the XID of the socket to another process
 that will create a plug in the socket, you must make sure that the
 socket widget is not destroyed until that plug is
 created. Violating this rule will cause unpredictable
 consequences, the most likely consequence being that the plug will
 appear as a separate toplevel window.</p>
<p>  A socket can also be used to swallow arbitrary pre-existing
  top-level windows using steal(), though the integration when this
  is done will not be as close as between a W(Plug) and a
  GTK.Socket.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='24'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Socket'>GTK.Socket</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_same_app' homogen-type='method'><doc><text><p>return 1 if the widow contained in this socket comes from this
 process.</p>
</text></doc>
<method name='get_same_app'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='29'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='has_plug' homogen-type='method'><doc><text><p>Returns true if this socket is occupied</p>
</text></doc>
<method name='has_plug'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='35'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='id' homogen-type='method'><doc><text><p>Returns the window id, to be sent to the application providing the plug.
 You must realize this widget before calling this function.</p>
</text></doc>
<method name='id'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='steal' homogen-type='method'><doc><text><p>Reparents a pre-existing toplevel window (not nessesarily a GTK
 window) into a socket.</p>
</text></doc>
<method name='steal'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Socket.pike' first-line='46'/>
<arguments><argument name='window_id'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Socket'>GTK.Socket</object></returntype>
</method>
</docgroup>
</class>

<class name='GLArea'><docgroup homogen-name='DrawingArea' homogen-type='inherit'><doc>
</doc>
<inherit name='DrawingArea'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='3'/><classname resolved='predef::GTK.DrawingArea'>GTK.DrawingArea</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='5'/><modifiers><static/></modifiers>
<arguments><argument name='gloptions'><type><array/></type></argument></arguments>
<returntype><object resolved='predef::GTK.GLArea'>GTK.GLArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_current' homogen-type='method'><doc/>
<method name='make_current'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='8'/>
<arguments/>
<returntype><object resolved='predef::GTK.GLArea'>GTK.GLArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='swap_buffers' homogen-type='method'><doc/>
<method name='swap_buffers'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='11'/>
<arguments/>
<returntype><object resolved='predef::GTK.GLArea'>GTK.GLArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='wait_gdk' homogen-type='method'><doc/>
<method name='wait_gdk'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='14'/>
<arguments/>
<returntype><object resolved='predef::GTK.GLArea'>GTK.GLArea</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='wait_gl' homogen-type='method'><doc/>
<method name='wait_gl'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GLArea.pike' first-line='17'/>
<arguments/>
<returntype><object resolved='predef::GTK.GLArea'>GTK.GLArea</object></returntype>
</method>
</docgroup>
</class>

<class name='Pixmap'><doc><text><p>Pixmaps are data structures that contain pictures. These pictures
 can be used in various places, but most visibly as icons on the
 X-Windows desktop, or as cursors. A bitmap is a 2-color pixmap.</p>
<p> To use pixmaps in GTK, you must first build a GDK.Pixmap object
 using GDK.Pixmap.</p>
<p> The pixels in a GTK.Pixmap cannot be manipulated by the application
 after creation, since under the X Window system the pixel data is
 stored on the X server and so is not available to the client
 application. If you want to create graphical images which can be
 manipulated by the application, look at W(Image).</p>
<p><expr> GTK.Pixmap( GDK.Pixmap( Image.image(100,100)-&gt;test()) )</expr>
<image file='predef.GTK.Pixmap.1.png' width='100' height='100'>../images/gtk_pixmap.png</image></p>
<p><expr> GTK.Pixmap( GDK.Pixmap( Image.image(100,100)-&gt;test()), GDK.Bitmap(Image.image(100,100,255,255,255)-&gt;box(10,10,80,80, 0,0,0) ))</expr>
<image file='predef.GTK.Pixmap.2.png' width='100' height='100'>../images/gtk_pixmap_2.png</image></p>
</text></doc><docgroup homogen-name='Misc' homogen-type='inherit'><doc>
</doc>
<inherit name='Misc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='24'/><classname resolved='predef::GTK.Misc'>GTK.Misc</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new pixmap object, and sets the image and the mask.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Pixmap'>GTK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Returns ([ 
            "pixmap":pixmap, 
            "mask":mask,  
            "pixmap_insensitive":insensitive version of the pixmap 
          ])</p>
</text></doc>
<method name='get'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='31'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_build_insensitive' homogen-type='method'><doc/>
<method name='get_build_insensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='40'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Sets the GDK.Pixmap image and the optinal GDK.Bitmap mask</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='43'/>
<arguments><argument name='pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Pixmap'>GTK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_build_insensitive' homogen-type='method'><doc><text><p>Set to TRUE if an extra pixmap should be automatically created to
 use when the pixmap is insensitive.</p>
</text></doc>
<method name='set_build_insensitive'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='48'/>
<arguments><argument name='buildp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Pixmap'>GTK.Pixmap</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_insensitive_pixmap' homogen-type='method'><doc><text><p>Set the pixmap to use when the pixmap is insensitive.</p>
</text></doc>
<method name='set_insensitive_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Pixmap.pike' first-line='54'/>
<arguments><argument name='insensitive_pixmap'><type><object resolved='predef::GDK.Pixmap'>GDK.Pixmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Pixmap'>GTK.Pixmap</object></returntype>
</method>
</docgroup>
</class>

<class name='Hruler'><doc><text><p>Ruler widgets are used to indicate the location of the mouse
 pointer in a given window. A window can have a vertical ruler
 spanning across the width and a horizontal ruler spanning down the
 height. A small triangular indicator on the ruler shows the exact
 location of the pointer relative to the ruler.</p>
<p><expr> GTK.Hruler()-&gt;set_metric(GTK.PIXELS)-&gt;set_range(0.0,100.0,50.0,100.0)-&gt;draw_ticks()-&gt;draw_pos()-&gt;set_usize(300,30)</expr>
<image file='predef.GTK.Hruler.1.png' width='300' height='30'>../images/gtk_hruler.png</image></p>
<p><expr> GTK.Hruler()-&gt;set_metric(GTK.CENTIMETERS)-&gt;set_range(0.0,100.0,50.0,100.0)-&gt;draw_ticks()-&gt;draw_pos()-&gt;set_usize(300,30)</expr>
<image file='predef.GTK.Hruler.2.png' width='300' height='30'>../images/gtk_hruler_2.png</image></p>
<p><expr> GTK.Hruler()-&gt;set_usize(300,30)</expr>
<image file='predef.GTK.Hruler.3.png' width='300' height='30'>../images/gtk_hruler_3.png</image></p>
</text></doc><docgroup homogen-name='Ruler' homogen-type='inherit'><doc>
</doc>
<inherit name='Ruler'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hruler.pike' first-line='19'/><classname resolved='predef::GTK.Ruler'>GTK.Ruler</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new hruler widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hruler.pike' first-line='21'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Hruler'>GTK.Hruler</object></returntype>
</method>
</docgroup>
</class>

<class name='Misc'><doc><text><p>The GTK.Misc widget is an abstract widget which is not useful
 itself, but is used to derive subclasses which have alignment and
 padding attributes.</p>
<p> The horizontal and vertical padding attributes allows extra space
 to be added around the widget.</p>
<p> The horizontal and vertical alignment attributes enable the widget
 to be positioned within its allocated area. Note that if the widget
 is added to a container in such a way that it expands automatically
 to fill its allocated area, the alignment settings will not alter
 the widgets position.</p>
<p><expr> GTK.Vbox(0,0)-&gt;add(GTK.Label("Label"))-&gt;set_usize(100,20)</expr>
<image file='predef.GTK.Misc.1.png' width='100' height='20'>../images/gtk_misc.png</image></p>
<p><expr> GTK.Vbox(0,0)-&gt;add(GTK.Label("Label")-&gt;set_alignment(1.0,0.0))-&gt;set_usize(100,20)</expr>
<image file='predef.GTK.Misc.2.png' width='100' height='20'>../images/gtk_misc_2.png</image></p>
<p><expr> GTK.Vbox(0,0)-&gt;add(GTK.Label("Label")-&gt;set_alignment(0.0,0.0))-&gt;set_usize(100,20)</expr>
<image file='predef.GTK.Misc.3.png' width='100' height='20'>../images/gtk_misc_3.png</image></p>
</text></doc><docgroup homogen-name='Widget' homogen-type='inherit'><doc>
</doc>
<inherit name='Widget'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='27'/><classname resolved='predef::GTK.Widget'>GTK.Widget</classname></inherit>
</docgroup>
<docgroup homogen-name='get_xalign' homogen-type='method'><doc><text><p>The horizontal alignment, from 0 (left) to 1 (right).</p>
</text></doc>
<method name='get_xalign'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='29'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_xpad' homogen-type='method'><doc><text><p>The amount of space to add on the left and right of the widget, in pixels.</p>
</text></doc>
<method name='get_xpad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='34'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_yalign' homogen-type='method'><doc><text><p>The vertical alignment, from 0 (top) to 1 (botton).</p>
</text></doc>
<method name='get_yalign'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='39'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ypad' homogen-type='method'><doc><text><p>The amount of space to add on the top and bottom of the widget, in pixels.</p>
</text></doc>
<method name='get_ypad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='44'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_alignment' homogen-type='method'><doc><text><p>Sets the alignment of the widget.
 0.0 is left or topmost, 1.0 is right or bottommost.</p>
</text></doc>
<method name='set_alignment'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='49'/>
<arguments><argument name='xalign'><type><float/></type></argument><argument name='yalign'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Misc'>GTK.Misc</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_padding' homogen-type='method'><doc><text><p>Sets the amount of space to add around the widget. xpand and ypad
 are specified in pixels.</p>
</text></doc>
<method name='set_padding'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Misc.pike' first-line='55'/>
<arguments><argument name='xpad'><type><int/></type></argument><argument name='ypad'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Misc'>GTK.Misc</object></returntype>
</method>
</docgroup>
</class>

<class name='Entry'><doc><text><p>Use this widget when you want the user to input a single line of text.
<expr> GTK.Entry()-&gt;set_text("Hello world")-&gt;set_editable(1)</expr>
<image file='predef.GTK.Entry.1.png' width='158' height='19'>../images/gtk_entry.png</image></p>
</text></doc><docgroup homogen-name='Editable' homogen-type='inherit'><doc>
</doc>
<inherit name='Editable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='8'/><classname resolved='predef::GTK.Editable'>GTK.Editable</classname></inherit>
</docgroup>
<docgroup homogen-name='append_text' homogen-type='method'><doc><text><p>Append the specified string at the end of the entry</p>
</text></doc>
<method name='append_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='10'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='15'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc><text><p>Returns the contents of the entry widget.</p>
</text></doc>
<method name='get_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='18'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='prepend_text' homogen-type='method'><doc><text><p>Prepend the specified string to the start of the entry</p>
</text></doc>
<method name='prepend_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='23'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_max_length' homogen-type='method'><doc><text><p>text is truncated if needed</p>
</text></doc>
<method name='set_max_length'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='28'/>
<arguments><argument name='maxlen'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text to the specified string. The old text is dropped.</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='33'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_visibility' homogen-type='method'><doc><text><p>0 indicates invisible text (password boxes, as an example)</p>
</text></doc>
<method name='set_visibility'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Entry.pike' first-line='38'/>
<arguments><argument name='visiblep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Entry'>GTK.Entry</object></returntype>
</method>
</docgroup>
</class>

<class name='Databox'><doc><text><p>GtkDatabox is designed to display large amounts of numerical data
 fast and easy. Thousands of data points (X and Y coordinate) may be
 displayed without any problems, zooming and scrolling as well as
 optional rulers are already included.</p>
<p> The widget may be used as display for oscilloscopes or other
 applications that need to display fast changes in their data.</p>
<p><expr>   GTK.Databox x=GTK.Databox(); x-&gt;data_add_x_y(3, ({ 1.0, 0.5, 0.0 }), ({1.0, -1.0, 0.0}),GDK.Color(Image.Color.red), GTK.DataboxLines,2); x-&gt;rescale(); x-&gt;set_usize(300,300); return x;</expr>
<image file='predef.GTK.Databox.1.png' width='219' height='32'>../images/gtk_databox.png</image></p>
<p>  Signals:
 <b>marked</b></p>
<p> <b>selection_canceled</b></p>
<p> <b>selection_changed</b></p>
<p> <b>selection_started</b></p>
<p> <b>selection_stopped</b></p>
<p> <b>zoomed</b></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='28'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new databox widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='30'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_add_x' homogen-type='method'><doc><text><p>Type is one of <ref resolved='predef::GTK.DATABOX_BARS'>DATABOX_BARS</ref>, <ref resolved='predef::GTK.DATABOX_LINES'>DATABOX_LINES</ref>, <ref resolved='predef::GTK.DATABOX_NOT_DISPLAYED'>DATABOX_NOT_DISPLAYED</ref> and <ref resolved='predef::GTK.DATABOX_POINTS'>DATABOX_POINTS</ref></p>
</text></doc>
<method name='data_add_x'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='35'/>
<arguments><argument name='nelems'><type><int/></type></argument><argument name='x'><type><array/></type></argument><argument name='shared_Y_index'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='type'><type><int/></type></argument><argument name='dot_size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_add_x_y' homogen-type='method'><doc><text><p>Type is one of <ref resolved='predef::GTK.DATABOX_BARS'>DATABOX_BARS</ref>, <ref resolved='predef::GTK.DATABOX_LINES'>DATABOX_LINES</ref>, <ref resolved='predef::GTK.DATABOX_NOT_DISPLAYED'>DATABOX_NOT_DISPLAYED</ref> and <ref resolved='predef::GTK.DATABOX_POINTS'>DATABOX_POINTS</ref></p>
</text></doc>
<method name='data_add_x_y'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='40'/>
<arguments><argument name='nelems'><type><int/></type></argument><argument name='x'><type><array/></type></argument><argument name='y'><type><array/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='type'><type><int/></type></argument><argument name='dot_size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_add_y' homogen-type='method'><doc><text><p>Type is one of <ref resolved='predef::GTK.DATABOX_BARS'>DATABOX_BARS</ref>, <ref resolved='predef::GTK.DATABOX_LINES'>DATABOX_LINES</ref>, <ref resolved='predef::GTK.DATABOX_NOT_DISPLAYED'>DATABOX_NOT_DISPLAYED</ref> and <ref resolved='predef::GTK.DATABOX_POINTS'>DATABOX_POINTS</ref></p>
</text></doc>
<method name='data_add_y'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='45'/>
<arguments><argument name='nelems'><type><int/></type></argument><argument name='y'><type><array/></type></argument><argument name='shared_X_index'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument><argument name='type'><type><int/></type></argument><argument name='dot_size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_destroy' homogen-type='method'><doc/>
<method name='data_destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='50'/>
<arguments><argument name='index'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_destroy_all' homogen-type='method'><doc/>
<method name='data_destroy_all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='53'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_get_extrema' homogen-type='method'><doc/>
<method name='data_get_extrema'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='56'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_get_value' homogen-type='method'><doc/>
<method name='data_get_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='59'/>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='data_get_visible_extrema' homogen-type='method'><doc/>
<method name='data_get_visible_extrema'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='62'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='disable_zoom' homogen-type='method'><doc/>
<method name='disable_zoom'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='65'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='enable_zoom' homogen-type='method'><doc/>
<method name='enable_zoom'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='68'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_cross' homogen-type='method'><doc/>
<method name='hide_cross'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='71'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_rulers' homogen-type='method'><doc/>
<method name='hide_rulers'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='74'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_scrollbars' homogen-type='method'><doc/>
<method name='hide_scrollbars'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='77'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='rescale' homogen-type='method'><doc/>
<method name='rescale'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='80'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='rescale_with_values' homogen-type='method'><doc/>
<method name='rescale_with_values'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='83'/>
<arguments><argument name='minx'><type><float/></type></argument><argument name='miny'><type><float/></type></argument><argument name='maxx'><type><float/></type></argument><argument name='maxy'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_color' homogen-type='method'><doc/>
<method name='set_color'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='86'/>
<arguments><argument name='index'><type><int/></type></argument><argument name='color'><type><object resolved='predef::GDK.Color'>GDK.Color</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_data_type' homogen-type='method'><doc><text><p>Type is one of <ref resolved='predef::GTK.DATABOX_BARS'>DATABOX_BARS</ref>, <ref resolved='predef::GTK.DATABOX_LINES'>DATABOX_LINES</ref>, <ref resolved='predef::GTK.DATABOX_NOT_DISPLAYED'>DATABOX_NOT_DISPLAYED</ref> and <ref resolved='predef::GTK.DATABOX_POINTS'>DATABOX_POINTS</ref></p>
</text></doc>
<method name='set_data_type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='89'/>
<arguments><argument name='index'><type><int/></type></argument><argument name='type'><type><int/></type></argument><argument name='dot_size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_cross' homogen-type='method'><doc/>
<method name='show_cross'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='94'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_rulers' homogen-type='method'><doc/>
<method name='show_rulers'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='97'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_scrollbars' homogen-type='method'><doc/>
<method name='show_scrollbars'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Databox.pike' first-line='100'/>
<arguments/>
<returntype><object resolved='predef::GTK.Databox'>GTK.Databox</object></returntype>
</method>
</docgroup>
</class>

<class name='Scale'><doc><text><p>The GTK.Scale widget is an abstract class, used only for deriving
 the subclasses GTK.Hscale and GTK.Vscale.</p>
<p> See W(Range) for generic range documentation</p>
</text></doc><docgroup homogen-name='Range' homogen-type='inherit'><doc>
</doc>
<inherit name='Range'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='9'/><classname resolved='predef::GTK.Range'>GTK.Range</classname></inherit>
</docgroup>
<docgroup homogen-name='get_draw_value' homogen-type='method'><doc><text><p>non-zero if the scale's current value is displayed next to the slider.</p>
</text></doc>
<method name='get_draw_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='11'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value_pos' homogen-type='method'><doc><text><p>The position in which the textual value is displayed, selected from
 <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref></p>
</text></doc>
<method name='get_value_pos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='16'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_value_width' homogen-type='method'><doc><text><p>An internal function used to get the maximum width needed to
 display the value string. Not normaly used by applications.</p>
</text></doc>
<method name='get_value_width'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='22'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_digits' homogen-type='method'><doc><text><p>Sets the number of decimal places that are displayed in the value.</p>
</text></doc>
<method name='set_digits'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='28'/>
<arguments><argument name='precision'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Scale'>GTK.Scale</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_draw_value' homogen-type='method'><doc><text><p>Specifies whether the current value is displayed as a string next
  to the slider.</p>
</text></doc>
<method name='set_draw_value'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='33'/>
<arguments><argument name='drawp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Scale'>GTK.Scale</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_value_pos' homogen-type='method'><doc><text><p>Sets the position in which the current value is displayed. One of
 <ref resolved='predef::GTK.POS_BOTTOM'>POS_BOTTOM</ref>, <ref resolved='predef::GTK.POS_LEFT'>POS_LEFT</ref>, <ref resolved='predef::GTK.POS_RIGHT'>POS_RIGHT</ref> and <ref resolved='predef::GTK.POS_TOP'>POS_TOP</ref></p>
</text></doc>
<method name='set_value_pos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scale.pike' first-line='39'/>
<arguments><argument name='where'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Scale'>GTK.Scale</object></returntype>
</method>
</docgroup>
</class>

<class name='CheckMenuItem'><doc><text><p>A check menu item is more or less identical to a check button, but it
 should be used in menus.
<expr> GTK.CheckMenuItem("Hi there")</expr>
<image file='predef.GTK.CheckMenuItem.1.png' width='50' height='17'>../images/gtk_checkmenuitem.png</image></p>
<p><expr> GTK.CheckMenuItem("Hi there")-&gt;set_active(1)</expr>
<image file='predef.GTK.CheckMenuItem.2.png' width='50' height='17'>../images/gtk_checkmenuitem_2.png</image></p>
<p>  Signals:
 <b>toggled</b>
 Called when the state of the menu item is changed</p>
</text></doc><docgroup homogen-name='MenuItem' homogen-type='inherit'><doc>
</doc>
<inherit name='MenuItem'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckMenuItem.pike' first-line='17'/><classname resolved='predef::GTK.MenuItem'>GTK.MenuItem</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>The argument, if specified, is the label of the item.
 If no label is specified, use object-&gt;add() to add some
 other widget (such as an pixmap or image widget)</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckMenuItem.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='label'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::GTK.CheckMenuItem'>GTK.CheckMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_active' homogen-type='method'><doc><text><p>State is either 1 or 0. If 1, the button will be 'pressed'.</p>
</text></doc>
<method name='set_active'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckMenuItem.pike' first-line='26'/>
<arguments><argument name='new_state'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.CheckMenuItem'>GTK.CheckMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_show_toggle' homogen-type='method'><doc><text><p>If true, the toggle indicator will be shown</p>
</text></doc>
<method name='set_show_toggle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckMenuItem.pike' first-line='31'/>
<arguments><argument name='togglep'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.CheckMenuItem'>GTK.CheckMenuItem</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='toggled' homogen-type='method'><doc><text><p>Emulate a toggled event</p>
</text></doc>
<method name='toggled'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/CheckMenuItem.pike' first-line='36'/>
<arguments/>
<returntype><object resolved='predef::GTK.CheckMenuItem'>GTK.CheckMenuItem</object></returntype>
</method>
</docgroup>
</class>

<class name='GammaCurve'><doc><text><p>A gamma curve widget.. Rather complex.</p>
<p> Lets the user edit a gamma curve (a one-to-one mapping usually used
 to adjust the intensity of an image to the physical characteristics
 of the output device). You can set the minimum and maximum values
 for input and output. You can set the initial vector as well. You
 are guaranteed that every input value will have a (not necessarily
 unique) output value specified.</p>
<p><expr> GTK.GammaCurve()-&gt;set_usize(210,130)</expr>
<image file='predef.GTK.GammaCurve.1.png' width='210' height='130'>../images/gtk_gammacurve.png</image></p>
</text></doc><docgroup homogen-name='Vbox' homogen-type='inherit'><doc>
</doc>
<inherit name='Vbox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GammaCurve.pike' first-line='16'/><classname resolved='predef::GTK.Vbox'>GTK.Vbox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new gamma curve</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GammaCurve.pike' first-line='18'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.GammaCurve'>GTK.GammaCurve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_curve' homogen-type='method'><doc><text><p>The actual curve</p>
</text></doc>
<method name='get_curve'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GammaCurve.pike' first-line='23'/>
<arguments/>
<returntype><object resolved='predef::GTK.Curve'>GTK.Curve</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_gamma' homogen-type='method'><doc><text><p>The current gamma value</p>
</text></doc>
<method name='get_gamma'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/GammaCurve.pike' first-line='28'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
</class>

<class name='Hseparator'><doc><text><p>Simply creates a horizontal separator. No bells or whistles.
<expr> GTK.Hseparator()-&gt;set_usize(300,3)</expr>
<image file='predef.GTK.Hseparator.1.png' width='300' height='3'>../images/gtk_hseparator.png</image></p>
</text></doc><docgroup homogen-name='Separator' homogen-type='inherit'><doc>
</doc>
<inherit name='Separator'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hseparator.pike' first-line='8'/><classname resolved='predef::GTK.Separator'>GTK.Separator</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new hseparator widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Hseparator.pike' first-line='10'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Hseparator'>GTK.Hseparator</object></returntype>
</method>
</docgroup>
</class>

<class name='Bin'><doc><text><p>A container that can only contain one child.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Bin.pike' first-line='5'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='get_child' homogen-type='method'><doc><text><p>Returns the (one and only) child of this container.</p>
</text></doc>
<method name='get_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Bin.pike' first-line='7'/>
<arguments/>
<returntype><object resolved='predef::GTK.Widget'>GTK.Widget</object></returntype>
</method>
</docgroup>
</class>

<class name='Invisible'><doc><text><p>An invisible container, useful, eh? :)</p>
</text></doc><docgroup homogen-name='Bin' homogen-type='inherit'><doc>
</doc>
<inherit name='Bin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Invisible.pike' first-line='5'/><classname resolved='predef::GTK.Bin'>GTK.Bin</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new invisible widget</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Invisible.pike' first-line='7'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.Invisible'>GTK.Invisible</object></returntype>
</method>
</docgroup>
</class>

<class name='FileSelection'><doc><text><p>GtkFileSelection should be used to retrieve file or directory names
 from the user. It will create a new dialog window containing a
 directory list, and a file list corresponding to the current
 working directory. The filesystem can be navigated using the
 directory list, the drop-down history menu, or the TAB key can be
 used to navigate using filename completion common in text based
 editors such as emacs and jed.</p>
<p> The default filename can be set using set_filename() and the
 selected filename retrieved using get_filename().</p>
<p> Use complete() to display files that match a given pattern. This
 can be used for example, to show only *.txt files, or only files
 beginning with gtk*.</p>
<p> Simple file operations; create directory, delete file, and rename
 file, are available from buttons at the top of the dialog. These
 can be hidden using hide_fileop_buttons() and shown again using
 show_fileop_buttons().</p>
<p><expr> GTK.FileSelection("File selector")</expr>
<image file='predef.GTK.FileSelection.1.png' width='421' height='356'>../images/gtk_fileselection.png</image></p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='28'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='complete' homogen-type='method'><doc><text><p>Will attempt to match pattern to a valid filename in the current
 directory. If a match can be made, the matched filename will appear
 in the text entry field of the file selection dialog. If a partial
 match can be made, the "Files" list will contain those file names
 which have been partially matched.</p>
</text></doc>
<method name='complete'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='30'/>
<arguments><argument name='pattern'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FileSelection'>GTK.FileSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new file selection dialog box. By default it will list
 the files in the current working directory. Operation buttons
 allowing the user to create a directory, delete files, and rename
 files will also be present by default.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='39'/><modifiers><static/></modifiers>
<arguments><argument name='window_title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FileSelection'>GTK.FileSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cancel_button' homogen-type='method'><doc><text><p>The cancel button</p>
</text></doc>
<method name='get_cancel_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='47'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dir_list' homogen-type='method'><doc><text><p>The list of directories</p>
</text></doc>
<method name='get_dir_list'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='52'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_file_list' homogen-type='method'><doc><text><p>The list of files</p>
</text></doc>
<method name='get_file_list'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='57'/>
<arguments/>
<returntype><object resolved='predef::GTK.Clist'>GTK.Clist</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_filename' homogen-type='method'><doc><text><p>Returns the currently entered filename as a string</p>
</text></doc>
<method name='get_filename'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='62'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fileop_c_dir' homogen-type='method'><doc><text><p>The create directory button in the file operation button group</p>
</text></doc>
<method name='get_fileop_c_dir'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='67'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fileop_del_file' homogen-type='method'><doc><text><p>The delete file button in the file operation button group</p>
</text></doc>
<method name='get_fileop_del_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='72'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fileop_ren_file' homogen-type='method'><doc><text><p>The rename file button in the file operation button group</p>
</text></doc>
<method name='get_fileop_ren_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='77'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_help_button' homogen-type='method'><doc><text><p>The help button</p>
</text></doc>
<method name='get_help_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='82'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_history_pulldown' homogen-type='method'><doc><text><p>Used to create the drop-down directory histor</p>
</text></doc>
<method name='get_history_pulldown'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='87'/>
<arguments/>
<returntype><object resolved='predef::GTK.OptionMenu'>GTK.OptionMenu</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ok_button' homogen-type='method'><doc><text><p>The ok button</p>
</text></doc>
<method name='get_ok_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='92'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='hide_fileop_buttons' homogen-type='method'><doc><text><p>Hides the file operation buttons that normally appear at the top of
 the dialog. Useful if you wish to create a custom file selector,
 based on GTK.FileSelection.</p>
</text></doc>
<method name='hide_fileop_buttons'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='97'/>
<arguments/>
<returntype><object resolved='predef::GTK.FileSelection'>GTK.FileSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_filename' homogen-type='method'><doc><text><p>Sets a default path for the file requestor. If filename includes a
 directory path, then the requestor will open with that path as its
 current working directory.</p>
</text></doc>
<method name='set_filename'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='104'/>
<arguments><argument name='fname'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.FileSelection'>GTK.FileSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='show_fileop_buttons' homogen-type='method'><doc><text><p>Shows the file operation buttons, if they have previously been
 hidden. The rest of the widgets in the dialog will be resized
 accordingly.</p>
</text></doc>
<method name='show_fileop_buttons'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/FileSelection.pike' first-line='111'/>
<arguments/>
<returntype><object resolved='predef::GTK.FileSelection'>GTK.FileSelection</object></returntype>
</method>
</docgroup>
</class>

<class name='VbuttonBox'><doc><text><p>A Vbutton_box is very similar to a Vbox.
 The major diffference is that the button box
 is made to pack buttons in, and has a few convenience function for
 normal button layouts.</p>
<p><expr> GTK.VbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_usize(100,300)</expr>
<image file='predef.GTK.VbuttonBox.1.png' width='100' height='300'>../images/gtk_vbuttonbox.png</image></p>
<p><expr> GTK.VbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_SPREAD)-&gt;set_usize(100,300)</expr>
<image file='predef.GTK.VbuttonBox.2.png' width='100' height='300'>../images/gtk_vbuttonbox_2.png</image></p>
<p><expr> GTK.VbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_EDGE)-&gt;set_usize(100,300)</expr>
<image file='predef.GTK.VbuttonBox.3.png' width='100' height='300'>../images/gtk_vbuttonbox_3.png</image></p>
<p><expr> GTK.VbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_START)-&gt;set_usize(100,300)</expr>
<image file='predef.GTK.VbuttonBox.4.png' width='100' height='300'>../images/gtk_vbuttonbox_4.png</image></p>
<p><expr> GTK.VbuttonBox()-&gt;add(GTK.Button("Hello"))-&gt;add(GTK.Button("World"))-&gt;set_layout(GTK.BUTTONBOX_END)-&gt;set_usize(100,300)</expr>
<image file='predef.GTK.VbuttonBox.5.png' width='100' height='300'>../images/gtk_vbuttonbox_5.png</image></p>
</text></doc><docgroup homogen-name='ButtonBox' homogen-type='inherit'><doc>
</doc>
<inherit name='ButtonBox'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/VbuttonBox.pike' first-line='24'/><classname resolved='predef::GTK.ButtonBox'>GTK.ButtonBox</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new vertical button box</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/VbuttonBox.pike' first-line='26'/><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::GTK.VbuttonBox'>GTK.VbuttonBox</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='GTKSupport' homogen-type='inherit'><doc>
</doc>
<inherit name='GTKSupport'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1'/><classname>GTKSupport</classname></inherit>
</docgroup>
<docgroup homogen-name='FALSE' homogen-type='constant'><doc/>
<constant name='FALSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='3'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_ASK' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_ASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='7'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_COPY' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_COPY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='11'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_DEFAULT' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_DEFAULT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='15'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_LINK' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_LINK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='19'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_MOVE' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_MOVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='23'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ACTION_PRIVATE' homogen-type='constant'><doc/>
<constant name='GDK_ACTION_PRIVATE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='27'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ALL_EVENTS_MASK' homogen-type='constant'><doc/>
<constant name='GDK_ALL_EVENTS_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='31'/></constant>
</docgroup>
<docgroup homogen-name='GDK_AND' homogen-type='constant'><doc/>
<constant name='GDK_AND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='35'/></constant>
</docgroup>
<docgroup homogen-name='GDK_AND_INVERT' homogen-type='constant'><doc/>
<constant name='GDK_AND_INVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='39'/></constant>
</docgroup>
<docgroup homogen-name='GDK_AND_REVERSE' homogen-type='constant'><doc/>
<constant name='GDK_AND_REVERSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='43'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='47'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BASED_ARROW_DOWN' homogen-type='constant'><doc/>
<constant name='GDK_BASED_ARROW_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='51'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BASED_ARROW_UP' homogen-type='constant'><doc/>
<constant name='GDK_BASED_ARROW_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='55'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOAT' homogen-type='constant'><doc/>
<constant name='GDK_BOAT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='59'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOGOSITY' homogen-type='constant'><doc/>
<constant name='GDK_BOGOSITY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='63'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOTTOM_LEFT_CORNER' homogen-type='constant'><doc/>
<constant name='GDK_BOTTOM_LEFT_CORNER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='67'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOTTOM_RIGHT_CORNER' homogen-type='constant'><doc/>
<constant name='GDK_BOTTOM_RIGHT_CORNER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='71'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOTTOM_SIDE' homogen-type='constant'><doc/>
<constant name='GDK_BOTTOM_SIDE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='75'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOTTOM_TEE' homogen-type='constant'><doc/>
<constant name='GDK_BOTTOM_TEE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='79'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BOX_SPIRAL' homogen-type='constant'><doc/>
<constant name='GDK_BOX_SPIRAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='83'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON1_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON1_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='87'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON1_MOTION_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON1_MOTION_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='91'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON2_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON2_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='95'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON2_MOTION_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON2_MOTION_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='99'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON3_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON3_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='103'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON3_MOTION_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON3_MOTION_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='107'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON_MOTION_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON_MOTION_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='111'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON_PRESS_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON_PRESS_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='115'/></constant>
</docgroup>
<docgroup homogen-name='GDK_BUTTON_RELEASE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_BUTTON_RELEASE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='119'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CAP_BUTT' homogen-type='constant'><doc/>
<constant name='GDK_CAP_BUTT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='123'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CAP_NOT_LAST' homogen-type='constant'><doc/>
<constant name='GDK_CAP_NOT_LAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='127'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CAP_PROJECTING' homogen-type='constant'><doc/>
<constant name='GDK_CAP_PROJECTING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='131'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CAP_ROUND' homogen-type='constant'><doc/>
<constant name='GDK_CAP_ROUND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='135'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CENTER_PTR' homogen-type='constant'><doc/>
<constant name='GDK_CENTER_PTR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='139'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CIRCLE' homogen-type='constant'><doc/>
<constant name='GDK_CIRCLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='143'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CLEAR' homogen-type='constant'><doc/>
<constant name='GDK_CLEAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='147'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CLOCK' homogen-type='constant'><doc/>
<constant name='GDK_CLOCK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='151'/></constant>
</docgroup>
<docgroup homogen-name='GDK_COFFEE_MUG' homogen-type='constant'><doc/>
<constant name='GDK_COFFEE_MUG'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='155'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CONTROL_MASK' homogen-type='constant'><doc/>
<constant name='GDK_CONTROL_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='159'/></constant>
</docgroup>
<docgroup homogen-name='GDK_COPY' homogen-type='constant'><doc/>
<constant name='GDK_COPY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='163'/></constant>
</docgroup>
<docgroup homogen-name='GDK_COPY_INVERT' homogen-type='constant'><doc/>
<constant name='GDK_COPY_INVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='167'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CROSS' homogen-type='constant'><doc/>
<constant name='GDK_CROSS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='171'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CROSSHAIR' homogen-type='constant'><doc/>
<constant name='GDK_CROSSHAIR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='175'/></constant>
</docgroup>
<docgroup homogen-name='GDK_CROSS_REVERSE' homogen-type='constant'><doc/>
<constant name='GDK_CROSS_REVERSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='179'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_ALL' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_ALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='183'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_BORDER' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_BORDER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='187'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_MAXIMIZE' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_MAXIMIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='191'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_MENU' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_MENU'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='195'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_MINIMIZE' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_MINIMIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='199'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_RESIZEH' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_RESIZEH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='203'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DECOR_TITLE' homogen-type='constant'><doc/>
<constant name='GDK_DECOR_TITLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='207'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DIAMOND_CROSS' homogen-type='constant'><doc/>
<constant name='GDK_DIAMOND_CROSS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='211'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DOT' homogen-type='constant'><doc/>
<constant name='GDK_DOT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='215'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DOTBOX' homogen-type='constant'><doc/>
<constant name='GDK_DOTBOX'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='219'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DOUBLE_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_DOUBLE_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='223'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAFT_LARGE' homogen-type='constant'><doc/>
<constant name='GDK_DRAFT_LARGE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='227'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAFT_SMALL' homogen-type='constant'><doc/>
<constant name='GDK_DRAFT_SMALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='231'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAG_PROTO_MOTIF' homogen-type='constant'><doc/>
<constant name='GDK_DRAG_PROTO_MOTIF'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='235'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAG_PROTO_ROOTWIN' homogen-type='constant'><doc/>
<constant name='GDK_DRAG_PROTO_ROOTWIN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='239'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAG_PROTO_XDND' homogen-type='constant'><doc/>
<constant name='GDK_DRAG_PROTO_XDND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='243'/></constant>
</docgroup>
<docgroup homogen-name='GDK_DRAPED_BOX' homogen-type='constant'><doc/>
<constant name='GDK_DRAPED_BOX'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='247'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ENTER_NOTIFY_MASK' homogen-type='constant'><doc/>
<constant name='GDK_ENTER_NOTIFY_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='251'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EQUIV' homogen-type='constant'><doc/>
<constant name='GDK_EQUIV'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='255'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EVEN_ODD_RULE' homogen-type='constant'><doc/>
<constant name='GDK_EVEN_ODD_RULE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='259'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EXCHANGE' homogen-type='constant'><doc/>
<constant name='GDK_EXCHANGE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='263'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EXPOSURE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_EXPOSURE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='267'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EXTENSION_EVENTS_ALL' homogen-type='constant'><doc/>
<constant name='GDK_EXTENSION_EVENTS_ALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='271'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EXTENSION_EVENTS_CURSOR' homogen-type='constant'><doc/>
<constant name='GDK_EXTENSION_EVENTS_CURSOR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='275'/></constant>
</docgroup>
<docgroup homogen-name='GDK_EXTENSION_EVENTS_NONE' homogen-type='constant'><doc/>
<constant name='GDK_EXTENSION_EVENTS_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='279'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FLEUR' homogen-type='constant'><doc/>
<constant name='GDK_FLEUR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='283'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FOCUS_CHANGE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_FOCUS_CHANGE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='287'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_ALL' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_ALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='291'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_CLOSE' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_CLOSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='295'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_MAXIMIZE' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_MAXIMIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='299'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_MINIMIZE' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_MINIMIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='303'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_MOVE' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_MOVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='307'/></constant>
</docgroup>
<docgroup homogen-name='GDK_FUNC_RESIZE' homogen-type='constant'><doc/>
<constant name='GDK_FUNC_RESIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='311'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_ACCUM_ALPHA_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_ACCUM_ALPHA_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='315'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_ACCUM_BLUE_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_ACCUM_BLUE_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='319'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_ACCUM_GREEN_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_ACCUM_GREEN_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='323'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_ACCUM_RED_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_ACCUM_RED_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='327'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_ALPHA_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_ALPHA_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='331'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_AUX_BUFFERS' homogen-type='constant'><doc/>
<constant name='GDK_GL_AUX_BUFFERS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='335'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_BLUE_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_BLUE_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='339'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_BUFFER_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_BUFFER_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='343'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_DEPTH_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_DEPTH_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='347'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_DOUBLEBUFFER' homogen-type='constant'><doc/>
<constant name='GDK_GL_DOUBLEBUFFER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='351'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_GREEN_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_GREEN_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='355'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_LEVEL' homogen-type='constant'><doc/>
<constant name='GDK_GL_LEVEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='359'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_NONE' homogen-type='constant'><doc/>
<constant name='GDK_GL_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='363'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_RED_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_RED_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='367'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_RGBA' homogen-type='constant'><doc/>
<constant name='GDK_GL_RGBA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='371'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_STENCIL_SIZE' homogen-type='constant'><doc/>
<constant name='GDK_GL_STENCIL_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='375'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_STEREO' homogen-type='constant'><doc/>
<constant name='GDK_GL_STEREO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='379'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_ALPHA_VALUE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_ALPHA_VALUE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='383'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_BLUE_VALUE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_BLUE_VALUE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='387'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_GREEN_VALUE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_GREEN_VALUE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='391'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_INDEX_VALUE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_INDEX_VALUE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='395'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_RED_VALUE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_RED_VALUE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='399'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_TRANSPARENT_TYPE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_TRANSPARENT_TYPE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='403'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_USE_GL' homogen-type='constant'><doc/>
<constant name='GDK_GL_USE_GL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='407'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GL_X_VISUAL_TYPE_EXT' homogen-type='constant'><doc/>
<constant name='GDK_GL_X_VISUAL_TYPE_EXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='411'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GOBBLER' homogen-type='constant'><doc/>
<constant name='GDK_GOBBLER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='415'/></constant>
</docgroup>
<docgroup homogen-name='GDK_GUMBY' homogen-type='constant'><doc/>
<constant name='GDK_GUMBY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='419'/></constant>
</docgroup>
<docgroup homogen-name='GDK_HAND1' homogen-type='constant'><doc/>
<constant name='GDK_HAND1'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='423'/></constant>
</docgroup>
<docgroup homogen-name='GDK_HAND2' homogen-type='constant'><doc/>
<constant name='GDK_HAND2'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='427'/></constant>
</docgroup>
<docgroup homogen-name='GDK_HEART' homogen-type='constant'><doc/>
<constant name='GDK_HEART'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='431'/></constant>
</docgroup>
<docgroup homogen-name='GDK_ICON' homogen-type='constant'><doc/>
<constant name='GDK_ICON'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='435'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_AREA' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_AREA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='439'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_CALLBACKS' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_CALLBACKS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='443'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_MASK' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='447'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_NONE' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='451'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_NOTHING' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_NOTHING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='455'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_PREEDIT_POSITION' homogen-type='constant'><doc/>
<constant name='GDK_IM_PREEDIT_POSITION'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='459'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_STATUS_AREA' homogen-type='constant'><doc/>
<constant name='GDK_IM_STATUS_AREA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='463'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_STATUS_CALLBACKS' homogen-type='constant'><doc/>
<constant name='GDK_IM_STATUS_CALLBACKS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='467'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_STATUS_MASK' homogen-type='constant'><doc/>
<constant name='GDK_IM_STATUS_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='471'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_STATUS_NONE' homogen-type='constant'><doc/>
<constant name='GDK_IM_STATUS_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='475'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IM_STATUS_NOTHING' homogen-type='constant'><doc/>
<constant name='GDK_IM_STATUS_NOTHING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='479'/></constant>
</docgroup>
<docgroup homogen-name='GDK_INVERT' homogen-type='constant'><doc/>
<constant name='GDK_INVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='483'/></constant>
</docgroup>
<docgroup homogen-name='GDK_IRON_CROSS' homogen-type='constant'><doc/>
<constant name='GDK_IRON_CROSS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='487'/></constant>
</docgroup>
<docgroup homogen-name='GDK_JOIN_BEVEL' homogen-type='constant'><doc/>
<constant name='GDK_JOIN_BEVEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='491'/></constant>
</docgroup>
<docgroup homogen-name='GDK_JOIN_MITER' homogen-type='constant'><doc/>
<constant name='GDK_JOIN_MITER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='495'/></constant>
</docgroup>
<docgroup homogen-name='GDK_JOIN_ROUND' homogen-type='constant'><doc/>
<constant name='GDK_JOIN_ROUND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='499'/></constant>
</docgroup>
<docgroup homogen-name='GDK_KEY_PRESS_MASK' homogen-type='constant'><doc/>
<constant name='GDK_KEY_PRESS_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='503'/></constant>
</docgroup>
<docgroup homogen-name='GDK_KEY_RELEASE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_KEY_RELEASE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='507'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LEAVE_NOTIFY_MASK' homogen-type='constant'><doc/>
<constant name='GDK_LEAVE_NOTIFY_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='511'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LEFTBUTTON' homogen-type='constant'><doc/>
<constant name='GDK_LEFTBUTTON'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='515'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LEFT_PTR' homogen-type='constant'><doc/>
<constant name='GDK_LEFT_PTR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='519'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LEFT_SIDE' homogen-type='constant'><doc/>
<constant name='GDK_LEFT_SIDE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='523'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LEFT_TEE' homogen-type='constant'><doc/>
<constant name='GDK_LEFT_TEE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='527'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LINE_DOUBLE_DASH' homogen-type='constant'><doc/>
<constant name='GDK_LINE_DOUBLE_DASH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='531'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LINE_ON_OFF_DASH' homogen-type='constant'><doc/>
<constant name='GDK_LINE_ON_OFF_DASH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='535'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LINE_SOLID' homogen-type='constant'><doc/>
<constant name='GDK_LINE_SOLID'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='539'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LL_ANGLE' homogen-type='constant'><doc/>
<constant name='GDK_LL_ANGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='543'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LOCK_MASK' homogen-type='constant'><doc/>
<constant name='GDK_LOCK_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='547'/></constant>
</docgroup>
<docgroup homogen-name='GDK_LR_ANGLE' homogen-type='constant'><doc/>
<constant name='GDK_LR_ANGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='551'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MAN' homogen-type='constant'><doc/>
<constant name='GDK_MAN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='555'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MIDDLEBUTTON' homogen-type='constant'><doc/>
<constant name='GDK_MIDDLEBUTTON'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='559'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOD1_MASK' homogen-type='constant'><doc/>
<constant name='GDK_MOD1_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='563'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOD2_MASK' homogen-type='constant'><doc/>
<constant name='GDK_MOD2_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='567'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOD3_MASK' homogen-type='constant'><doc/>
<constant name='GDK_MOD3_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='571'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOD4_MASK' homogen-type='constant'><doc/>
<constant name='GDK_MOD4_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='575'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOD5_MASK' homogen-type='constant'><doc/>
<constant name='GDK_MOD5_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='579'/></constant>
</docgroup>
<docgroup homogen-name='GDK_MOUSE' homogen-type='constant'><doc/>
<constant name='GDK_MOUSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='583'/></constant>
</docgroup>
<docgroup homogen-name='GDK_NAND' homogen-type='constant'><doc/>
<constant name='GDK_NAND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='587'/></constant>
</docgroup>
<docgroup homogen-name='GDK_NOOP' homogen-type='constant'><doc/>
<constant name='GDK_NOOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='591'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OPAQUE_STIPPLED' homogen-type='constant'><doc/>
<constant name='GDK_OPAQUE_STIPPLED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='595'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OR' homogen-type='constant'><doc/>
<constant name='GDK_OR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='599'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OR_INVERT' homogen-type='constant'><doc/>
<constant name='GDK_OR_INVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='603'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OR_REVERSE' homogen-type='constant'><doc/>
<constant name='GDK_OR_REVERSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='607'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OVERLAP_RECTANGLE_IN' homogen-type='constant'><doc/>
<constant name='GDK_OVERLAP_RECTANGLE_IN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='611'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OVERLAP_RECTANGLE_OUT' homogen-type='constant'><doc/>
<constant name='GDK_OVERLAP_RECTANGLE_OUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='615'/></constant>
</docgroup>
<docgroup homogen-name='GDK_OVERLAP_RECTANGLE_PART' homogen-type='constant'><doc/>
<constant name='GDK_OVERLAP_RECTANGLE_PART'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='619'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PENCIL' homogen-type='constant'><doc/>
<constant name='GDK_PENCIL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='623'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PIRATE' homogen-type='constant'><doc/>
<constant name='GDK_PIRATE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='627'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PLUS' homogen-type='constant'><doc/>
<constant name='GDK_PLUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='631'/></constant>
</docgroup>
<docgroup homogen-name='GDK_POINTER_MOTION_HINT_MASK' homogen-type='constant'><doc/>
<constant name='GDK_POINTER_MOTION_HINT_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='635'/></constant>
</docgroup>
<docgroup homogen-name='GDK_POINTER_MOTION_MASK' homogen-type='constant'><doc/>
<constant name='GDK_POINTER_MOTION_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='639'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROPERTY_CHANGE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_PROPERTY_CHANGE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='643'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROP_MODE_APPEND' homogen-type='constant'><doc/>
<constant name='GDK_PROP_MODE_APPEND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='647'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROP_MODE_PREPEND' homogen-type='constant'><doc/>
<constant name='GDK_PROP_MODE_PREPEND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='651'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROP_MODE_REPLACE' homogen-type='constant'><doc/>
<constant name='GDK_PROP_MODE_REPLACE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='655'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROXIMITY_IN_MASK' homogen-type='constant'><doc/>
<constant name='GDK_PROXIMITY_IN_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='659'/></constant>
</docgroup>
<docgroup homogen-name='GDK_PROXIMITY_OUT_MASK' homogen-type='constant'><doc/>
<constant name='GDK_PROXIMITY_OUT_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='663'/></constant>
</docgroup>
<docgroup homogen-name='GDK_QUESTION_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_QUESTION_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='667'/></constant>
</docgroup>
<docgroup homogen-name='GDK_RIGHTBUTTON' homogen-type='constant'><doc/>
<constant name='GDK_RIGHTBUTTON'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='671'/></constant>
</docgroup>
<docgroup homogen-name='GDK_RIGHT_PTR' homogen-type='constant'><doc/>
<constant name='GDK_RIGHT_PTR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='675'/></constant>
</docgroup>
<docgroup homogen-name='GDK_RIGHT_SIDE' homogen-type='constant'><doc/>
<constant name='GDK_RIGHT_SIDE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='679'/></constant>
</docgroup>
<docgroup homogen-name='GDK_RIGHT_TEE' homogen-type='constant'><doc/>
<constant name='GDK_RIGHT_TEE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='683'/></constant>
</docgroup>
<docgroup homogen-name='GDK_RTL_LOGO' homogen-type='constant'><doc/>
<constant name='GDK_RTL_LOGO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='687'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SAILBOAT' homogen-type='constant'><doc/>
<constant name='GDK_SAILBOAT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='691'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_DOWN_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_DOWN_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='695'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_H_DOUBLE_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_H_DOUBLE_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='699'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_LEFT_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_LEFT_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='703'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_RIGHT_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_RIGHT_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='707'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_UP_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_UP_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='711'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SB_V_DOUBLE_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_SB_V_DOUBLE_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='715'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_ATOM' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_ATOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='719'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_BITMAP' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_BITMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='723'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_COLORMAP' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_COLORMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='727'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_DRAWABLE' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_DRAWABLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='731'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_INTEGER' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_INTEGER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='735'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_PIXMAP' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_PIXMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='739'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_STRING' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_STRING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='743'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SELECTION_TYPE_WINDOW' homogen-type='constant'><doc/>
<constant name='GDK_SELECTION_TYPE_WINDOW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='747'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SET' homogen-type='constant'><doc/>
<constant name='GDK_SET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='751'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SHIFT_MASK' homogen-type='constant'><doc/>
<constant name='GDK_SHIFT_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='755'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SHUTTLE' homogen-type='constant'><doc/>
<constant name='GDK_SHUTTLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='759'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SIZING' homogen-type='constant'><doc/>
<constant name='GDK_SIZING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='763'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SOLID' homogen-type='constant'><doc/>
<constant name='GDK_SOLID'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='767'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SPIDER' homogen-type='constant'><doc/>
<constant name='GDK_SPIDER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='771'/></constant>
</docgroup>
<docgroup homogen-name='GDK_SPRAYCAN' homogen-type='constant'><doc/>
<constant name='GDK_SPRAYCAN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='775'/></constant>
</docgroup>
<docgroup homogen-name='GDK_STAR' homogen-type='constant'><doc/>
<constant name='GDK_STAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='779'/></constant>
</docgroup>
<docgroup homogen-name='GDK_STIPPLED' homogen-type='constant'><doc/>
<constant name='GDK_STIPPLED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='783'/></constant>
</docgroup>
<docgroup homogen-name='GDK_STRUCTURE_MASK' homogen-type='constant'><doc/>
<constant name='GDK_STRUCTURE_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='787'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET' homogen-type='constant'><doc/>
<constant name='GDK_TARGET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='791'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET_BITMAP' homogen-type='constant'><doc/>
<constant name='GDK_TARGET_BITMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='795'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET_COLORMAP' homogen-type='constant'><doc/>
<constant name='GDK_TARGET_COLORMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='799'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET_DRAWABLE' homogen-type='constant'><doc/>
<constant name='GDK_TARGET_DRAWABLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='803'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET_PIXMAP' homogen-type='constant'><doc/>
<constant name='GDK_TARGET_PIXMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='807'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TARGET_STRING' homogen-type='constant'><doc/>
<constant name='GDK_TARGET_STRING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='811'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TCROSS' homogen-type='constant'><doc/>
<constant name='GDK_TCROSS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='815'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TILED' homogen-type='constant'><doc/>
<constant name='GDK_TILED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='819'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TOP_LEFT_ARROW' homogen-type='constant'><doc/>
<constant name='GDK_TOP_LEFT_ARROW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='823'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TOP_LEFT_CORNER' homogen-type='constant'><doc/>
<constant name='GDK_TOP_LEFT_CORNER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='827'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TOP_RIGHT_CORNER' homogen-type='constant'><doc/>
<constant name='GDK_TOP_RIGHT_CORNER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='831'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TOP_SIDE' homogen-type='constant'><doc/>
<constant name='GDK_TOP_SIDE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='835'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TOP_TEE' homogen-type='constant'><doc/>
<constant name='GDK_TOP_TEE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='839'/></constant>
</docgroup>
<docgroup homogen-name='GDK_TREK' homogen-type='constant'><doc/>
<constant name='GDK_TREK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='843'/></constant>
</docgroup>
<docgroup homogen-name='GDK_UL_ANGLE' homogen-type='constant'><doc/>
<constant name='GDK_UL_ANGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='847'/></constant>
</docgroup>
<docgroup homogen-name='GDK_UMBRELLA' homogen-type='constant'><doc/>
<constant name='GDK_UMBRELLA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='851'/></constant>
</docgroup>
<docgroup homogen-name='GDK_UR_ANGLE' homogen-type='constant'><doc/>
<constant name='GDK_UR_ANGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='855'/></constant>
</docgroup>
<docgroup homogen-name='GDK_VISIBILITY_NOTIFY_MASK' homogen-type='constant'><doc/>
<constant name='GDK_VISIBILITY_NOTIFY_MASK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='859'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WATCH' homogen-type='constant'><doc/>
<constant name='GDK_WATCH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='863'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDING_RULE' homogen-type='constant'><doc/>
<constant name='GDK_WINDING_RULE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='867'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_CHILD' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_CHILD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='871'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_DIALOG' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_DIALOG'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='875'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_FOREIGN' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_FOREIGN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='879'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_ROOT' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_ROOT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='883'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_TEMP' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_TEMP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='887'/></constant>
</docgroup>
<docgroup homogen-name='GDK_WINDOW_TOPLEVEL' homogen-type='constant'><doc/>
<constant name='GDK_WINDOW_TOPLEVEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='891'/></constant>
</docgroup>
<docgroup homogen-name='GDK_XOR' homogen-type='constant'><doc/>
<constant name='GDK_XOR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='895'/></constant>
</docgroup>
<docgroup homogen-name='GDK_XTERM' homogen-type='constant'><doc/>
<constant name='GDK_XTERM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='899'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_BOTTOM' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='903'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_EXCLUSIVE' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_EXCLUSIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='907'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_LOCKED' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_LOCKED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='911'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_NEVER_FLOATING' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_NEVER_FLOATING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='915'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_NEVER_HORIZONTAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='919'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_NEVER_VERTICAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='923'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_ITEM_BEH_NORMAL' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_ITEM_BEH_NORMAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='927'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_LEFT' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='931'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_RIGHT' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='935'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_DOCK_TOP' homogen-type='constant'><doc/>
<constant name='GNOME_DOCK_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='939'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_FONT_PICKER_MODE_FONT_INFO' homogen-type='constant'><doc/>
<constant name='GNOME_FONT_PICKER_MODE_FONT_INFO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='943'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_FONT_PICKER_MODE_PIXMAP' homogen-type='constant'><doc/>
<constant name='GNOME_FONT_PICKER_MODE_PIXMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='947'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_FONT_PICKER_MODE_UNKNOWN' homogen-type='constant'><doc/>
<constant name='GNOME_FONT_PICKER_MODE_UNKNOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='951'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_FONT_PICKER_MODE_USER_WIDGET' homogen-type='constant'><doc/>
<constant name='GNOME_FONT_PICKER_MODE_USER_WIDGET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='955'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_ICON_LIST_ICONS' homogen-type='constant'><doc/>
<constant name='GNOME_ICON_LIST_ICONS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='959'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_ICON_LIST_IS_EDITABLE' homogen-type='constant'><doc/>
<constant name='GNOME_ICON_LIST_IS_EDITABLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='963'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_ICON_LIST_STATIC_TEXT' homogen-type='constant'><doc/>
<constant name='GNOME_ICON_LIST_STATIC_TEXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='967'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_ICON_LIST_TEXT_BELOW' homogen-type='constant'><doc/>
<constant name='GNOME_ICON_LIST_TEXT_BELOW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='971'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_ICON_LIST_TEXT_RIGHT' homogen-type='constant'><doc/>
<constant name='GNOME_ICON_LIST_TEXT_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='975'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_MESSAGE_BOX_ERROR' homogen-type='constant'><doc/>
<constant name='GNOME_MESSAGE_BOX_ERROR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='979'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_MESSAGE_BOX_GENERIC' homogen-type='constant'><doc/>
<constant name='GNOME_MESSAGE_BOX_GENERIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='983'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_MESSAGE_BOX_INFO' homogen-type='constant'><doc/>
<constant name='GNOME_MESSAGE_BOX_INFO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='987'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_MESSAGE_BOX_QUESTION' homogen-type='constant'><doc/>
<constant name='GNOME_MESSAGE_BOX_QUESTION'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='991'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_MESSAGE_BOX_WARNING' homogen-type='constant'><doc/>
<constant name='GNOME_MESSAGE_BOX_WARNING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='995'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_PREFERENCES_ALWAYS' homogen-type='constant'><doc/>
<constant name='GNOME_PREFERENCES_ALWAYS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='999'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_PREFERENCES_NEVER' homogen-type='constant'><doc/>
<constant name='GNOME_PREFERENCES_NEVER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1003'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_PREFERENCES_USER' homogen-type='constant'><doc/>
<constant name='GNOME_PREFERENCES_USER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1007'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_Panel_ORIENT_DOWN' homogen-type='constant'><doc/>
<constant name='GNOME_Panel_ORIENT_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1011'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_Panel_ORIENT_LEFT' homogen-type='constant'><doc/>
<constant name='GNOME_Panel_ORIENT_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1015'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_Panel_ORIENT_RIGHT' homogen-type='constant'><doc/>
<constant name='GNOME_Panel_ORIENT_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1019'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_Panel_ORIENT_UP' homogen-type='constant'><doc/>
<constant name='GNOME_Panel_ORIENT_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1023'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_APPLY' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_APPLY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1027'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_CANCEL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_CANCEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1031'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_CLOSE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_CLOSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1035'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_DOWN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1039'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_FONT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_FONT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1043'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_HELP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_HELP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1047'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_NEXT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_NEXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1051'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_NO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_NO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1055'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_OK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_OK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1059'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_PREV' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_PREV'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1063'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_UP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1067'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_BUTTON_YES' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_BUTTON_YES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1071'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ABOUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ABOUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1075'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ALIGN_CENTER' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ALIGN_CENTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1079'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ALIGN_JUSTIFY' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ALIGN_JUSTIFY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1083'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ALIGN_LEFT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ALIGN_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1087'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ALIGN_RIGHT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ALIGN_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1091'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_ATTACH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_ATTACH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1095'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BACK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BACK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1099'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BLANK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BLANK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1103'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOOK_BLUE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOOK_BLUE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1107'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOOK_GREEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOOK_GREEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1111'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOOK_OPEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOOK_OPEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1115'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOOK_RED' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOOK_RED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1119'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOOK_YELLOW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOOK_YELLOW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1123'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_BOTTOM' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1127'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_CDROM' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_CDROM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1131'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_CLOSE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_CLOSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1135'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_CONVERT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_CONVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1139'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_COPY' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_COPY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1143'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_CUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_CUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1147'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_DOWN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1151'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_EXEC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_EXEC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1155'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_EXIT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_EXIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1159'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_FIRST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_FIRST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1163'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_FONT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_FONT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1167'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_FORWARD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1171'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_HOME' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_HOME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1175'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_INDEX' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_INDEX'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1179'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_JUMP_TO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_JUMP_TO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1183'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_LAST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_LAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1187'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_LINE_IN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_LINE_IN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1191'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1195'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL_FWD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL_FWD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1199'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL_NEW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL_NEW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1203'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL_RCV' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL_RCV'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1207'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL_RPL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL_RPL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1211'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MAIL_SND' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MAIL_SND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1215'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MIC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1219'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_MIDI' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_MIDI'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1223'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_NEW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_NEW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1227'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_OPEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_OPEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1231'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_PASTE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_PASTE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1235'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_PREF' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_PREF'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1239'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_PRINT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_PRINT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1243'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_PROP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_PROP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1247'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_QUIT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_QUIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1251'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_REDO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_REDO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1255'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_REFRESH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_REFRESH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1259'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_REVERT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_REVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1263'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SAVE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SAVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1267'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SAVE_AS' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SAVE_AS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1271'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SCORES' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SCORES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1275'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SEARCH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SEARCH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1279'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SPELLCHECK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SPELLCHECK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1283'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_SRCHRPL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_SRCHRPL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1287'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_STOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_STOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1291'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TEXT_BOLD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TEXT_BOLD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1295'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TEXT_ITALIC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TEXT_ITALIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1299'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TEXT_STRIKEOUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TEXT_STRIKEOUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1303'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TEXT_UNDERLINE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TEXT_UNDERLINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1307'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TIMER' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TIMER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1311'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TIMER_STOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TIMER_STOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1315'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1319'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TRASH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TRASH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1323'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_TRASH_FULL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_TRASH_FULL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1327'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_UNDELETE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_UNDELETE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1331'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_UNDO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_UNDO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1335'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_UP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1339'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_MENU_VOLUME' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_MENU_VOLUME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1343'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ABOUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ABOUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1347'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ADD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ADD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1351'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ALIGN_CENTER' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ALIGN_CENTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1355'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ALIGN_JUSTIFY' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ALIGN_JUSTIFY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1359'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ALIGN_LEFT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ALIGN_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1363'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ALIGN_RIGHT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ALIGN_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1367'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_ATTACH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_ATTACH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1371'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BACK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BACK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1375'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOOK_BLUE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOOK_BLUE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1379'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOOK_GREEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOOK_GREEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1383'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOOK_OPEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOOK_OPEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1387'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOOK_RED' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOOK_RED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1391'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOOK_YELLOW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOOK_YELLOW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1395'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_BOTTOM' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1399'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_CDROM' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_CDROM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1403'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_CLEAR' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_CLEAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1407'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_CLOSE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_CLOSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1411'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_COLORSELECTOR' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_COLORSELECTOR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1415'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_CONVERT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_CONVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1419'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_COPY' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_COPY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1423'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_CUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_CUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1427'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_DISABLED' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_DISABLED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1431'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_DOWN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1435'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_EXEC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_EXEC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1439'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_EXIT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_EXIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1443'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_FIRST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_FIRST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1447'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_FOCUSED' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_FOCUSED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1451'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_FONT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_FONT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1455'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_FORWARD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1459'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_HELP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_HELP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1463'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_HOME' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_HOME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1467'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_INDEX' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_INDEX'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1471'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_JUMP_TO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_JUMP_TO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1475'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_LAST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_LAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1479'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_LINE_IN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_LINE_IN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1483'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1487'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL_FWD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL_FWD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1491'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL_NEW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL_NEW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1495'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL_RCV' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL_RCV'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1499'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL_RPL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL_RPL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1503'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MAIL_SND' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MAIL_SND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1507'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MIC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1511'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MIDI' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MIDI'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1515'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_MULTIPLE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_MULTIPLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1519'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_NEW' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_NEW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1523'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_NOT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_NOT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1527'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_OPEN' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_OPEN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1531'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_PASTE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_PASTE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1535'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_PREFERENCES' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_PREFERENCES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1539'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_PRINT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_PRINT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1543'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_PROPERTIES' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_PROPERTIES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1547'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_QUIT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_QUIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1551'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_REDO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_REDO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1555'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_REFRESH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_REFRESH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1559'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_REGULAR' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_REGULAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1563'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_REMOVE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_REMOVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1567'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_REVERT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_REVERT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1571'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SAVE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SAVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1575'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SAVE_AS' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SAVE_AS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1579'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SCORES' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SCORES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1583'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SEARCH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SEARCH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1587'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SPELLCHECK' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SPELLCHECK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1591'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_SRCHRPL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_SRCHRPL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1595'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_STOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_STOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1599'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TABLE_BORDERS' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TABLE_BORDERS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1603'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TABLE_FILL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TABLE_FILL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1607'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_BOLD' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_BOLD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1611'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_BULLETED_LIST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_BULLETED_LIST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1615'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_INDENT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_INDENT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1619'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_ITALIC' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_ITALIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1623'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_NUMBERED_LIST' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_NUMBERED_LIST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1627'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_STRIKEOUT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_STRIKEOUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1631'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_UNDERLINE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_UNDERLINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1635'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TEXT_UNINDENT' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TEXT_UNINDENT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1639'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TIMER' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TIMER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1643'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TIMER_STOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TIMER_STOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1647'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TOP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1651'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TRASH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TRASH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1655'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TRASH_FULL' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TRASH_FULL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1659'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_DATA' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_DATA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1663'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_FILE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_FILE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1667'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_GPIXMAP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_GPIXMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1671'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_IMLIB' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_IMLIB'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1675'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_IMLIB_SCALED' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_IMLIB_SCALED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1679'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_NONE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1683'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_PATH' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_PATH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1687'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_TYPE_WIDGET' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_TYPE_WIDGET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1691'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_UNDELETE' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_UNDELETE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1695'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_UNDO' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_UNDO'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1699'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_UP' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1703'/></constant>
</docgroup>
<docgroup homogen-name='GNOME_STOCK_PIXMAP_VOLUME' homogen-type='constant'><doc/>
<constant name='GNOME_STOCK_PIXMAP_VOLUME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1707'/></constant>
</docgroup>
<docgroup homogen-name='ACCEL_LOCKED' homogen-type='constant'><doc/>
<constant name='ACCEL_LOCKED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1711'/></constant>
</docgroup>
<docgroup homogen-name='ACCEL_SIGNAL_VISIBLE' homogen-type='constant'><doc/>
<constant name='ACCEL_SIGNAL_VISIBLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1715'/></constant>
</docgroup>
<docgroup homogen-name='ACCEL_VISIBLE' homogen-type='constant'><doc/>
<constant name='ACCEL_VISIBLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1719'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_CENTER' homogen-type='constant'><doc/>
<constant name='ANCHOR_CENTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1723'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_E' homogen-type='constant'><doc/>
<constant name='ANCHOR_E'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1727'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_EAST' homogen-type='constant'><doc/>
<constant name='ANCHOR_EAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1731'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_N' homogen-type='constant'><doc/>
<constant name='ANCHOR_N'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1735'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_NE' homogen-type='constant'><doc/>
<constant name='ANCHOR_NE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1739'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_NORTH' homogen-type='constant'><doc/>
<constant name='ANCHOR_NORTH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1743'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_NORTH_EAST' homogen-type='constant'><doc/>
<constant name='ANCHOR_NORTH_EAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1747'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_NORTH_WEST' homogen-type='constant'><doc/>
<constant name='ANCHOR_NORTH_WEST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1751'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_NW' homogen-type='constant'><doc/>
<constant name='ANCHOR_NW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1755'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_S' homogen-type='constant'><doc/>
<constant name='ANCHOR_S'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1759'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_SE' homogen-type='constant'><doc/>
<constant name='ANCHOR_SE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1763'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_SOUTH' homogen-type='constant'><doc/>
<constant name='ANCHOR_SOUTH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1767'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_SOUTH_EAST' homogen-type='constant'><doc/>
<constant name='ANCHOR_SOUTH_EAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1771'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_SOUTH_WEST' homogen-type='constant'><doc/>
<constant name='ANCHOR_SOUTH_WEST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1775'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_SW' homogen-type='constant'><doc/>
<constant name='ANCHOR_SW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1779'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_W' homogen-type='constant'><doc/>
<constant name='ANCHOR_W'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1783'/></constant>
</docgroup>
<docgroup homogen-name='ANCHOR_WEST' homogen-type='constant'><doc/>
<constant name='ANCHOR_WEST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1787'/></constant>
</docgroup>
<docgroup homogen-name='APP_PAINTABLE' homogen-type='constant'><doc/>
<constant name='APP_PAINTABLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1791'/></constant>
</docgroup>
<docgroup homogen-name='ARROW_DOWN' homogen-type='constant'><doc/>
<constant name='ARROW_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1795'/></constant>
</docgroup>
<docgroup homogen-name='ARROW_LEFT' homogen-type='constant'><doc/>
<constant name='ARROW_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1799'/></constant>
</docgroup>
<docgroup homogen-name='ARROW_RIGHT' homogen-type='constant'><doc/>
<constant name='ARROW_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1803'/></constant>
</docgroup>
<docgroup homogen-name='ARROW_UP' homogen-type='constant'><doc/>
<constant name='ARROW_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1807'/></constant>
</docgroup>
<docgroup homogen-name='BUTTONBOX_DEFAULT_STYLE' homogen-type='constant'><doc/>
<constant name='BUTTONBOX_DEFAULT_STYLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1811'/></constant>
</docgroup>
<docgroup homogen-name='BUTTONBOX_EDGE' homogen-type='constant'><doc/>
<constant name='BUTTONBOX_EDGE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1815'/></constant>
</docgroup>
<docgroup homogen-name='BUTTONBOX_END' homogen-type='constant'><doc/>
<constant name='BUTTONBOX_END'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1819'/></constant>
</docgroup>
<docgroup homogen-name='BUTTONBOX_SPREAD' homogen-type='constant'><doc/>
<constant name='BUTTONBOX_SPREAD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1823'/></constant>
</docgroup>
<docgroup homogen-name='BUTTONBOX_START' homogen-type='constant'><doc/>
<constant name='BUTTONBOX_START'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1827'/></constant>
</docgroup>
<docgroup homogen-name='BUTTON_DRAGS' homogen-type='constant'><doc/>
<constant name='BUTTON_DRAGS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1831'/></constant>
</docgroup>
<docgroup homogen-name='BUTTON_EXPANDS' homogen-type='constant'><doc/>
<constant name='BUTTON_EXPANDS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1835'/></constant>
</docgroup>
<docgroup homogen-name='BUTTON_IGNORED' homogen-type='constant'><doc/>
<constant name='BUTTON_IGNORED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1839'/></constant>
</docgroup>
<docgroup homogen-name='BUTTON_SELECTS' homogen-type='constant'><doc/>
<constant name='BUTTON_SELECTS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1843'/></constant>
</docgroup>
<docgroup homogen-name='CALENDAR_NO_MONTH_CHANGE' homogen-type='constant'><doc/>
<constant name='CALENDAR_NO_MONTH_CHANGE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1847'/></constant>
</docgroup>
<docgroup homogen-name='CALENDAR_SHOW_DAY_NAMES' homogen-type='constant'><doc/>
<constant name='CALENDAR_SHOW_DAY_NAMES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1851'/></constant>
</docgroup>
<docgroup homogen-name='CALENDAR_SHOW_HEADING' homogen-type='constant'><doc/>
<constant name='CALENDAR_SHOW_HEADING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1855'/></constant>
</docgroup>
<docgroup homogen-name='CALENDAR_SHOW_WEEK_NUMBERS' homogen-type='constant'><doc/>
<constant name='CALENDAR_SHOW_WEEK_NUMBERS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1859'/></constant>
</docgroup>
<docgroup homogen-name='CALENDAR_WEEK_START_MONDAY' homogen-type='constant'><doc/>
<constant name='CALENDAR_WEEK_START_MONDAY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1863'/></constant>
</docgroup>
<docgroup homogen-name='CAN_DEFAULT' homogen-type='constant'><doc/>
<constant name='CAN_DEFAULT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1867'/></constant>
</docgroup>
<docgroup homogen-name='CAN_FOCUS' homogen-type='constant'><doc/>
<constant name='CAN_FOCUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1871'/></constant>
</docgroup>
<docgroup homogen-name='CELL_EMPTY' homogen-type='constant'><doc/>
<constant name='CELL_EMPTY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1875'/></constant>
</docgroup>
<docgroup homogen-name='CELL_PIXMAP' homogen-type='constant'><doc/>
<constant name='CELL_PIXMAP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1879'/></constant>
</docgroup>
<docgroup homogen-name='CELL_PIXTEXT' homogen-type='constant'><doc/>
<constant name='CELL_PIXTEXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1883'/></constant>
</docgroup>
<docgroup homogen-name='CELL_TEXT' homogen-type='constant'><doc/>
<constant name='CELL_TEXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1887'/></constant>
</docgroup>
<docgroup homogen-name='CELL_WIDGET' homogen-type='constant'><doc/>
<constant name='CELL_WIDGET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1891'/></constant>
</docgroup>
<docgroup homogen-name='CENTIMETERS' homogen-type='constant'><doc/>
<constant name='CENTIMETERS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1895'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_ADD_MODE' homogen-type='constant'><doc/>
<constant name='CLIST_ADD_MODE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1899'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_AUTO_RESIZE_BLOCKED' homogen-type='constant'><doc/>
<constant name='CLIST_AUTO_RESIZE_BLOCKED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1903'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_AUTO_SORT' homogen-type='constant'><doc/>
<constant name='CLIST_AUTO_SORT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1907'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_DRAW_DRAG_LINE' homogen-type='constant'><doc/>
<constant name='CLIST_DRAW_DRAG_LINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1911'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_DRAW_DRAG_RECT' homogen-type='constant'><doc/>
<constant name='CLIST_DRAW_DRAG_RECT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1915'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_IN_DRAG' homogen-type='constant'><doc/>
<constant name='CLIST_IN_DRAG'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1919'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_REORDERABLE' homogen-type='constant'><doc/>
<constant name='CLIST_REORDERABLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1923'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_ROW_HEIGHT_SET' homogen-type='constant'><doc/>
<constant name='CLIST_ROW_HEIGHT_SET'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1927'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_SHOW_TITLES' homogen-type='constant'><doc/>
<constant name='CLIST_SHOW_TITLES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1931'/></constant>
</docgroup>
<docgroup homogen-name='CLIST_USE_DRAG_ICONS' homogen-type='constant'><doc/>
<constant name='CLIST_USE_DRAG_ICONS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1935'/></constant>
</docgroup>
<docgroup homogen-name='CLOCK_DECREASING' homogen-type='constant'><doc/>
<constant name='CLOCK_DECREASING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1939'/></constant>
</docgroup>
<docgroup homogen-name='CLOCK_INCREASING' homogen-type='constant'><doc/>
<constant name='CLOCK_INCREASING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1943'/></constant>
</docgroup>
<docgroup homogen-name='CLOCK_REALTIME' homogen-type='constant'><doc/>
<constant name='CLOCK_REALTIME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1947'/></constant>
</docgroup>
<docgroup homogen-name='COMPOSITE_CHILD' homogen-type='constant'><doc/>
<constant name='COMPOSITE_CHILD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1951'/></constant>
</docgroup>
<docgroup homogen-name='CORNER_BOTTOM_LEFT' homogen-type='constant'><doc/>
<constant name='CORNER_BOTTOM_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1955'/></constant>
</docgroup>
<docgroup homogen-name='CORNER_BOTTOM_RIGHT' homogen-type='constant'><doc/>
<constant name='CORNER_BOTTOM_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1959'/></constant>
</docgroup>
<docgroup homogen-name='CORNER_TOP_LEFT' homogen-type='constant'><doc/>
<constant name='CORNER_TOP_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1963'/></constant>
</docgroup>
<docgroup homogen-name='CORNER_TOP_RIGHT' homogen-type='constant'><doc/>
<constant name='CORNER_TOP_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1967'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANDER_CIRCULAR' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANDER_CIRCULAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1971'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANDER_NONE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANDER_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1975'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANDER_SQUARE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANDER_SQUARE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1979'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANDER_TRIANGLE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANDER_TRIANGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1983'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_COLLAPSE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_COLLAPSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1987'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_COLLAPSE_RECURSIVE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_COLLAPSE_RECURSIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1991'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_EXPAND' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_EXPAND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1995'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_EXPAND_RECURSIVE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_EXPAND_RECURSIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='1999'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_TOGGLE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_TOGGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2003'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_EXPANSION_TOGGLE_RECURSIVE' homogen-type='constant'><doc/>
<constant name='CTREE_EXPANSION_TOGGLE_RECURSIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2007'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_LINES_DOTTED' homogen-type='constant'><doc/>
<constant name='CTREE_LINES_DOTTED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2011'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_LINES_NONE' homogen-type='constant'><doc/>
<constant name='CTREE_LINES_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2015'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_LINES_SOLID' homogen-type='constant'><doc/>
<constant name='CTREE_LINES_SOLID'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2019'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_LINES_TABBED' homogen-type='constant'><doc/>
<constant name='CTREE_LINES_TABBED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2023'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_POS_AFTER' homogen-type='constant'><doc/>
<constant name='CTREE_POS_AFTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2027'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_POS_AS_CHILD' homogen-type='constant'><doc/>
<constant name='CTREE_POS_AS_CHILD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2031'/></constant>
</docgroup>
<docgroup homogen-name='CTREE_POS_BEFORE' homogen-type='constant'><doc/>
<constant name='CTREE_POS_BEFORE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2035'/></constant>
</docgroup>
<docgroup homogen-name='CURVE_TYPE_FREE' homogen-type='constant'><doc/>
<constant name='CURVE_TYPE_FREE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2039'/></constant>
</docgroup>
<docgroup homogen-name='CURVE_TYPE_LINEAR' homogen-type='constant'><doc/>
<constant name='CURVE_TYPE_LINEAR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2043'/></constant>
</docgroup>
<docgroup homogen-name='CURVE_TYPE_SPLINE' homogen-type='constant'><doc/>
<constant name='CURVE_TYPE_SPLINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2047'/></constant>
</docgroup>
<docgroup homogen-name='DATABOX_BARS' homogen-type='constant'><doc/>
<constant name='DATABOX_BARS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2051'/></constant>
</docgroup>
<docgroup homogen-name='DATABOX_LINES' homogen-type='constant'><doc/>
<constant name='DATABOX_LINES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2055'/></constant>
</docgroup>
<docgroup homogen-name='DATABOX_NOT_DISPLAYED' homogen-type='constant'><doc/>
<constant name='DATABOX_NOT_DISPLAYED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2059'/></constant>
</docgroup>
<docgroup homogen-name='DATABOX_POINTS' homogen-type='constant'><doc/>
<constant name='DATABOX_POINTS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2063'/></constant>
</docgroup>
<docgroup homogen-name='DEST_DEFAULT_ALL' homogen-type='constant'><doc/>
<constant name='DEST_DEFAULT_ALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2067'/></constant>
</docgroup>
<docgroup homogen-name='DEST_DEFAULT_DROP' homogen-type='constant'><doc/>
<constant name='DEST_DEFAULT_DROP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2071'/></constant>
</docgroup>
<docgroup homogen-name='DEST_DEFAULT_HIGHLIGHT' homogen-type='constant'><doc/>
<constant name='DEST_DEFAULT_HIGHLIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2075'/></constant>
</docgroup>
<docgroup homogen-name='DEST_DEFAULT_MOTION' homogen-type='constant'><doc/>
<constant name='DEST_DEFAULT_MOTION'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2079'/></constant>
</docgroup>
<docgroup homogen-name='DIRECTION_LEFT' homogen-type='constant'><doc/>
<constant name='DIRECTION_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2083'/></constant>
</docgroup>
<docgroup homogen-name='DIRECTION_RIGHT' homogen-type='constant'><doc/>
<constant name='DIRECTION_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2087'/></constant>
</docgroup>
<docgroup homogen-name='DIR_DOWN' homogen-type='constant'><doc/>
<constant name='DIR_DOWN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2091'/></constant>
</docgroup>
<docgroup homogen-name='DIR_LEFT' homogen-type='constant'><doc/>
<constant name='DIR_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2095'/></constant>
</docgroup>
<docgroup homogen-name='DIR_RIGHT' homogen-type='constant'><doc/>
<constant name='DIR_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2099'/></constant>
</docgroup>
<docgroup homogen-name='DIR_TAB_BACKWARD' homogen-type='constant'><doc/>
<constant name='DIR_TAB_BACKWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2103'/></constant>
</docgroup>
<docgroup homogen-name='DIR_TAB_FORWARD' homogen-type='constant'><doc/>
<constant name='DIR_TAB_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2107'/></constant>
</docgroup>
<docgroup homogen-name='DIR_UP' homogen-type='constant'><doc/>
<constant name='DIR_UP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2111'/></constant>
</docgroup>
<docgroup homogen-name='EXPAND' homogen-type='constant'><doc/>
<constant name='EXPAND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2115'/></constant>
</docgroup>
<docgroup homogen-name='FILL' homogen-type='constant'><doc/>
<constant name='FILL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2119'/></constant>
</docgroup>
<docgroup homogen-name='FILL_X' homogen-type='constant'><doc/>
<constant name='FILL_X'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2123'/></constant>
</docgroup>
<docgroup homogen-name='FILL_Y' homogen-type='constant'><doc/>
<constant name='FILL_Y'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2127'/></constant>
</docgroup>
<docgroup homogen-name='HAS_DEFAULT' homogen-type='constant'><doc/>
<constant name='HAS_DEFAULT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2131'/></constant>
</docgroup>
<docgroup homogen-name='HAS_FOCUS' homogen-type='constant'><doc/>
<constant name='HAS_FOCUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2135'/></constant>
</docgroup>
<docgroup homogen-name='HAS_GRAB' homogen-type='constant'><doc/>
<constant name='HAS_GRAB'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2139'/></constant>
</docgroup>
<docgroup homogen-name='INCHES' homogen-type='constant'><doc/>
<constant name='INCHES'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2143'/></constant>
</docgroup>
<docgroup homogen-name='JUSTIFY_CENTER' homogen-type='constant'><doc/>
<constant name='JUSTIFY_CENTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2147'/></constant>
</docgroup>
<docgroup homogen-name='JUSTIFY_FILL' homogen-type='constant'><doc/>
<constant name='JUSTIFY_FILL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2151'/></constant>
</docgroup>
<docgroup homogen-name='JUSTIFY_LEFT' homogen-type='constant'><doc/>
<constant name='JUSTIFY_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2155'/></constant>
</docgroup>
<docgroup homogen-name='JUSTIFY_RIGHT' homogen-type='constant'><doc/>
<constant name='JUSTIFY_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2159'/></constant>
</docgroup>
<docgroup homogen-name='LEFT_RIGHT' homogen-type='constant'><doc/>
<constant name='LEFT_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2163'/></constant>
</docgroup>
<docgroup homogen-name='MAPPED' homogen-type='constant'><doc/>
<constant name='MAPPED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2167'/></constant>
</docgroup>
<docgroup homogen-name='NO_REPARENT' homogen-type='constant'><doc/>
<constant name='NO_REPARENT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2171'/></constant>
</docgroup>
<docgroup homogen-name='NO_WINDOW' homogen-type='constant'><doc/>
<constant name='NO_WINDOW'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2175'/></constant>
</docgroup>
<docgroup homogen-name='ORIENTATION_HORIZONTAL' homogen-type='constant'><doc/>
<constant name='ORIENTATION_HORIZONTAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2179'/></constant>
</docgroup>
<docgroup homogen-name='ORIENTATION_VERTICAL' homogen-type='constant'><doc/>
<constant name='ORIENTATION_VERTICAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2183'/></constant>
</docgroup>
<docgroup homogen-name='PACK_END' homogen-type='constant'><doc/>
<constant name='PACK_END'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2187'/></constant>
</docgroup>
<docgroup homogen-name='PACK_EXPAND' homogen-type='constant'><doc/>
<constant name='PACK_EXPAND'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2191'/></constant>
</docgroup>
<docgroup homogen-name='PACK_START' homogen-type='constant'><doc/>
<constant name='PACK_START'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2195'/></constant>
</docgroup>
<docgroup homogen-name='PARENT_SENSITIVE' homogen-type='constant'><doc/>
<constant name='PARENT_SENSITIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2199'/></constant>
</docgroup>
<docgroup homogen-name='PIXELS' homogen-type='constant'><doc/>
<constant name='PIXELS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2203'/></constant>
</docgroup>
<docgroup homogen-name='POLICY_ALWAYS' homogen-type='constant'><doc/>
<constant name='POLICY_ALWAYS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2207'/></constant>
</docgroup>
<docgroup homogen-name='POLICY_AUTOMATIC' homogen-type='constant'><doc/>
<constant name='POLICY_AUTOMATIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2211'/></constant>
</docgroup>
<docgroup homogen-name='POLICY_NEVER' homogen-type='constant'><doc/>
<constant name='POLICY_NEVER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2215'/></constant>
</docgroup>
<docgroup homogen-name='POS_BOTTOM' homogen-type='constant'><doc/>
<constant name='POS_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2219'/></constant>
</docgroup>
<docgroup homogen-name='POS_LEFT' homogen-type='constant'><doc/>
<constant name='POS_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2223'/></constant>
</docgroup>
<docgroup homogen-name='POS_RIGHT' homogen-type='constant'><doc/>
<constant name='POS_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2227'/></constant>
</docgroup>
<docgroup homogen-name='POS_TOP' homogen-type='constant'><doc/>
<constant name='POS_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2231'/></constant>
</docgroup>
<docgroup homogen-name='PREVIEW_COLOR' homogen-type='constant'><doc/>
<constant name='PREVIEW_COLOR'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2235'/></constant>
</docgroup>
<docgroup homogen-name='PREVIEW_GRAYSCALE' homogen-type='constant'><doc/>
<constant name='PREVIEW_GRAYSCALE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2239'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_BOTTOM_TO_TOP' homogen-type='constant'><doc/>
<constant name='PROGRESS_BOTTOM_TO_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2243'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_CONTINUOUS' homogen-type='constant'><doc/>
<constant name='PROGRESS_CONTINUOUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2247'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_DISCRETE' homogen-type='constant'><doc/>
<constant name='PROGRESS_DISCRETE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2251'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_LEFT_TO_RIGHT' homogen-type='constant'><doc/>
<constant name='PROGRESS_LEFT_TO_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2255'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_RIGHT_TO_LEFT' homogen-type='constant'><doc/>
<constant name='PROGRESS_RIGHT_TO_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2259'/></constant>
</docgroup>
<docgroup homogen-name='PROGRESS_TOP_TO_BOTTOM' homogen-type='constant'><doc/>
<constant name='PROGRESS_TOP_TO_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2263'/></constant>
</docgroup>
<docgroup homogen-name='RC_STYLE' homogen-type='constant'><doc/>
<constant name='RC_STYLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2267'/></constant>
</docgroup>
<docgroup homogen-name='REALIZED' homogen-type='constant'><doc/>
<constant name='REALIZED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2271'/></constant>
</docgroup>
<docgroup homogen-name='RELIEF_HALF' homogen-type='constant'><doc/>
<constant name='RELIEF_HALF'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2275'/></constant>
</docgroup>
<docgroup homogen-name='RELIEF_NONE' homogen-type='constant'><doc/>
<constant name='RELIEF_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2279'/></constant>
</docgroup>
<docgroup homogen-name='RELIEF_NORMAL' homogen-type='constant'><doc/>
<constant name='RELIEF_NORMAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2283'/></constant>
</docgroup>
<docgroup homogen-name='RESIZE_IMMEDIATE' homogen-type='constant'><doc/>
<constant name='RESIZE_IMMEDIATE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2287'/></constant>
</docgroup>
<docgroup homogen-name='RESIZE_PARENT' homogen-type='constant'><doc/>
<constant name='RESIZE_PARENT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2291'/></constant>
</docgroup>
<docgroup homogen-name='RESIZE_QUEUE' homogen-type='constant'><doc/>
<constant name='RESIZE_QUEUE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2295'/></constant>
</docgroup>
<docgroup homogen-name='RUN_BOTH' homogen-type='constant'><doc/>
<constant name='RUN_BOTH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2299'/></constant>
</docgroup>
<docgroup homogen-name='RUN_FIRST' homogen-type='constant'><doc/>
<constant name='RUN_FIRST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2303'/></constant>
</docgroup>
<docgroup homogen-name='RUN_LAST' homogen-type='constant'><doc/>
<constant name='RUN_LAST'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2307'/></constant>
</docgroup>
<docgroup homogen-name='RUN_NO_RECURSE' homogen-type='constant'><doc/>
<constant name='RUN_NO_RECURSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2311'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_JUMP' homogen-type='constant'><doc/>
<constant name='SCROLL_JUMP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2315'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_NONE' homogen-type='constant'><doc/>
<constant name='SCROLL_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2319'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_PAGE_BACKWARD' homogen-type='constant'><doc/>
<constant name='SCROLL_PAGE_BACKWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2323'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_PAGE_FORWARD' homogen-type='constant'><doc/>
<constant name='SCROLL_PAGE_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2327'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_STEP_BACKWARD' homogen-type='constant'><doc/>
<constant name='SCROLL_STEP_BACKWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2331'/></constant>
</docgroup>
<docgroup homogen-name='SCROLL_STEP_FORWARD' homogen-type='constant'><doc/>
<constant name='SCROLL_STEP_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2335'/></constant>
</docgroup>
<docgroup homogen-name='SELECTION_BROWSE' homogen-type='constant'><doc/>
<constant name='SELECTION_BROWSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2339'/></constant>
</docgroup>
<docgroup homogen-name='SELECTION_EXTENDED' homogen-type='constant'><doc/>
<constant name='SELECTION_EXTENDED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2343'/></constant>
</docgroup>
<docgroup homogen-name='SELECTION_MULTIPLE' homogen-type='constant'><doc/>
<constant name='SELECTION_MULTIPLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2347'/></constant>
</docgroup>
<docgroup homogen-name='SELECTION_SINGLE' homogen-type='constant'><doc/>
<constant name='SELECTION_SINGLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2351'/></constant>
</docgroup>
<docgroup homogen-name='SENSITIVE' homogen-type='constant'><doc/>
<constant name='SENSITIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2355'/></constant>
</docgroup>
<docgroup homogen-name='SHADOW_ETCHED_IN' homogen-type='constant'><doc/>
<constant name='SHADOW_ETCHED_IN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2359'/></constant>
</docgroup>
<docgroup homogen-name='SHADOW_ETCHED_OUT' homogen-type='constant'><doc/>
<constant name='SHADOW_ETCHED_OUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2363'/></constant>
</docgroup>
<docgroup homogen-name='SHADOW_IN' homogen-type='constant'><doc/>
<constant name='SHADOW_IN'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2367'/></constant>
</docgroup>
<docgroup homogen-name='SHADOW_NONE' homogen-type='constant'><doc/>
<constant name='SHADOW_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2371'/></constant>
</docgroup>
<docgroup homogen-name='SHADOW_OUT' homogen-type='constant'><doc/>
<constant name='SHADOW_OUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2375'/></constant>
</docgroup>
<docgroup homogen-name='SHRINK' homogen-type='constant'><doc/>
<constant name='SHRINK'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2379'/></constant>
</docgroup>
<docgroup homogen-name='SIDE_BOTTOM' homogen-type='constant'><doc/>
<constant name='SIDE_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2383'/></constant>
</docgroup>
<docgroup homogen-name='SIDE_LEFT' homogen-type='constant'><doc/>
<constant name='SIDE_LEFT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2387'/></constant>
</docgroup>
<docgroup homogen-name='SIDE_RIGHT' homogen-type='constant'><doc/>
<constant name='SIDE_RIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2391'/></constant>
</docgroup>
<docgroup homogen-name='SIDE_TOP' homogen-type='constant'><doc/>
<constant name='SIDE_TOP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2395'/></constant>
</docgroup>
<docgroup homogen-name='SORT_ASCENDING' homogen-type='constant'><doc/>
<constant name='SORT_ASCENDING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2399'/></constant>
</docgroup>
<docgroup homogen-name='SORT_DESCENDING' homogen-type='constant'><doc/>
<constant name='SORT_DESCENDING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2403'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_END' homogen-type='constant'><doc/>
<constant name='SPIN_END'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2407'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_HOME' homogen-type='constant'><doc/>
<constant name='SPIN_HOME'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2411'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_PAGE_BACKWARD' homogen-type='constant'><doc/>
<constant name='SPIN_PAGE_BACKWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2415'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_PAGE_FORWARD' homogen-type='constant'><doc/>
<constant name='SPIN_PAGE_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2419'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_STEP_BACKWARD' homogen-type='constant'><doc/>
<constant name='SPIN_STEP_BACKWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2423'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_STEP_FORWARD' homogen-type='constant'><doc/>
<constant name='SPIN_STEP_FORWARD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2427'/></constant>
</docgroup>
<docgroup homogen-name='SPIN_USER_DEFINED' homogen-type='constant'><doc/>
<constant name='SPIN_USER_DEFINED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2431'/></constant>
</docgroup>
<docgroup homogen-name='STATE_ACTIVE' homogen-type='constant'><doc/>
<constant name='STATE_ACTIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2435'/></constant>
</docgroup>
<docgroup homogen-name='STATE_INSENSITIVE' homogen-type='constant'><doc/>
<constant name='STATE_INSENSITIVE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2439'/></constant>
</docgroup>
<docgroup homogen-name='STATE_NORMAL' homogen-type='constant'><doc/>
<constant name='STATE_NORMAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2443'/></constant>
</docgroup>
<docgroup homogen-name='STATE_PRELIGHT' homogen-type='constant'><doc/>
<constant name='STATE_PRELIGHT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2447'/></constant>
</docgroup>
<docgroup homogen-name='STATE_SELECTED' homogen-type='constant'><doc/>
<constant name='STATE_SELECTED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2451'/></constant>
</docgroup>
<docgroup homogen-name='TOOLBAR_BOTH' homogen-type='constant'><doc/>
<constant name='TOOLBAR_BOTH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2455'/></constant>
</docgroup>
<docgroup homogen-name='TOOLBAR_ICONS' homogen-type='constant'><doc/>
<constant name='TOOLBAR_ICONS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2459'/></constant>
</docgroup>
<docgroup homogen-name='TOOLBAR_TEXT' homogen-type='constant'><doc/>
<constant name='TOOLBAR_TEXT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2463'/></constant>
</docgroup>
<docgroup homogen-name='TOPLEVEL' homogen-type='constant'><doc/>
<constant name='TOPLEVEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2467'/></constant>
</docgroup>
<docgroup homogen-name='TOP_BOTTOM' homogen-type='constant'><doc/>
<constant name='TOP_BOTTOM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2471'/></constant>
</docgroup>
<docgroup homogen-name='TREE_VIEW_ITEM' homogen-type='constant'><doc/>
<constant name='TREE_VIEW_ITEM'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2475'/></constant>
</docgroup>
<docgroup homogen-name='TREE_VIEW_LINE' homogen-type='constant'><doc/>
<constant name='TREE_VIEW_LINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2479'/></constant>
</docgroup>
<docgroup homogen-name='TROUGH_END' homogen-type='constant'><doc/>
<constant name='TROUGH_END'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2483'/></constant>
</docgroup>
<docgroup homogen-name='TROUGH_JUMP' homogen-type='constant'><doc/>
<constant name='TROUGH_JUMP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2487'/></constant>
</docgroup>
<docgroup homogen-name='TROUGH_NONE' homogen-type='constant'><doc/>
<constant name='TROUGH_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2491'/></constant>
</docgroup>
<docgroup homogen-name='TROUGH_START' homogen-type='constant'><doc/>
<constant name='TROUGH_START'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2495'/></constant>
</docgroup>
<docgroup homogen-name='UPDATE_ALWAYS' homogen-type='constant'><doc/>
<constant name='UPDATE_ALWAYS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2499'/></constant>
</docgroup>
<docgroup homogen-name='UPDATE_CONTINUOUS' homogen-type='constant'><doc/>
<constant name='UPDATE_CONTINUOUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2503'/></constant>
</docgroup>
<docgroup homogen-name='UPDATE_DELAYED' homogen-type='constant'><doc/>
<constant name='UPDATE_DELAYED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2507'/></constant>
</docgroup>
<docgroup homogen-name='UPDATE_DISCONTINUOUS' homogen-type='constant'><doc/>
<constant name='UPDATE_DISCONTINUOUS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2511'/></constant>
</docgroup>
<docgroup homogen-name='UPDATE_IF_VALID' homogen-type='constant'><doc/>
<constant name='UPDATE_IF_VALID'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2515'/></constant>
</docgroup>
<docgroup homogen-name='VISIBILITY_FULL' homogen-type='constant'><doc/>
<constant name='VISIBILITY_FULL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2519'/></constant>
</docgroup>
<docgroup homogen-name='VISIBILITY_NONE' homogen-type='constant'><doc/>
<constant name='VISIBILITY_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2523'/></constant>
</docgroup>
<docgroup homogen-name='VISIBILITY_PARTIAL' homogen-type='constant'><doc/>
<constant name='VISIBILITY_PARTIAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2527'/></constant>
</docgroup>
<docgroup homogen-name='VISIBLE' homogen-type='constant'><doc/>
<constant name='VISIBLE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2531'/></constant>
</docgroup>
<docgroup homogen-name='WINDOW_DIALOG' homogen-type='constant'><doc/>
<constant name='WINDOW_DIALOG'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2535'/></constant>
</docgroup>
<docgroup homogen-name='WINDOW_POPUP' homogen-type='constant'><doc/>
<constant name='WINDOW_POPUP'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2539'/></constant>
</docgroup>
<docgroup homogen-name='WINDOW_TOPLEVEL' homogen-type='constant'><doc/>
<constant name='WINDOW_TOPLEVEL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2543'/></constant>
</docgroup>
<docgroup homogen-name='WIN_POS_CENTER' homogen-type='constant'><doc/>
<constant name='WIN_POS_CENTER'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2547'/></constant>
</docgroup>
<docgroup homogen-name='WIN_POS_MOUSE' homogen-type='constant'><doc/>
<constant name='WIN_POS_MOUSE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2551'/></constant>
</docgroup>
<docgroup homogen-name='WIN_POS_NONE' homogen-type='constant'><doc/>
<constant name='WIN_POS_NONE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2555'/></constant>
</docgroup>
<docgroup homogen-name='TRUE' homogen-type='constant'><doc/>
<constant name='TRUE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2559'/></constant>
</docgroup>
<docgroup homogen-name='applet_widget_gtk_main' homogen-type='method'><doc><text><p>Special corba main loop for gnome panel applets</p>
</text></doc>
<method name='applet_widget_gtk_main'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2565'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='applet_widget_gtk_main_quit' homogen-type='method'><doc><text><p>Exit from the applet_widget_gtk_main function on the next iteration.</p>
</text></doc>
<method name='applet_widget_gtk_main_quit'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2570'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='false' homogen-type='method'><doc><text><p>Always returns false.</p>
</text></doc>
<method name='false'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2575'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='flush' homogen-type='method'><doc><text><p>Flush GDK. Not normally needed, can be useful while doing calculations.</p>
</text></doc>
<method name='flush'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2580'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gnome_init' homogen-type='method'><doc><text><p>Initializes the application. This sets up all of the GNOME
 internals and prepares them (imlib, gdk/gtk, session-management,
 triggers, sound, user preferences). If corba init flags are specified,
 corba initialization is done as well as gnome initialization.
 corba_init_flags is 0 or more of GNORBA_INIT_SERVER_FUNC (1),
 GNORBA_INIT_DISABLE_COOKIES (2) and GNORBA_INIT_CORBA_PRIO_HIGH (4)</p>
</text></doc>
<method name='gnome_init'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2585'/>
<arguments><argument name='app_id'><type><string/></type></argument><argument name='app_version'><type><string/></type></argument><argument name='argv'><type><array/></type></argument><argument name='corba_init_flags'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='grab_add' homogen-type='method'><doc/>
<method name='grab_add'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2595'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='grab_remove' homogen-type='method'><doc/>
<method name='grab_remove'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2598'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gtk_init' homogen-type='method'><doc><text><p>Low level GTK init function (used by setup_gtk).
 This function is more or less equivalent to the C-GTK+ function gtk_init.
 setup_gtk does some extra things (such as parsing ~/.pgtkrc).</p>
</text></doc>
<method name='gtk_init'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2601'/>
<arguments><argument name='argc'><type><or><array/><void/></or></type></argument><argument name='no_pgtkrc'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='low_flush' homogen-type='method'><doc><text><p>Flush, but do not process events. Not normally needed.</p>
</text></doc>
<method name='low_flush'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2608'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='main' homogen-type='method'><doc><text><p>Start GTK in blocking mode.
 Doing this disables asynchronous I/O in pike.
 You can return -1 from main in pike to run GTK (and the rest of
 pike) in asynchrounous mode.</p>
</text></doc>
<method name='main'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2613'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='main_iteration_do' homogen-type='method'><doc><text><p>Run one iteration in the mainloop. If block is true, wait for an
 event before returning.</p>
</text></doc>
<method name='main_iteration_do'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2621'/>
<arguments><argument name='block'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='main_level' homogen-type='method'><doc><text><p>Return the current recursion depth.</p>
</text></doc>
<method name='main_level'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2627'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='main_quit' homogen-type='method'><doc><text><p>Exit from the gtk_main function on the next iteration.</p>
</text></doc>
<method name='main_quit'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2632'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_rc' homogen-type='method'><doc><text><p>Takes a string and reads it as a gtkrc file.</p>
</text></doc>
<method name='parse_rc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2637'/>
<arguments><argument name='rc'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='root_window' homogen-type='method'><doc><text><p>Returns the root window of the current display</p>
</text></doc>
<method name='root_window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2642'/>
<arguments/>
<returntype><object resolved='predef::GDK.Window'>GDK.Window</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_new_signal_convention' homogen-type='method'><doc/>
<method name='set_new_signal_convention'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2647'/>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setup_gtk' homogen-type='method'><doc><text><p>Initialize GTK, and all that comes with it.
 Also parses $HOME/.pgtkrc and $HOME/.gtkrc if they exists.
 The single argument, if supplied, is the argument array passed to
 the program. This is used to set default window titles etc.
 The second argument, if supplied, indicates that pike specific *rc files
 should <b>not</b> be parsed.</p>
<p> The most common usage is GTK.setup_gtk(argv);</p>
</text></doc>
<method name='setup_gtk'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2650'/>
<arguments><argument name='argv'><type><or><array/><void/></or></type></argument><argument name='do_not_parse_rc'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='true' homogen-type='method'><doc><text><p>Always returns true.</p>
</text></doc>
<method name='true'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/module.pmod' first-line='2662'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>


<class name='Scrollbar'><doc><text><p>These are your standard, run-of-the-mill scrollbars. These should
  be used only for scrolling some other widget, such as a list, a
  text box, or a viewport (and it's generally easier to use the
  scrolled window widget in most cases). For other purposes, you
  should use scale widgets, as they are friendlier and more
  featureful.</p>
</text></doc><docgroup homogen-name='Range' homogen-type='inherit'><doc>
</doc>
<inherit name='Range'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Scrollbar.pike' first-line='10'/><classname resolved='predef::GTK.Range'>GTK.Range</classname></inherit>
</docgroup>
</class>

<class name='Vscale'><doc><text><p>The GTK.VScale widget is used to allow the user to select a value
 using a vertical slider. A GtkAdjustment is used to set the initial
 value, the lower and upper bounds, and the step and page
 increments.</p>
<p> The position to show the current value, and the number of decimal
 places shown can be set using the parent W(Scale) class's
 functions.</p>
<p><expr> GTK.Vscale(GTK.Adjustment())-&gt;set_usize(30,100)</expr>
<image file='predef.GTK.Vscale.1.png' width='30' height='100'>../images/gtk_vscale.png</image></p>
</text></doc><docgroup homogen-name='Scale' homogen-type='inherit'><doc>
</doc>
<inherit name='Scale'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vscale.pike' first-line='17'/><classname resolved='predef::GTK.Scale'>GTK.Scale</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Used to create a new vscale widget.
 The adjustment argument can either be an existing W(Adjustment), or
 0, in which case one will be created for you. Specifying 0 might
 actually be useful in this case, if you wish to pass the newly
 automatically created adjustment to the constructor function of
 some other widget which will configure it for you, such as a text
 widget.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Vscale.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='settings'><type><object resolved='predef::GTK.Adjustment'>GTK.Adjustment</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Vscale'>GTK.Vscale</object></returntype>
</method>
</docgroup>
</class>

<class name='Box'><doc><text><p>A box is a container that can contain more than one child.
 The basic 'Box' class cannot be instantiated, it is a virtual class
 that only defines some common 'Box' functions shared with all other
 Box widgets.</p>
</text></doc><docgroup homogen-name='Container' homogen-type='inherit'><doc>
</doc>
<inherit name='Container'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='8'/><classname resolved='predef::GTK.Container'>GTK.Container</classname></inherit>
</docgroup>
<docgroup homogen-name='pack_end' homogen-type='method'><doc><text><p>Pack from the right (or bottom) of the box.
 Arguments are widget, expand, fill, paddingb
 widget, expand, fill, padding</p>
</text></doc>
<method name='pack_end'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='10'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='expandp'><type><int/></type></argument><argument name='fillp'><type><int/></type></argument><argument name='padding'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pack_end_defaults' homogen-type='method'><doc><text><p>The argument is the widget to add.</p>
</text></doc>
<method name='pack_end_defaults'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='17'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pack_start' homogen-type='method'><doc><text><p>Pack from the left (or top) of the box.
 Argument are widget, expand, fill, padding
 pack(widget,1,1,0) is equivalent to 'add' or 'pack_start_defaults'</p>
</text></doc>
<method name='pack_start'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='22'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='expandp'><type><int/></type></argument><argument name='fillp'><type><int/></type></argument><argument name='padding'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pack_start_defaults' homogen-type='method'><doc><text><p>The argument is the widget to add. This function is equivalent to 'add'</p>
</text></doc>
<method name='pack_start_defaults'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='29'/>
<arguments><argument name='widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_child_packing' homogen-type='method'><doc><text><p>Return a mapping:
 ([ "expand":expandp, "fill":fillp, "padding":paddingp, "type":type ])</p>
</text></doc>
<method name='query_child_packing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='34'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reorder_child' homogen-type='method'><doc><text><p>Move widget to pos, pos is an integer,
 between 0 and sizeof(box-&gt;children())-1</p>
</text></doc>
<method name='reorder_child'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='40'/>
<arguments><argument name='child'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='new_position'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_child_packing' homogen-type='method'><doc><text><p>widget, expand, fill, padding, pack_type.
 If exand is true, the widget will be expanded when the box is resized.
 If 'fill' is true, the widget will be resized to fill up all available
 space. Padding is the amount of padding to use, and pack_type is
 one of <ref resolved='predef::GTK.PACK_END'>PACK_END</ref>, <ref resolved='predef::GTK.PACK_EXPAND'>PACK_EXPAND</ref> and <ref resolved='predef::GTK.PACK_START'>PACK_START</ref>.</p>
<p> You can emulate pack_start and pack_end with add and set_child_packing.</p>
</text></doc>
<method name='set_child_packing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='46'/>
<arguments><argument name='child_widget'><type><object resolved='predef::GTK.Widget'>GTK.Widget</object></type></argument><argument name='expandp'><type><int/></type></argument><argument name='fillp'><type><int/></type></argument><argument name='padding'><type><int/></type></argument><argument name='pack_type'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_homogeneous' homogen-type='method'><doc><text><p>If true, all widgets in the box will get exactly the same amount of space</p>
</text></doc>
<method name='set_homogeneous'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='57'/>
<arguments><argument name='homogeneousp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_spacing' homogen-type='method'><doc><text><p>This is the amount of spacing (in pixels) inserted beween all widgets</p>
</text></doc>
<method name='set_spacing'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Box.pike' first-line='62'/>
<arguments><argument name='spacing'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Box'>GTK.Box</object></returntype>
</method>
</docgroup>
</class>

<class name='SelectionData'><doc><text><p>The data associated with a selection.</p>
</text></doc><docgroup homogen-name='data' homogen-type='method'><doc><text><p>Returns the selection in the data.
 The return value is always a string, but the width can vary (8, 16
 or 32 bits per character).</p>
</text></doc>
<method name='data'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='5'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='format' homogen-type='method'><doc><text><p>Returns the selction format.
 The format is the number of bits per character.</p>
</text></doc>
<method name='format'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='12'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='length' homogen-type='method'><doc><text><p>Return the size of the selection data, in bytes.</p>
<p> The size of the data in characters (as returned by data()) is not
 necessarily the same.</p>
</text></doc>
<method name='length'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='18'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='selection' homogen-type='method'><doc><text><p>The selection id, as a GDK(Atom).</p>
</text></doc>
<method name='selection'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='27'/>
<arguments/>
<returntype><object resolved='predef::GDK.Atom'>GDK.Atom</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Store new data into a GtkSelectionData object. Should _only_ by
  called from a selection handler callback.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='32'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.SelectionData'>GTK.SelectionData</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='target' homogen-type='method'><doc><text><p>The target, as a GDK(Atom).</p>
</text></doc>
<method name='target'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='38'/>
<arguments/>
<returntype><object resolved='predef::GDK.Atom'>GDK.Atom</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='type' homogen-type='method'><doc><text><p>The selection type, as a GDK(Atom).</p>
</text></doc>
<method name='type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/SelectionData.pike' first-line='43'/>
<arguments/>
<returntype><object resolved='predef::GDK.Atom'>GDK.Atom</object></returntype>
</method>
</docgroup>
</class>

<class name='Label'><doc><text><p>A simple text label.
<expr> GTK.Label("A simple text label")</expr>
<image file='predef.GTK.Label.1.png' width='92' height='13'>../images/gtk_label.png</image></p>
<p><expr> GTK.Label("Multi\nline text\nlabel here")</expr>
<image file='predef.GTK.Label.2.png' width='50' height='39'>../images/gtk_label_2.png</image></p>
<p><expr> GTK.Label("Multi\nline text\nlabel here")-&gt;set_justify(GTK.JUSTIFY_LEFT)</expr>
<image file='predef.GTK.Label.3.png' width='50' height='39'>../images/gtk_label_3.png</image></p>
<p><expr> GTK.Label("Multi\nline text\nlabel here")-&gt;set_justify(GTK.JUSTIFY_RIGHT)</expr>
<image file='predef.GTK.Label.4.png' width='50' height='39'>../images/gtk_label_4.png</image></p>
</text></doc><docgroup homogen-name='Misc' homogen-type='inherit'><doc>
</doc>
<inherit name='Misc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='17'/><classname resolved='predef::GTK.Misc'>GTK.Misc</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new label.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_uline' homogen-type='method'><doc><text><p>Convenience function to set the text and pattern by parsing
 a string with embedded underscores, returns the appropriate
 key symbol for the accelerator.</p>
</text></doc>
<method name='parse_uline'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='24'/>
<arguments><argument name='uline_string'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p><b>DEPRECATED</b> Compatibility function to set the text in the label. Use
 set_text. This function can dissapear in the future.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='31'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_justify' homogen-type='method'><doc><text><p>one of <ref resolved='predef::GTK.JUSTIFY_CENTER'>JUSTIFY_CENTER</ref>, <ref resolved='predef::GTK.JUSTIFY_FILL'>JUSTIFY_FILL</ref>, <ref resolved='predef::GTK.JUSTIFY_LEFT'>JUSTIFY_LEFT</ref> and <ref resolved='predef::GTK.JUSTIFY_RIGHT'>JUSTIFY_RIGHT</ref></p>
</text></doc>
<method name='set_justify'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='37'/>
<arguments><argument name='justify'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_line_wrap' homogen-type='method'><doc><text><p>Should the label autolinewrap?</p>
</text></doc>
<method name='set_line_wrap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='42'/>
<arguments><argument name='wrapp'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_pattern' homogen-type='method'><doc><text><p>A string with either spaces or underscores.
 It should be of the same length as the text.</p>
<p> When a character in the text has a matching _ in the pattern, the
 character in the label will be underlined.</p>
</text></doc>
<method name='set_pattern'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='47'/>
<arguments><argument name='pattern_string'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_text' homogen-type='method'><doc><text><p>Set the text in the label</p>
</text></doc>
<method name='set_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Label.pike' first-line='57'/>
<arguments><argument name='text'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Label'>GTK.Label</object></returntype>
</method>
</docgroup>
</class>

<class name='Image'><doc><text><p>An image is a image object stored in client, not X server, memory.
 A pixmap, on the other hand, is a image object stored in the X-server.
 See GDK.Image and GDK.Pixmap.</p>
<p><expr> GTK.Image( GDK.Image(0)-&gt;set(Image.image(200,200)-&gt;test() ) );</expr>
<image file='predef.GTK.Image.1.png' width='200' height='200'>../images/gtk_image.png</image></p>
</text></doc><docgroup homogen-name='Misc' homogen-type='inherit'><doc>
</doc>
<inherit name='Misc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Image.pike' first-line='12'/><classname resolved='predef::GTK.Misc'>GTK.Misc</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>You can skip the mask. The mask is used to mask the drawing of the image
 on it's background. It will not make the container transparent, though.
 Use shape_combine_mask on the container with the mask for that.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Image.pike' first-line='14'/><modifiers><static/></modifiers>
<arguments><argument name='image'><type><object resolved='predef::GDK.Image'>GDK.Image</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Image'>GTK.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Returns ([ "image":GDK.Image img, "mask":GDK.Bitmap mask ])</p>
</text></doc>
<method name='get'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Image.pike' first-line='21'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Args: GDK.Image and GDK.Bitmap, respectively.
 You can skip the mask. The mask is used to mask the drawing of the image
 on it's background. It will not make the container transparent, though.
 Use shape_combine_mask on the container with the mask for that.</p>
<p> There is no need to call 'set' with the same GDK.Image again if
 you have modified the image. You must, however, use -&amp;gt;queue_draw()
 to redraw the image. Otherwise the old contens will be shown until
 an refresh of the widget is done for any other reason.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Image.pike' first-line='26'/>
<arguments><argument name='image'><type><object resolved='predef::GDK.Image'>GDK.Image</object></type></argument><argument name='mask'><type><object resolved='predef::GDK.Bitmap'>GDK.Bitmap</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Image'>GTK.Image</object></returntype>
</method>
</docgroup>
</class>

<class name='Style'><docgroup homogen-name='apply_default_background' homogen-type='method'><doc><text><p>Set the background of the specified window (or the subarea
 indicated by the rectangle) to the default background for the state
 specified by state_type.</p>
<p> If set_bgp is true, the background of the widget will be set,
 otherwise it will only be drawn into the window.</p>
</text></doc>
<method name='apply_default_background'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='3'/>
<arguments><argument name='window'><type><object resolved='predef::GDK.Window'>GDK.Window</object></type></argument><argument name='set_bgp'><type><int/></type></argument><argument name='state_type'><type><int/></type></argument><argument name='area'><type><object resolved='predef::GDK.Rectangle'>GDK.Rectangle</object></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='attach' homogen-type='method'><doc><text><p>Attach a style to a window; this process allocates the colors and
   creates the GC's for the style - it specializes it to a
   particular visual and colormap. The process may involve the
   creation of a new style if the style has already been attached to
   a window with a different style and colormap.</p>
</text></doc>
<method name='attach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='13'/>
<arguments><argument name='to'><type><object resolved='predef::GDK.Window'>GDK.Window</object></type></argument></arguments>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='copy' homogen-type='method'><doc><text><p>Copy this style, and return the new style object</p>
</text></doc>
<method name='copy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='22'/>
<arguments/>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='destroy' homogen-type='method'><doc/>
<method name='destroy'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='27'/>
<arguments/>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='detach' homogen-type='method'><doc><text><p>Undo a previous attach</p>
</text></doc>
<method name='detach'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='30'/>
<arguments/>
<returntype><object resolved='predef::GTK.Style'>GTK.Style</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_base' homogen-type='method'><doc/>
<method name='get_base'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='35'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_base_gc' homogen-type='method'><doc/>
<method name='get_base_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='38'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bg' homogen-type='method'><doc/>
<method name='get_bg'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='41'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bg_gc' homogen-type='method'><doc/>
<method name='get_bg_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='44'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_bg_pixmap' homogen-type='method'><doc/>
<method name='get_bg_pixmap'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='47'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_black' homogen-type='method'><doc/>
<method name='get_black'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='50'/>
<arguments/>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_black_gc' homogen-type='method'><doc/>
<method name='get_black_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='53'/>
<arguments/>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dark' homogen-type='method'><doc/>
<method name='get_dark'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='56'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dark_gc' homogen-type='method'><doc/>
<method name='get_dark_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='59'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fg' homogen-type='method'><doc/>
<method name='get_fg'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='62'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_fg_gc' homogen-type='method'><doc/>
<method name='get_fg_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='65'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_font' homogen-type='method'><doc/>
<method name='get_font'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='68'/>
<arguments/>
<returntype><object resolved='predef::GDK.Font'>GDK.Font</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_light' homogen-type='method'><doc/>
<method name='get_light'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='71'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_light_gc' homogen-type='method'><doc/>
<method name='get_light_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='74'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_mid' homogen-type='method'><doc/>
<method name='get_mid'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='77'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_mid_gc' homogen-type='method'><doc/>
<method name='get_mid_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='80'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text' homogen-type='method'><doc/>
<method name='get_text'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='83'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_text_gc' homogen-type='method'><doc/>
<method name='get_text_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='86'/>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_white' homogen-type='method'><doc/>
<method name='get_white'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='89'/>
<arguments/>
<returntype><object resolved='predef::GDK.Color'>GDK.Color</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_white_gc' homogen-type='method'><doc/>
<method name='get_white_gc'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/Style.pike' first-line='92'/>
<arguments/>
<returntype><object resolved='predef::GDK.GC'>GDK.GC</object></returntype>
</method>
</docgroup>
</class>

<class name='ColorSelectionDialog'><doc><text><p>The color selection dialog widget is, not surprisingly, a color selection
 widget in a dialog window. Use the subwidget functions below to access the
 different subwidgets directly.</p>
<p><expr> GTK.ColorSelectionDialog("Select color")</expr>
<image file='predef.GTK.ColorSelectionDialog.1.png' width='420' height='227'>../images/gtk_colorselectiondialog.png</image></p>
<p>  Signals:
 <b>color_changed</b>
 Called when the color is changed</p>
</text></doc><docgroup homogen-name='Window' homogen-type='inherit'><doc>
</doc>
<inherit name='Window'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='17'/><classname resolved='predef::GTK.Window'>GTK.Window</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create a new color selection dialog with the specified title.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='19'/><modifiers><static/></modifiers>
<arguments><argument name='title'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::GTK.ColorSelectionDialog'>GTK.ColorSelectionDialog</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_cancel_button' homogen-type='method'><doc><text><p>Return the cancel button widget.</p>
</text></doc>
<method name='get_cancel_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='24'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_colorsel' homogen-type='method'><doc><text><p>Return the color selection widget</p>
</text></doc>
<method name='get_colorsel'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='29'/>
<arguments/>
<returntype><object resolved='predef::GTK.ColorSelection'>GTK.ColorSelection</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_help_button' homogen-type='method'><doc><text><p>Return the help button</p>
</text></doc>
<method name='get_help_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='34'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_ok_button' homogen-type='method'><doc><text><p>Return the ok button</p>
</text></doc>
<method name='get_ok_button'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GTK/refdoc/GTK.pmod/ColorSelectionDialog.pike' first-line='39'/>
<arguments/>
<returntype><object resolved='predef::GTK.Button'>GTK.Button</object></returntype>
</method>
</docgroup>
</class></module>





































































































































































































<module name='GL'><doc><text><p>Not implemented OpenGL methods:</p>
<p><matrix>
<r><c>glAreTexturesResident</c></r>
<r><c>glBitmap</c></r>
<r><c>glBlendColorEXT</c></r>
<r><c>glCallLists</c></r>
<r><c>glColorPointer</c></r>
<r><c>glDeleteTextures</c></r>
<r><c>glDrawElements</c></r>
<r><c>glEdgeFlagPointer</c></r>
<r><c>glEdgeFlagv</c></r>
<r><c>glEvalMesh</c></r>
<r><c>glFeedbackBuffer</c></r>
<r><c>glGenTextures</c></r>
<r><c>glGetBooleanv</c></r>
<r><c>glGetClipPlane</c></r>
<r><c>glGetDoublev</c></r>
<r><c>glGetFloatv</c></r>
<r><c>glGetIntegerv</c></r>
<r><c>glGetLight</c></r>
<r><c>glGetMap</c></r>
<r><c>glGetMaterial</c></r>
<r><c>glGetPixelMap</c></r>
<r><c>glGetPointerv</c></r>
<r><c>glGetPolygonStipple</c></r>
<r><c>glGetTexEnv</c></r>
<r><c>glGetTexGen</c></r>
<r><c>glGetTexImage</c></r>
<r><c>glGetTexLevelParameter</c></r>
<r><c>glGetTexParameter</c></r>
<r><c>glIndexPointer</c></r>
<r><c>glInterleavedArrays</c></r>
<r><c>glMap1</c></r>
<r><c>glMap2</c></r>
<r><c>glMapGrid</c></r>
<r><c>glNormalPointer</c></r>
<r><c>glPixelMap</c></r>
<r><c>glPixelStore</c></r>
<r><c>glPixelTransfer</c></r>
<r><c>glPolygonStipple</c></r>
<r><c>glPrioritizeTextures</c></r>
<r><c>glReadPixels</c></r>
<r><c>glRect</c></r>
<r><c>glSelectBuffer</c></r>
<r><c>glTexCoordPointer</c></r>
<r><c>glTexImage1D</c></r>
<r><c>glTexSubImage1D</c></r>
<r><c>glVertexPointer</c></r>
</matrix></p>
</text></doc><docgroup homogen-type='method' homogen-name='glAccum'><doc><text><p>The accumulation buffer is an extended-range color buffer.
Images are not rendered into it.
Rather,
images rendered into one of the color buffers
are added to the contents of the accumulation buffer after rendering.
Effects such as antialiasing (of points, lines, and polygons),
motion blur,
and depth of field can be created
by accumulating images generated with different transformation matrices.</p>
<p>Each pixel in the accumulation buffer consists of
red, green, blue, and alpha values.
The number of bits per component in the accumulation buffer
depends on the implementation. You can examine this number
by calling <ref>glGetIntegerv</ref> four times,
with arguments <ref resolved='predef::GL.GL_ACCUM_RED_BITS'>GL_ACCUM_RED_BITS</ref>,
<ref resolved='predef::GL.GL_ACCUM_GREEN_BITS'>GL_ACCUM_GREEN_BITS</ref>,
<ref resolved='predef::GL.GL_ACCUM_BLUE_BITS'>GL_ACCUM_BLUE_BITS</ref>,
and <ref resolved='predef::GL.GL_ACCUM_ALPHA_BITS'>GL_ACCUM_ALPHA_BITS</ref>.
Regardless of the number of bits per component,
the range of values stored by each component is [-1, 1].
The accumulation buffer pixels are mapped one-to-one with frame buffer pixels.</p>
<p><ref resolved='predef::GL.glAccum'>glAccum</ref> operates on the accumulation buffer.
The first argument, <i>op</i>,
is a symbolic constant that selects an accumulation buffer operation.
The second argument, <i>value</i>,
is a floating-point value to be used in that operation.
Five operations are specified:
<ref resolved='predef::GL.GL_ACCUM'>GL_ACCUM</ref>, <ref resolved='predef::GL.GL_LOAD'>GL_LOAD</ref>, <ref resolved='predef::GL.GL_ADD'>GL_ADD</ref>,
<ref resolved='predef::GL.GL_MULT'>GL_MULT</ref>, and <ref resolved='predef::GL.GL_RETURN'>GL_RETURN</ref>.</p>
<p>All accumulation buffer operations are limited
to the area of the current scissor box and applied identically to
the red, green, blue, and alpha components of each pixel.
If a <ref resolved='predef::GL.glAccum'>glAccum</ref> operation results in a value outside the range [-1, 1], 
the contents of an accumulation buffer pixel component are undefined.</p>
<p>The operations are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_ACCUM'>GL_ACCUM</ref>
</c><c>Obtains R, G, B, and A values
from the buffer currently selected for reading (see <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>).
Each component value is divided by 2n1,
where n is the number of bits allocated to each color component
in the currently selected buffer.
The result is a floating-point value in the range [0, 1],
which is multiplied by <i>value</i> and added to the corresponding pixel component
in the accumulation buffer,
thereby updating the accumulation buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_LOAD'>GL_LOAD</ref> 
</c><c>Similar to <ref resolved='predef::GL.GL_ACCUM'>GL_ACCUM</ref>,
except that the current value in the accumulation buffer is not used
in the calculation of the new value.
That is, the R, G, B, and A values from the currently selected buffer
are divided by  2n1,
multiplied by <i>value</i>,
and then stored in the corresponding accumulation buffer cell,
overwriting the current value.
</c></r>
<r><c><ref resolved='predef::GL.GL_ADD'>GL_ADD</ref> 
</c><c>Adds <i>value</i> to each R, G, B, and A
in the accumulation buffer. 
</c></r>
<r><c><ref resolved='predef::GL.GL_MULT'>GL_MULT</ref> 
</c><c>Multiplies each R, G, B, and A
in the accumulation buffer by <i>value</i> and returns the scaled component
to its corresponding accumulation buffer location.
</c></r>
<r><c><ref resolved='predef::GL.GL_RETURN'>GL_RETURN</ref> 
</c><c>Transfers accumulation buffer values
to the color buffer or buffers currently selected for writing.
Each R, G, B, and A component is multiplied by <i>value</i>,
then multiplied by  2n1,
clamped to the range [0, 2n1 ], and stored
in the corresponding display buffer cell.
The only fragment operations that are applied to this transfer are
pixel ownership,
scissor,
dithering,
and color writemasks.
</c></r>
</matrix></p>
<p>To clear the accumulation buffer, call <ref resolved='predef::GL.glClearAccum'>glClearAccum</ref> with R, G, B,
and A values to set it to, then call <ref resolved='predef::GL.glClear'>glClear</ref> with the
accumulation buffer enabled.</p>
</text><group><param name='op'/><text><p>Specifies the accumulation buffer operation.
Symbolic constants
<ref resolved='predef::GL.GL_ACCUM'>GL_ACCUM</ref>,
<ref resolved='predef::GL.GL_LOAD'>GL_LOAD</ref>,
<ref resolved='predef::GL.GL_ADD'>GL_ADD</ref>,
<ref resolved='predef::GL.GL_MULT'>GL_MULT</ref>,
and
<ref resolved='predef::GL.GL_RETURN'>GL_RETURN</ref> are accepted.</p>
</text></group><group><param name='value'/><text><p>Specifies a floating-point value used in the accumulation buffer operation.
<i>op</i> determines how <i>value</i> is used.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>op</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if there is no accumulation buffer.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glAccum'>glAccum</ref>
is executed between the execution of
<ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glAccum'>
<arguments><argument name='op'><type><int/></type></argument><argument name='value'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glAlphaFunc'><doc><text><p>The alpha test discards fragments depending on the outcome of a comparison
between an incoming fragment's alpha value and a constant reference value.
<ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref> specifies the reference value and the comparison function.
The comparison is performed only if alpha testing is enabled. By
default, it is not enabled. 
(See 
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> of <ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref>.)</p>
<p><i>func</i> and <i>ref</i> specify the conditions under which
the pixel is drawn.
The incoming alpha value is compared to <i>ref</i>
using the function specified by <i>func</i>.
If the value passes the comparison,
the incoming fragment is drawn
if it also passes subsequent stencil and depth buffer tests. 
If the value fails the comparison,
no change is made to the frame buffer at that pixel location. The
comparison functions are as follows: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>
</c><c>Never passes. 
</c></r>
<r><c><ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>
</c><c>Passes if the incoming alpha value is less than the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>
</c><c>Passes if the incoming alpha value is equal to the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>
</c><c>Passes if the incoming alpha value is less than or equal to the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref> 
</c><c>Passes if the incoming alpha value is greater than the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>
</c><c>Passes if the incoming alpha value is not equal to the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>
</c><c>Passes if the incoming alpha value is greater than or equal to
the reference value.
</c></r>
<r><c><ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>
</c><c>Always passes (initial value). 
</c></r>
</matrix></p>
<p><ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref> operates on all pixel write operations,
including those resulting from the scan conversion of points,
lines,
polygons,
and bitmaps,
and from pixel draw and copy operations.
<ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref> does not affect screen clear operations.</p>
</text><group><param name='func'/><text><p>Specifies the alpha comparison function.
Symbolic constants
<ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>,
<ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>,
<ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>,
<ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>,
<ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref>,
<ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>,
<ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>, and
<ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref> are accepted. The initial value is <ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>.</p>
</text></group><group><param name='ref'/><text><p>Specifies the reference value that incoming alpha values are compared to.
This value is clamped to the range 0 through 1,
where 0 represents the lowest possible alpha value
and 1 the highest possible value.
The initial reference value
is 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>func</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glAlphaFunc'>
<arguments><argument name='func'><type><int/></type></argument><argument name='ref'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glArrayElement'><doc><text><p><ref resolved='predef::GL.glArrayElement'>glArrayElement</ref> commands are used within <ref resolved='predef::GL.glBegin'>glBegin</ref>/<ref resolved='predef::GL.glEnd'>glEnd</ref> pairs to
specify vertex and attribute data for point, line, and polygon
primitives. If <ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref> is enabled when <ref resolved='predef::GL.glArrayElement'>glArrayElement</ref> is called, a
single vertex is drawn, using 
vertex and attribute data taken from location <i>i</i> of the enabled
arrays. If <ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref> is not enabled, no drawing occurs but
the attributes corresponding to the enabled arrays are modified. </p>
<p>Use <ref resolved='predef::GL.glArrayElement'>glArrayElement</ref> to construct primitives by indexing vertex data, rather than
by streaming through arrays of data in first-to-last order. Because
each call specifies only a single vertex, it is possible to explicitly
specify per-primitive attributes such as a single normal per
individual triangle.</p>
<p>Changes made to array data between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the 
corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref> may affect calls to <ref resolved='predef::GL.glArrayElement'>glArrayElement</ref> that are made
within the same <ref resolved='predef::GL.glBegin'>glBegin</ref>/<ref resolved='predef::GL.glEnd'>glEnd</ref> period in non-sequential ways.
That is, a call to </p>
<p><ref resolved='predef::GL.glArrayElement'>glArrayElement</ref> that precedes a change to array data may 
access the changed data, and a call that follows a change to array data 
may access original data.</p>
</text><group><param name='i'/><text><p>Specifies an index into the enabled vertex data arrays.</p>
</text></group></doc>
<method name='glArrayElement'>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glBindTexture'><doc><text><p><ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> lets you create or use a named texture. Calling <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> with </p>
<p><i>target</i> set to
<ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> or <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref> and <i>texture</i> set to the name
of the newtexture binds the texture name to the target.  
When a texture is bound to a target, the previous binding for that
target is automatically broken.</p>
<p>Texture names are unsigned integers. The value zero is reserved to
represent the default texture for each texture target.
Texture names and the corresponding texture contents are local to
the shared display-list space (see <ref>glXCreateContext</ref>) of the current
GL rendering context;
two rendering contexts share texture names only if they
also share display lists.</p>
<p>You may use <ref>glGenTextures</ref> to generate a set of new texture names.</p>
<p>When a texture is first bound, it assumes the dimensionality of its
target:  A texture first bound to <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> becomes
1-dimensional and a texture first bound to <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref> becomes
2-dimensional. The state of a 1-dimensional texture
immediately after it is first bound is equivalent to the state of the
default <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> at GL initialization, and similarly for 
2-dimensional textures.</p>
<p>While a texture is bound, GL operations on the target to which it is
bound affect the bound texture, and queries of the target to which it
is bound return state from the bound texture. If texture mapping of
the dimensionality of the target to which a texture is bound is
active, the bound texture is used.
In effect, the texture targets become aliases for the textures currently
bound to them, and the texture name zero refers to the default textures
that were bound to them at initialization.</p>
<p>A texture binding created with <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> remains active until a different
texture is bound to the same target, or until the bound texture is
deleted with <ref>glDeleteTextures</ref>.</p>
<p>Once created, a named texture may be re-bound to the target of the
matching dimensionality as often as needed.
It is usually much faster to use <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> to bind an existing named
texture to one of the texture targets than it is to reload the texture image
using <ref>glTexImage1D</ref> or <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>.
For additional control over performance, use
<ref>glPrioritizeTextures</ref>.</p>
<p><ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> is included in display lists.</p>
</text><group><param name='target'/><text><p>Specifies the target to which the texture is bound.
Must be either
<ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> or
<ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
</text></group><group><param name='texture'/><text><p>Specifies the name of a texture.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not one of the allowable
values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>texture</i> has a dimensionality
which doesn't match that of <i>target</i>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glBindTexture'>
<arguments><argument name='target'><type><int/></type></argument><argument name='texture'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glBlendFunc'><doc><text><p>In RGBA mode, pixels can be drawn using a function that blends
the incoming (source) RGBA values with the RGBA values
that are already in the frame buffer (the destination values).
Blending is initially disabled.
Use <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>
to enable and disable blending.</p>
<p><ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref> defines the operation of blending when it is enabled.
<i>sfactor</i> specifies which of nine methods is used to scale the
source color components.
<i>dfactor</i> specifies which of eight methods is used to scale the
destination color components.
The eleven possible methods are described in the following table.
Each method defines four scale factors,
one each for red, green, blue, and alpha.</p>
<p>In the table and in subsequent equations, source and destination
color components are referred to as
(R sub s , G sub s , B sub s , A sub s ) and
(R sub d , G sub d , B sub d , A sub d ).
They are understood to have integer values between 0 and
(k sub R , k sub G , k sub B , k sub A ),
where</p>
<p>.RS
.ce
k sub c ~=~ 2 sup m sub c - 1 
.RE</p>
<p>and
(m sub R , m sub G , m sub B , m sub A )
is the number of red,
green,
blue,
and alpha bitplanes.</p>
<p>Source and destination scale factors are referred to as
(s sub R , s sub G , s sub B , s sub A ) and
(d sub R , d sub G , d sub B , d sub A ).
The scale factors described in the table,
denoted (f sub R , f sub G , f sub B , f sub A ),
represent either source or destination factors.
All scale factors have range [0,1].</p>
<p>.TS
center box ;
ci | ci
c | c .
parameter	(f sub R , ~~ f sub G , ~~ f sub B , ~~ f sub A ) 
=
<ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>	(0, ~0, ~0, ~0 )
<ref resolved='predef::GL.GL_ONE'>GL_ONE</ref>	(1, ~1, ~1, ~1 )
<ref resolved='predef::GL.GL_SRC_COLOR'>GL_SRC_COLOR</ref>	(R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )
<ref resolved='predef::GL.GL_ONE_MINUS_SRC_COLOR'>GL_ONE_MINUS_SRC_COLOR</ref>	(1, ~1, ~1, ~1 ) ~-~ (R sub s / k sub R , ~G sub s / k sub G , ~B sub s / k sub B , ~A sub s / k sub A )
<ref resolved='predef::GL.GL_DST_COLOR'>GL_DST_COLOR</ref>	(R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )
<ref resolved='predef::GL.GL_ONE_MINUS_DST_COLOR'>GL_ONE_MINUS_DST_COLOR</ref>	(1, ~1, ~1, ~1 ) ~-~ (R sub d / k sub R , ~G sub d / k sub G , ~B sub d / k sub B , ~A sub d / k sub A )
<ref resolved='predef::GL.GL_SRC_ALPHA'>GL_SRC_ALPHA</ref>	(A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )
<ref resolved='predef::GL.GL_ONE_MINUS_SRC_ALPHA'>GL_ONE_MINUS_SRC_ALPHA</ref>	(1, ~1, ~1, ~1 ) ~-~ (A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A , ~A sub s / k sub A )
<ref resolved='predef::GL.GL_DST_ALPHA'>GL_DST_ALPHA</ref>	(A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )
<ref resolved='predef::GL.GL_ONE_MINUS_DST_ALPHA'>GL_ONE_MINUS_DST_ALPHA</ref>	(1, ~1, ~1, ~1 ) ~-~ (A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A , ~A sub d / k sub A )
<ref resolved='predef::GL.GL_SRC_ALPHA_SATURATE'>GL_SRC_ALPHA_SATURATE</ref>	(i, ~i, ~i, ~1 )
.TE
.sp
In the table,</p>
<p>.RS
.nf</p>
<p>i ~=~  min (A sub s , ~k sub A - A sub d ) ~/~ k sub A
.fi
.RE</p>
<p>To determine the blended RGBA values of a pixel when drawing in RGBA mode,
the system uses the following equations:</p>
<p>.RS
.nf</p>
<p>R sub d ~=~ min ( k sub R , ~~ R sub s s sub R + R sub d d sub R )
G sub d ~=~ min ( k sub G , ~~ G sub s s sub G + G sub d d sub G )
B sub d ~=~ min ( k sub B , ~~ B sub s s sub B + B sub d d sub B )
A sub d ~=~ min ( k sub A , ~~ A sub s s sub A + A sub d d sub A )
.fi
.RE</p>
<p>Despite the apparent precision of the above equations,
blending arithmetic is not exactly specified,
because blending operates with imprecise integer color values.
However,
a blend factor that should be equal to 1
is guaranteed not to modify its multiplicand,
and a blend factor equal to 0 reduces its multiplicand to 0.
For example,
when <i>sfactor</i> is <ref resolved='predef::GL.GL_SRC_ALPHA'>GL_SRC_ALPHA</ref>,
<i>dfactor</i> is <ref resolved='predef::GL.GL_ONE_MINUS_SRC_ALPHA'>GL_ONE_MINUS_SRC_ALPHA</ref>,
and A sub s is equal to k sub A,
the equations reduce to simple replacement:</p>
<p>.RS
.nf</p>
<p>R sub d ~=~ R sub s
G sub d ~=~ G sub s
B sub d ~=~ B sub s
A sub d ~=~ A sub s
.fi
.RE</p>
</text><group><param name='sfactor'/><text><p>Specifies how the red, green, blue,
and alpha source blending factors are computed.
Nine symbolic constants are accepted:
<ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>,
<ref resolved='predef::GL.GL_ONE'>GL_ONE</ref>,
<ref resolved='predef::GL.GL_DST_COLOR'>GL_DST_COLOR</ref>,
<ref resolved='predef::GL.GL_ONE_MINUS_DST_COLOR'>GL_ONE_MINUS_DST_COLOR</ref>,
<ref resolved='predef::GL.GL_SRC_ALPHA'>GL_SRC_ALPHA</ref>,
<ref resolved='predef::GL.GL_ONE_MINUS_SRC_ALPHA'>GL_ONE_MINUS_SRC_ALPHA</ref>,
<ref resolved='predef::GL.GL_DST_ALPHA'>GL_DST_ALPHA</ref>,
<ref resolved='predef::GL.GL_ONE_MINUS_DST_ALPHA'>GL_ONE_MINUS_DST_ALPHA</ref>, and
<ref resolved='predef::GL.GL_SRC_ALPHA_SATURATE'>GL_SRC_ALPHA_SATURATE</ref>. The initial value is <ref resolved='predef::GL.GL_ONE'>GL_ONE</ref>.</p>
</text></group><group><param name='dfactor'/><text><p>Specifies how the red, green, blue,
and alpha destination blending factors are computed.
Eight symbolic constants are accepted:
<ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>,
<ref resolved='predef::GL.GL_ONE'>GL_ONE</ref>,
<ref resolved='predef::GL.GL_SRC_COLOR'>GL_SRC_COLOR</ref>,
<ref resolved='predef::GL.GL_ONE_MINUS_SRC_COLOR'>GL_ONE_MINUS_SRC_COLOR</ref>,
<ref resolved='predef::GL.GL_SRC_ALPHA'>GL_SRC_ALPHA</ref>,
<ref resolved='predef::GL.GL_ONE_MINUS_SRC_ALPHA'>GL_ONE_MINUS_SRC_ALPHA</ref>,
<ref resolved='predef::GL.GL_DST_ALPHA'>GL_DST_ALPHA</ref>, and
<ref resolved='predef::GL.GL_ONE_MINUS_DST_ALPHA'>GL_ONE_MINUS_DST_ALPHA</ref>. The initial value is <ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if either <i>sfactor</i> or <i>dfactor</i> is not an
accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glBlendFunc'>
<arguments><argument name='sfactor'><type><int/></type></argument><argument name='dfactor'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCallList'><doc><text><p><ref resolved='predef::GL.glCallList'>glCallList</ref> causes the named display list to be executed.
The commands saved in the display list are executed in order,
just as if they were called without using a display list.
If <i>list</i> has not been defined as a display list,
<ref resolved='predef::GL.glCallList'>glCallList</ref> is ignored.</p>
<p><ref resolved='predef::GL.glCallList'>glCallList</ref> can appear inside a display list.
To avoid the possibility of infinite recursion resulting from display lists
calling one another,
a limit is placed on the nesting level of display
lists during display-list execution.
This limit is at least 64, and it depends on the implementation.</p>
<p>GL state is not saved and restored across a call to <ref resolved='predef::GL.glCallList'>glCallList</ref>.
Thus,
changes made to GL state during the execution of a display list
remain after execution of the display list is completed.
Use <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>,
<ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>,
<ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>,
and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to preserve GL state across <ref resolved='predef::GL.glCallList'>glCallList</ref> calls.</p>
</text><group><param name='list'/><text><p>Specifies the integer name of the display list to be executed.</p>
</text></group></doc>
<method name='glCallList'>
<arguments><argument name='list'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClear'><doc><text><p><ref resolved='predef::GL.glClear'>glClear</ref> sets the bitplane area of the window to values previously selected
by <ref resolved='predef::GL.glClearColor'>glClearColor</ref>, <ref resolved='predef::GL.glClearIndex'>glClearIndex</ref>, <ref resolved='predef::GL.glClearDepth'>glClearDepth</ref>, 
<ref resolved='predef::GL.glClearStencil'>glClearStencil</ref>, and <ref resolved='predef::GL.glClearAccum'>glClearAccum</ref>.
Multiple color buffers can be cleared simultaneously by selecting
more than one buffer at a time using <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>.</p>
<p>The pixel ownership test,
the scissor test,
dithering, and the buffer writemasks affect the operation of <ref resolved='predef::GL.glClear'>glClear</ref>.
The scissor box bounds the cleared region.
Alpha function,
blend function,
logical operation,
stenciling,
texture mapping,
and depth-buffering are ignored by <ref resolved='predef::GL.glClear'>glClear</ref>.</p>
<p><ref resolved='predef::GL.glClear'>glClear</ref> takes a single argument that is the bitwise OR of several
values indicating which buffer is to be cleared.</p>
<p>The values are as follows: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR_BUFFER_BIT'>GL_COLOR_BUFFER_BIT</ref>
</c><c>Indicates the buffers currently enabled for color
writing.
</c></r>
<r><c><ref resolved='predef::GL.GL_DEPTH_BUFFER_BIT'>GL_DEPTH_BUFFER_BIT</ref>
</c><c>Indicates the depth buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_ACCUM_BUFFER_BIT'>GL_ACCUM_BUFFER_BIT</ref>
</c><c>Indicates the accumulation buffer. 
</c></r>
<r><c><ref resolved='predef::GL.GL_STENCIL_BUFFER_BIT'>GL_STENCIL_BUFFER_BIT</ref>
</c><c>Indicates the stencil buffer.
</c></r>
</matrix></p>
<p>The value to which each buffer is cleared depends on the setting of the
clear value for that buffer.</p>
</text><group><param name='mask'/><text><p>Bitwise OR of masks that indicate the buffers to be cleared.
The four masks are
<ref resolved='predef::GL.GL_COLOR_BUFFER_BIT'>GL_COLOR_BUFFER_BIT</ref>,
<ref resolved='predef::GL.GL_DEPTH_BUFFER_BIT'>GL_DEPTH_BUFFER_BIT</ref>,
<ref resolved='predef::GL.GL_ACCUM_BUFFER_BIT'>GL_ACCUM_BUFFER_BIT</ref>, and
<ref resolved='predef::GL.GL_STENCIL_BUFFER_BIT'>GL_STENCIL_BUFFER_BIT</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if any bit other than the four defined
bits is set in <i>mask</i>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClear'>glClear</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClear'>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClearAccum'><doc><text><p><ref resolved='predef::GL.glClearAccum'>glClearAccum</ref> specifies the red, green, blue, and alpha values used by <ref resolved='predef::GL.glClear'>glClear</ref> 
to clear the accumulation buffer.</p>
<p>Values specified by <ref resolved='predef::GL.glClearAccum'>glClearAccum</ref> are clamped to the 
range [-1,1].</p>
</text><group><param name='red'/><text><p>Specify the red, green, blue, and alpha values used when the
accumulation buffer is cleared.
The initial values are all 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClearAccum'>glClearAccum</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClearAccum'>
<arguments><argument name='red'><type><or><float/><array><valuetype><float/></valuetype></array></or></type></argument><argument name='green'><type><or><float/><void/></or></type></argument><argument name='blue'><type><or><float/><void/></or></type></argument><argument name='alpha'><type><or><float/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClearColor'><doc><text><p><ref resolved='predef::GL.glClearColor'>glClearColor</ref> specifies the red,
green,
blue,
and alpha values used by <ref resolved='predef::GL.glClear'>glClear</ref> to clear the color buffers.
Values specified by <ref resolved='predef::GL.glClearColor'>glClearColor</ref> are clamped to the range [0,1].</p>
</text><group><param name='red'/><text><p>Specify the red, green, blue, and alpha values used when the
color buffers are cleared.
The initial values are all 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClearColor'>glClearColor</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClearColor'>
<arguments><argument name='red'><type><or><float/><array><valuetype><float/></valuetype></array></or></type></argument><argument name='green'><type><or><float/><void/></or></type></argument><argument name='blue'><type><or><float/><void/></or></type></argument><argument name='alpha'><type><or><float/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClearDepth'><doc><text><p><ref resolved='predef::GL.glClearDepth'>glClearDepth</ref> specifies the depth value used by <ref resolved='predef::GL.glClear'>glClear</ref> to clear the depth buffer.
Values specified by <ref resolved='predef::GL.glClearDepth'>glClearDepth</ref> are clamped to the range [0,1].</p>
</text><group><param name='depth'/><text><p>Specifies the depth value used when the depth buffer is cleared. The
initial value is 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClearDepth'>glClearDepth</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClearDepth'>
<arguments><argument name='depth'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClearIndex'><doc><text><p><ref resolved='predef::GL.glClearIndex'>glClearIndex</ref> specifies the index used by <ref resolved='predef::GL.glClear'>glClear</ref>
to clear the color index buffers.
<i>c</i> is not clamped.
Rather,
<i>c</i> is converted to a fixed-point value with unspecified precision
to the right of the binary point.
The integer part of this value is then masked with 2 sup m -1,
where m is the number of bits in a color index stored in the frame buffer.</p>
</text><group><param name='c'/><text><p>Specifies the index used when the color index buffers are cleared.
The initial value is 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClearIndex'>glClearIndex</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClearIndex'>
<arguments><argument name='c'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glClearStencil'><doc><text><p><ref resolved='predef::GL.glClearStencil'>glClearStencil</ref> specifies the index used by <ref resolved='predef::GL.glClear'>glClear</ref> to clear the stencil buffer.
<i>s</i> is masked with 2 sup m - 1,
where m is the number of bits in the stencil buffer.</p>
</text><group><param name='s'/><text><p>Specifies the index used when the stencil buffer is cleared.
The initial value is 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glClearStencil'>glClearStencil</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glClearStencil'>
<arguments><argument name='s'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glColor'><doc><text><p>The GL stores both a current single-valued color index
and a current four-valued RGBA color. If no alpha value has been give, 1.0 (full intensity)
is implied.</p>
<p>Current color values are stored in floating-point format,
with unspecified mantissa and exponent sizes.
Unsigned integer color components,
when specified,
are linearly mapped to floating-point values such that the largest
representable value maps to 1.0 (full intensity),
and 0 maps to 0.0 (zero intensity).
Signed integer color components,
when specified,
are linearly mapped to floating-point values such that the most positive
representable value maps to 1.0,
and the most negative representable value maps to -1.0. (Note that
this mapping does not convert 0 precisely to 0.0.)
Floating-point values are mapped directly.</p>
<p>Neither floating-point nor signed integer values are clamped
to the range [0,1] before the current color is updated.
However,
color components are clamped to this range before they are interpolated
or written into a color buffer.</p>
</text><group><param name='red'/><text><p>Specify new red, green, and blue values for the current color.</p>
</text></group><group><param name='alpha'/><text><p>Specifies a new alpha value for the current color.</p>
</text></group></doc>
<method name='glColor'>
<arguments><argument name='red'><type><or><float/><int/></or></type></argument><argument name='green'><type><or><float/><int/></or></type></argument><argument name='blue'><type><or><float/><int/></or></type></argument><argument name='alpha'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='glColor'>
<arguments><argument name='rgb'><type><array><valuetype><or><float/><int/></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glColorMask'><doc><text><p><ref resolved='predef::GL.glColorMask'>glColorMask</ref> specifies whether the individual color components in the frame buffer
can or cannot be written.
If <i>red</i> is <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>,
for example,
no change is made to the red component of any pixel in any of the
color buffers,
regardless of the drawing operation attempted.</p>
<p>Changes to individual bits of components cannot be controlled.
Rather,
changes are either enabled or disabled for entire color components.</p>
</text><group><param name='red'/><text><p>Specify whether red, green, blue, and alpha can or cannot be written
into the frame buffer.
The initial values are all <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref>,
indicating that the color components can be written.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glColorMask'>glColorMask</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glColorMask'>
<arguments><argument name='red'><type><int/></type></argument><argument name='green'><type><int/></type></argument><argument name='blue'><type><int/></type></argument><argument name='alpha'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glColorMaterial'><doc><text><p><ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref> specifies which material parameters track the current color.
When <ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref> is enabled,
the material parameter or parameters specified by <i>mode</i>,
of the material or materials specified by <i>face</i>,
track the current color at all times.</p>
<p>To enable and disable <ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>, call
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>.
<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref> is initially disabled.</p>
</text><group><param name='face'/><text><p>Specifies whether front,
back,
or both front and back material parameters should track the current color.
Accepted values are
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>,
and <ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>.
The initial value is <ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>.</p>
</text></group><group><param name='mode'/><text><p>Specifies which of several material parameters track the current color.
Accepted values are
<ref resolved='predef::GL.GL_EMISSION'>GL_EMISSION</ref>,
<ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref>,
<ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>,
<ref resolved='predef::GL.GL_SPECULAR'>GL_SPECULAR</ref>,
and <ref resolved='predef::GL.GL_AMBIENT_AND_DIFFUSE'>GL_AMBIENT_AND_DIFFUSE</ref>.
The initial value is <ref resolved='predef::GL.GL_AMBIENT_AND_DIFFUSE'>GL_AMBIENT_AND_DIFFUSE</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>face</i> or <i>mode</i> is not an
accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glColorMaterial'>
<arguments><argument name='face'><type><int/></type></argument><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCopyPixels'><doc><text><p><ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> copies a screen-aligned rectangle of pixels
from the specified frame buffer location to a region relative to the
current raster position.
Its operation is well defined only if the entire pixel source region
is within the exposed portion of the window.
Results of copies from outside the window,
or from regions of the window that are not exposed,
are hardware dependent and undefined.</p>
<p><i>x</i> and <i>y</i> specify the window coordinates of
the lower left corner of the rectangular region to be copied.
<i>width</i> and <i>height</i> specify the dimensions of the
rectangular region to be copied.
Both <i>width</i> and <i>height</i> must not be negative.</p>
<p>Several parameters control the processing of the pixel data
while it is being copied.
These parameters are set with three commands:
<ref>glPixelTransfer</ref>,
<ref>glPixelMap</ref>, and
<ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref>.
This reference page describes the effects on <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> of most,
but not all, of the parameters specified by these three commands.</p>
<p><ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> copies values from each pixel with the lower left-hand corner at
(<i>x</i> + i, <i>y</i> + j) for 0\(&lt;=i&lt;<i>width</i>  and 0\(&lt;=j&lt;<i>height</i>.
This pixel is said to be the ith pixel in the jth row. 
Pixels are copied in row order from the lowest to the highest row,
left to right in each row.</p>
<p><i>type</i> specifies whether color, depth, or stencil data is to be copied.
The details of the transfer for each data type are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR'>GL_COLOR</ref>
</c><c>Indices or RGBA colors are read from the buffer currently specified as the
read source buffer (see <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>).
If the GL is in color index mode,
each index that is read from this buffer is converted
to a fixed-point format with an unspecified
number of bits to the right of the binary point.
Each index is then shifted left by <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> bits,
and added to <ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref>.
If <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> is negative,
the shift is to the right.
In either case, zero bits fill otherwise unspecified bit locations in the
result.
If <ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> is true,
the index is replaced with the value that it references in lookup table
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_I'>GL_PIXEL_MAP_I_TO_I</ref>.
Whether the lookup replacement of the index is done or not,
the integer part of the index is then ANDed with 2 sup b -1,
where b is the number of bits in a color index buffer.

If the GL is in RGBA mode,
the red, green, blue, and alpha components of each pixel that is read
are converted to an internal floating-point format with unspecified
precision.
The conversion maps the largest representable component value to 1.0,
and component value 0 to 0.0.
The resulting floating-point color values are then multiplied
by GL_c_SCALE and added to GL_c_BIAS,
where <i>c</i> is RED, GREEN, BLUE, and ALPHA 
for the respective color components.
The results are clamped to the range [0,1].
If <ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> is true,
each color component is scaled by the size of lookup table
<ref>GL_PIXEL_MAP_c_TO_c</ref>,
then replaced by the value that it references in that table.
<i>c</i> is R, G, B, or A.

The GL then converts the resulting indices or RGBA colors to fragments
by attaching the current raster position <i>z</i> coordinate and
texture coordinates to each pixel,
then assigning window coordinates
(x sub r + i , y sub r + j),
where (x sub r , y sub r) is the current raster position,
and the pixel was the ith pixel in the jth row.
These pixel fragments are then treated just like the fragments generated by
rasterizing points, lines, or polygons.
Texture mapping,
fog,
and all the fragment operations are applied before the fragments are written
to the frame buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_DEPTH'>GL_DEPTH</ref>
</c><c>Depth values are read from the depth buffer and
converted directly to an internal floating-point format
with unspecified precision.
The resulting floating-point depth value is then multiplied
by <ref resolved='predef::GL.GL_DEPTH_SCALE'>GL_DEPTH_SCALE</ref> and added to <ref resolved='predef::GL.GL_DEPTH_BIAS'>GL_DEPTH_BIAS</ref>.
The result is clamped to the range [0,1].

The GL then converts the resulting depth components to fragments
by attaching the current raster position color or color index and
texture coordinates to each pixel,
then assigning window coordinates
(x sub r + i , y sub r + j),
where (x sub r , y sub r) is the current raster position,
and the pixel was the ith pixel in the jth row.
These pixel fragments are then treated just like the fragments generated by
rasterizing points, lines, or polygons.
Texture mapping,
fog,
and all the fragment operations are applied before the fragments are written
to the frame buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_STENCIL'>GL_STENCIL</ref>
</c><c>Stencil indices are read from the stencil buffer and
converted to an internal fixed-point format
with an unspecified number of bits to the right of the binary point.
Each fixed-point index is then shifted left by <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> bits,
and added to <ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref>.
If <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> is negative,
the shift is to the right.
In either case, zero bits fill otherwise unspecified bit locations in the
result.
If <ref resolved='predef::GL.GL_MAP_STENCIL'>GL_MAP_STENCIL</ref> is true,
the index is replaced with the value that it references in lookup table
<ref resolved='predef::GL.GL_PIXEL_MAP_S_TO_S'>GL_PIXEL_MAP_S_TO_S</ref>.
Whether the lookup replacement of the index is done or not,
the integer part of the index is then ANDed with 2 sup b -1,
where b is the number of bits in the stencil buffer.
The resulting stencil indices are then written to the stencil buffer
such that the index read from the ith location of the jth row
is written to location
(x sub r + i , y sub r + j),
where (x sub r , y sub r) is the current raster position.
Only the pixel ownership test,
the scissor test,
and the stencil writemask affect these write operations.
</c></r>
</matrix></p>
<p>The rasterization described thus far assumes pixel zoom factors of 1.0.
If </p>
<p><ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref> is used to change the x and y pixel zoom factors,
pixels are converted to fragments as follows.
If (x sub r, y sub r) is the current raster position,
and a given pixel is in the ith location in the jth row of the source
pixel rectangle,
then fragments are generated for pixels whose centers are in the rectangle
with corners at</p>
<p>.ce
(x sub r + zoom sub x i, y sub r + zoom sub y j)
.sp .5
.ce
 and 
.sp .5
.ce
(x sub r + zoom sub x (i + 1), y sub r + zoom sub y ( j + 1 ))</p>
<p>where zoom sub x is the value of <ref resolved='predef::GL.GL_ZOOM_X'>GL_ZOOM_X</ref> and 
zoom sub y is the value of <ref resolved='predef::GL.GL_ZOOM_Y'>GL_ZOOM_Y</ref>.</p>
</text><group><param name='x'/><text><p>Specify the window coordinates of the lower left corner
of the rectangular region of pixels to be copied.</p>
</text></group><group><param name='width'/><text><p>Specify the dimensions of the rectangular region of pixels to be copied.
Both must be nonnegative.</p>
</text></group><group><param name='type'/><text><p>Specifies whether color values,
depth values,
or stencil values are to be copied.
Symbolic constants
<ref resolved='predef::GL.GL_COLOR'>GL_COLOR</ref>,
<ref resolved='predef::GL.GL_DEPTH'>GL_DEPTH</ref>,
and <ref resolved='predef::GL.GL_STENCIL'>GL_STENCIL</ref> are accepted.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if either <i>width</i> or <i>height</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>type</i> is <ref resolved='predef::GL.GL_DEPTH'>GL_DEPTH</ref>
and there is no depth buffer.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>type</i> is <ref resolved='predef::GL.GL_STENCIL'>GL_STENCIL</ref>
and there is no stencil buffer.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glCopyPixels'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='type'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCopyTexImage1D'><doc><text><p><ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref> defines a one-dimensional texture image with pixels from the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref>.</p>
<p>The screen-aligned pixel row with left corner at ("x", "y")
and with a length of "width"~+~2~*~"border" 
defines the texture array
at the mipmap level specified by <i>level</i>.
<i>internalFormat</i> specifies the internal format of the texture array.</p>
<p>The pixels in the row are processed exactly as if
<ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> had been called, but the process stops just before
final conversion.
At this point all pixel component values are clamped to the range [0,\ 1]
and then converted to the texture's internal format for storage in the texel
array.</p>
<p>Pixel ordering is such that lower x screen coordinates correspond to 
lower texture coordinates.</p>
<p>If any of the pixels within the specified row of the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> are outside the window associated with the current
rendering context, then the values obtained for those pixels are undefined.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>.</p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='internalFormat'/><text><p>Specifies the internal format of the texture.
Must be one of the following symbolic constants:
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_ALPHA4'>GL_ALPHA4</ref>,
<ref resolved='predef::GL.GL_ALPHA8'>GL_ALPHA8</ref>,
<ref resolved='predef::GL.GL_ALPHA12'>GL_ALPHA12</ref>,
<ref resolved='predef::GL.GL_ALPHA16'>GL_ALPHA16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4'>GL_LUMINANCE4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8'>GL_LUMINANCE8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12'>GL_LUMINANCE12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16'>GL_LUMINANCE16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4_ALPHA4'>GL_LUMINANCE4_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE6_ALPHA2'>GL_LUMINANCE6_ALPHA2</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8_ALPHA8'>GL_LUMINANCE8_ALPHA8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA4'>GL_LUMINANCE12_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA12'>GL_LUMINANCE12_ALPHA12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16_ALPHA16'>GL_LUMINANCE16_ALPHA16</ref>,
<ref resolved='predef::GL.GL_INTENSITY'>GL_INTENSITY</ref>,
<ref resolved='predef::GL.GL_INTENSITY4'>GL_INTENSITY4</ref>,
<ref resolved='predef::GL.GL_INTENSITY8'>GL_INTENSITY8</ref>,
<ref resolved='predef::GL.GL_INTENSITY12'>GL_INTENSITY12</ref>,
<ref resolved='predef::GL.GL_INTENSITY16'>GL_INTENSITY16</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_R3_G3_B2'>GL_R3_G3_B2</ref>,
<ref resolved='predef::GL.GL_RGB4'>GL_RGB4</ref>, 
<ref resolved='predef::GL.GL_RGB5'>GL_RGB5</ref>,
<ref resolved='predef::GL.GL_RGB8'>GL_RGB8</ref>,
<ref resolved='predef::GL.GL_RGB10'>GL_RGB10</ref>,
<ref resolved='predef::GL.GL_RGB12'>GL_RGB12</ref>,
<ref resolved='predef::GL.GL_RGB16'>GL_RGB16</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_RGBA2'>GL_RGBA2</ref>,
<ref resolved='predef::GL.GL_RGBA4'>GL_RGBA4</ref>,
<ref resolved='predef::GL.GL_RGB5_A1'>GL_RGB5_A1</ref>,
<ref resolved='predef::GL.GL_RGBA8'>GL_RGBA8</ref>,
<ref resolved='predef::GL.GL_RGB10_A2'>GL_RGB10_A2</ref>,
<ref resolved='predef::GL.GL_RGBA12'>GL_RGBA12</ref>, or
<ref resolved='predef::GL.GL_RGBA16'>GL_RGBA16</ref>.</p>
</text></group><group><param name='x'/><text><p>Specify the window coordinates of the left corner
of the row of pixels to be copied.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture image.
Must be 0 or 2**n ~+~ 2*<i>border</i> for some integer n.
The height of the texture image is 1.</p>
</text></group><group><param name='border'/><text><p>Specifies the width of the border.
Must be either 0 or 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not one of the
allowable values.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i> is greater
than log sub 2 max,
where max is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>internalFormat</i> is not an
allowable value.  </p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>width</i> is less than 0
or greater than 
2 + <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>,
or if it cannot be represented as 2 ** n ~+~ 2~*~("border") 
for some integer value of <i>n</i>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>border</i> is not 0 or 1.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glCopyTexImage1D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='internalFormat'><type><int/></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='border'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCopyTexImage2D'><doc><text><p><ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref> defines a two-dimensional texture image with pixels from the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref>.</p>
<p>The screen-aligned pixel rectangle with lower left corner at (<i>x</i>,
<i>y</i>) and with a width of <i>width</i>~+~2~*~<i>border</i> and a height of
<i>height</i>~+~2~*~<i>border</i> 
defines the texture array
at the mipmap level specified by <i>level</i>.
<i>internalFormat</i> specifies the internal format of the texture array.</p>
<p>The pixels in the rectangle are processed exactly as if
<ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> had been called, but the process stops just before
final conversion.
At this point all pixel component values are clamped to the range [0,1]
and then converted to the texture's internal format for storage in the texel
array.</p>
<p>Pixel ordering is such that lower x and y screen coordinates correspond to 
lower s and t texture coordinates.</p>
<p>If any of the pixels within the specified rectangle of the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> are outside the window associated with the current
rendering context, then the values obtained for those pixels are undefined.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='internalFormat'/><text><p>Specifies the internal format of the texture.
Must be one of the following symbolic constants:
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_ALPHA4'>GL_ALPHA4</ref>,
<ref resolved='predef::GL.GL_ALPHA8'>GL_ALPHA8</ref>,
<ref resolved='predef::GL.GL_ALPHA12'>GL_ALPHA12</ref>,
<ref resolved='predef::GL.GL_ALPHA16'>GL_ALPHA16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4'>GL_LUMINANCE4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8'>GL_LUMINANCE8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12'>GL_LUMINANCE12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16'>GL_LUMINANCE16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4_ALPHA4'>GL_LUMINANCE4_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE6_ALPHA2'>GL_LUMINANCE6_ALPHA2</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8_ALPHA8'>GL_LUMINANCE8_ALPHA8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA4'>GL_LUMINANCE12_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA12'>GL_LUMINANCE12_ALPHA12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16_ALPHA16'>GL_LUMINANCE16_ALPHA16</ref>,
<ref resolved='predef::GL.GL_INTENSITY'>GL_INTENSITY</ref>,
<ref resolved='predef::GL.GL_INTENSITY4'>GL_INTENSITY4</ref>,
<ref resolved='predef::GL.GL_INTENSITY8'>GL_INTENSITY8</ref>,
<ref resolved='predef::GL.GL_INTENSITY12'>GL_INTENSITY12</ref>,
<ref resolved='predef::GL.GL_INTENSITY16'>GL_INTENSITY16</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_R3_G3_B2'>GL_R3_G3_B2</ref>,
<ref resolved='predef::GL.GL_RGB4'>GL_RGB4</ref>,
<ref resolved='predef::GL.GL_RGB5'>GL_RGB5</ref>,
<ref resolved='predef::GL.GL_RGB8'>GL_RGB8</ref>,
<ref resolved='predef::GL.GL_RGB10'>GL_RGB10</ref>,
<ref resolved='predef::GL.GL_RGB12'>GL_RGB12</ref>,
<ref resolved='predef::GL.GL_RGB16'>GL_RGB16</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_RGBA2'>GL_RGBA2</ref>,
<ref resolved='predef::GL.GL_RGBA4'>GL_RGBA4</ref>,
<ref resolved='predef::GL.GL_RGB5_A1'>GL_RGB5_A1</ref>,
<ref resolved='predef::GL.GL_RGBA8'>GL_RGBA8</ref>,
<ref resolved='predef::GL.GL_RGB10_A2'>GL_RGB10_A2</ref>,
<ref resolved='predef::GL.GL_RGBA12'>GL_RGBA12</ref>, or
<ref resolved='predef::GL.GL_RGBA16'>GL_RGBA16</ref>.</p>
</text></group><group><param name='x'/><text><p>Specify the window coordinates of the lower left corner
of the rectangular region of pixels to be copied.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture image.
Must be 0 or 2**n ~+~ 2*<i>border</i> for some integer n.</p>
</text></group><group><param name='height'/><text><p>Specifies the height of the texture image.
Must be 0 or 2**m ~+~ 2*<i>border</i> for some integer m.</p>
</text></group><group><param name='border'/><text><p>Specifies the width of the border.
Must be either 0 or 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i> is greater
than log sub 2 max,
where max is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>width</i> or <i>height</i> is less than 0,
greater than 2~+~<ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>, or if <i>width</i> or <i>height</i> cannot be
represented as 2**k ~+~ 2~*~<i>border</i> for some integer
k.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>border</i> is not 0 or 1.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>internalFormat</i> is not one of the
allowable values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glCopyTexImage2D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='internalFormat'><type><int/></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='border'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCopyTexSubImage1D'><doc><text><p><ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref> replaces a portion of a one-dimensional
texture image with pixels from the current <ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> (rather
than from main memory, as is the case for <ref>glTexSubImage1D</ref>).</p>
<p>The screen-aligned pixel row with left corner at (<i>x</i>,\ <i>y</i>), and with
length <i>width</i> replaces the portion of the
texture array with x indices <i>xoffset</i> through "xoffset" ~+~ "width" ~-~ 1,
inclusive. The destination in the texture array may not 
include any texels outside the texture array as it was 
originally specified.</p>
<p>The pixels in the row are processed exactly as if
<ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> had been called, but the process stops just before
final conversion.
At this point all pixel component values are clamped to the range [0,\ 1]
and then converted to the texture's internal format for storage in the texel
array.</p>
<p>It is not an error to specify a subtexture with zero width, but
such a specification has no effect.
If any of the pixels within the specified row of the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> are outside the read window associated with the current
rendering context, then the values obtained for those pixels are undefined.</p>
<p>No change is made to the <i>internalformat</i>, <i>width</i>,
or <i>border</i> parameters of the specified texture
array or to texel values outside the specified subregion.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>.</p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='xoffset'/><text><p>Specifies the texel offset within the texture array.</p>
</text></group><group><param name='x'/><text><p>Specify the window coordinates of the left corner
of the row of pixels to be copied.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture subimage.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if the texture array has not
been defined by a previous <ref>glTexImage1D</ref> or <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref> operation.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i>&gt;log sub 2<i> max</i>,
where <i>max</i> is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>y</i> ~&lt;~ ~-b
or if <i>width</i> ~&lt;~ ~-b, where b 
is the border width of the texture array.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if "xoffset" ~&lt;~ ~-b, or 
("xoffset"~+~"width") ~&gt;~ (w-b),
where w is the <ref resolved='predef::GL.GL_TEXTURE_WIDTH'>GL_TEXTURE_WIDTH</ref>, and b is the <ref resolved='predef::GL.GL_TEXTURE_BORDER'>GL_TEXTURE_BORDER</ref> 
of the texture image being modified.
Note that w includes twice the border width.</p>
</text></group></doc>
<method name='glCopyTexSubImage1D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCopyTexSubImage2D'><doc><text><p><ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref> replaces a rectangular portion of a two-dimensional
texture image with pixels from the current <ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> (rather
than from main memory, as is the case for <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>).</p>
<p>The screen-aligned pixel rectangle with lower left corner at
(<i>x</i>,\ <i>y</i>) and with
width <i>width</i> and height <i>height</i> replaces the portion of the
texture array with x indices <i>xoffset</i> through <i>xoffset</i>~+~<i>width</i>~-~1,
inclusive, and y indices <i>yoffset</i> through <i>yoffset</i>~+~<i>height</i>~-~1,
inclusive, at the mipmap level specified by <i>level</i>.</p>
<p>The pixels in the rectangle are processed exactly as if
<ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> had been called, but the process stops just before
final conversion.
At this point, all pixel component values are clamped to the range [0,\ 1]
and then converted to the texture's internal format for storage in the texel
array.</p>
<p>The destination rectangle in the texture array may not include any texels
outside the texture array as it was originally specified.
It is not an error to specify a subtexture with zero width or height, but
such a specification has no effect.</p>
<p>If any of the pixels within the specified rectangle of the current
<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> are outside the read window associated with the current
rendering context, then the values obtained for those pixels are undefined.</p>
<p>No change is made to the <i>internalformat</i>, <i>width</i>,
<i>height</i>, or <i>border</i> parameters of the specified texture
array or to texel values outside the specified subregion.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref></p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='xoffset'/><text><p>Specifies a texel offset in the x direction within the texture array.</p>
</text></group><group><param name='yoffset'/><text><p>Specifies a texel offset in the y direction within the texture array.</p>
</text></group><group><param name='x'/><text><p>Specify the window coordinates of the lower left corner
of the rectangular region of pixels to be copied.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture subimage.</p>
</text></group><group><param name='height'/><text><p>Specifies the height of the texture subimage.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>. </p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if the texture array has not
been defined by a previous <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> or <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref> operation.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i> is greater
than log sub 2 max,
where max is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>x</i> ~&lt;~ ~-b or if
<i>y</i> ~&lt;~ ~-b, 
where b is the border width of the texture array.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if "xoffset" ~&lt;~ -b,
(<i>xoffset</i>~+~<i>width</i>)~&gt;~(w ~-~b), 
<i>yoffset</i>~&lt;~ ~-b, or 
(<i>yoffset</i>~+~<i>height</i>)~&gt;~(h ~-~b),
where w is the <ref resolved='predef::GL.GL_TEXTURE_WIDTH'>GL_TEXTURE_WIDTH</ref>, 
h is the  <ref resolved='predef::GL.GL_TEXTURE_HEIGHT'>GL_TEXTURE_HEIGHT</ref>, 
and b is the <ref resolved='predef::GL.GL_TEXTURE_BORDER'>GL_TEXTURE_BORDER</ref>
of the texture image being modified.
Note that w and h
include twice the border width.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glCopyTexSubImage2D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='yoffset'><type><int/></type></argument><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDeleteLists'><doc><text><p><ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref> causes a contiguous group of display lists to be deleted.
<i>list</i> is the name of the first display list to be deleted,
and <i>range</i> is the number of display lists to delete.
All display lists \fId\fP with <i>list</i> \(&lt;= \fId\fP \(&lt;= <i>list</i> + <i>range</i> - 1
are deleted.</p>
<p>All storage locations allocated to the specified display lists are freed,
and the names are available for reuse at a later time.
Names within the range that do not have an associated display list are ignored.
If <i>range</i> is 0, nothing happens.</p>
</text><group><param name='list'/><text><p>Specifies the integer name of the first display list to delete.</p>
</text></group><group><param name='range'/><text><p>Specifies the number of display lists to delete.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>range</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDeleteLists'>
<arguments><argument name='list'><type><int/></type></argument><argument name='range'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDepthMask'><doc><text><p><ref resolved='predef::GL.glDepthMask'>glDepthMask</ref> specifies whether the depth buffer is enabled for writing.
If <i>flag</i> is <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>,
depth buffer writing is disabled.
Otherwise, it is enabled.
Initially, depth buffer writing is enabled.</p>
</text><group><param name='flag'/><text><p>Specifies whether the depth buffer is enabled for writing.
If <i>flag</i> is <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>,
depth buffer writing is disabled.
Otherwise, it is enabled.
Initially, depth buffer writing is enabled.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDepthMask'>glDepthMask</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDepthMask'>
<arguments><argument name='flag'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDepthRange'><doc><text><p>After clipping and division by <i>w</i>,
depth coordinates range from -1 to 1,
corresponding to the near and far clipping planes.
<ref resolved='predef::GL.glDepthRange'>glDepthRange</ref> specifies a linear mapping of the normalized depth coordinates
in this range to window depth coordinates.
Regardless of the actual depth buffer implementation,
window coordinate depth values are treated as though they range
from 0 through 1 (like color components).
Thus,
the values accepted by <ref resolved='predef::GL.glDepthRange'>glDepthRange</ref> are both clamped to this range
before they are accepted.</p>
<p>The setting of (0,1) maps the near plane to 0 and
the far plane to 1.
With this mapping,
the depth buffer range is fully utilized.</p>
</text><group><param name='zNear'/><text><p>Specifies the mapping of the near clipping plane to window coordinates.
The initial value is 0.</p>
</text></group><group><param name='zFar'/><text><p>Specifies the mapping of the far clipping plane to window coordinates.
The initial value is 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDepthRange'>glDepthRange</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDepthRange'>
<arguments><argument name='zNear'><type><float/></type></argument><argument name='zFar'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDrawArrays'><doc><text><p><ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> specifies multiple geometric primitives
with very few subroutine calls. Instead of calling a GL procedure
to pass each individual vertex, normal, texture coordinate, edge
flag, or color, you can prespecify
separate arrays of vertexes, normals, and colors and use them to
construct a sequence of primitives with a single
call to <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>.</p>
<p>When <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> is called, it uses <i>count</i> sequential elements from each
enabled array to construct a sequence of geometric primitives,
beginning with element <i>first</i>. <i>mode</i> specifies what kind of
primitives are constructed, and how the array elements
construct those primitives. If <ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref> is not enabled, no
geometric primitives are generated.</p>
<p>Vertex attributes that are modified by <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> have an
unspecified value after <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> returns. For example, if
<ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref> is enabled, the value of the current color is
undefined after <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> executes. Attributes that aren't
modified remain well defined.</p>
</text><group><param name='mode'/><text><p>Specifies what kind of primitives to render.
Symbolic constants
<ref resolved='predef::GL.GL_POINTS'>GL_POINTS</ref>,
<ref resolved='predef::GL.GL_LINE_STRIP'>GL_LINE_STRIP</ref>,
<ref resolved='predef::GL.GL_LINE_LOOP'>GL_LINE_LOOP</ref>,
<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_STRIP'>GL_TRIANGLE_STRIP</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_FAN'>GL_TRIANGLE_FAN</ref>,
<ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref>,
<ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref>,
<ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref>,
and <ref resolved='predef::GL.GL_POLYGON'>GL_POLYGON</ref> are accepted.</p>
</text></group><group><param name='first'/><text><p>Specifies the starting index in the enabled arrays.</p>
</text></group><group><param name='count'/><text><p>Specifies the number of indices to be rendered.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>count</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDrawArrays'>
<arguments><argument name='mode'><type><int/></type></argument><argument name='first'><type><int/></type></argument><argument name='count'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDrawPixels'><doc><text><p><ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref> reads pixel data from memory and writes it into the frame buffer
relative to the current raster position.
Use <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref> to set the current raster position; use
<ref>glGet</ref> with argument <ref resolved='predef::GL.GL_CURRENT_RASTER_POSITION'>GL_CURRENT_RASTER_POSITION</ref>
to query the raster position.</p>
<p>Several parameters define the encoding of pixel data in memory
and control the processing of the pixel data
before it is placed in the frame buffer.
These parameters are set with four commands:
<ref>glPixelStore</ref>,
<ref>glPixelTransfer</ref>,
<ref>glPixelMap</ref>, and <ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref>.
This reference page describes the effects on <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref> of many,
but not all, of the parameters specified by these four commands.</p>
<p>Data is read from <i>pixels</i> as a sequence of signed or unsigned bytes,
signed or unsigned shorts,
signed or unsigned integers,
or single-precision floating-point values,
depending on <i>type</i>.
Each of these bytes, shorts, integers, or floating-point values is
interpreted as one color or depth component,
or one index,
depending on <i>format</i>.
Indices are always treated individually.
Color components are treated as groups of one,
two,
three,
or four values,
again based on <i>format</i>.
Both individual indices and groups of components are
referred to as pixels.
If <i>type</i> is <ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref>,
the data must be unsigned bytes,
and <i>format</i> must be either <ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref> or <ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref>.
Each unsigned byte is treated as eight 1-bit pixels,
with bit ordering determined by
<ref resolved='predef::GL.GL_UNPACK_LSB_FIRST'>GL_UNPACK_LSB_FIRST</ref> (see <ref>glPixelStore</ref>).</p>
<p><i>width</i>times<i>height</i> pixels are read from memory,
starting at location <i>pixels</i>.
By default, these pixels are taken from adjacent memory locations,
except that after all <i>width</i> pixels are read,
the read pointer is advanced to the next four-byte boundary.
The four-byte row alignment is specified by <ref>glPixelStore</ref> with
argument <ref resolved='predef::GL.GL_UNPACK_ALIGNMENT'>GL_UNPACK_ALIGNMENT</ref>,
and it can be set to one, two, four, or eight bytes.
Other pixel store parameters specify different read pointer advancements,
both before the first pixel is read
and after all <i>width</i> pixels are read.
See the </p>
<p><ref>glPixelStore</ref> reference page for details on these options.</p>
<p>The <i>width</i>times<i>height</i> pixels that are read from memory are
each operated on in the same way,
based on the values of several parameters specified by <ref>glPixelTransfer</ref>
and <ref>glPixelMap</ref>.
The details of these operations,
as well as the target buffer into which the pixels are drawn,
are specific to the format of the pixels,
as specified by <i>format</i>.
<i>format</i> can assume one of eleven symbolic values:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>
</c><c>Each pixel is a single value,
a color index.
It is converted to fixed-point format,
with an unspecified number of bits to the right of the binary point,
regardless of the memory data type.
Floating-point values convert to true fixed-point values.
Signed and unsigned integer data is converted with all fraction bits
set to 0.
Bitmap data convert to either 0 or 1.

Each fixed-point index is then shifted left by <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> bits
and added to <ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref>.
If <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> is negative,
the shift is to the right.
In either case, zero bits fill otherwise unspecified bit locations in the
result.

If the GL is in RGBA mode,
the resulting index is converted to an RGBA pixel 
with the help of the <ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_R'>GL_PIXEL_MAP_I_TO_R</ref>, 
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_G'>GL_PIXEL_MAP_I_TO_G</ref>,
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_B'>GL_PIXEL_MAP_I_TO_B</ref>,
and <ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_A'>GL_PIXEL_MAP_I_TO_A</ref> tables.
If the GL is in color index mode,
and if <ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> is true,
the index is replaced with the value that it references in lookup table
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_I'>GL_PIXEL_MAP_I_TO_I</ref>.
Whether the lookup replacement of the index is done or not,
the integer part of the index is then ANDed with 2 sup b -1,
where b is the number of bits in a color index buffer.

The GL then converts the resulting indices or RGBA colors to fragments
by attaching the current raster position <i>z</i> coordinate and
texture coordinates to each pixel,
then assigning x and y window coordinates to the nth fragment such that
.sp
.RS
.ce
x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width" 
.sp 
.ce
y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf
.ce 0
.sp
.RE

where (x sub r , y sub r) is the current raster position.
These pixel fragments are then treated just like the fragments generated by
rasterizing points, lines, or polygons.
Texture mapping,
fog,
and all the fragment operations are applied before the fragments are written
to the frame buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref>
</c><c>Each pixel is a single value,
a stencil index.
It is converted to fixed-point format,
with an unspecified number of bits to the right of the binary point,
regardless of the memory data type.
Floating-point values convert to true fixed-point values.
Signed and unsigned integer data is converted with all fraction bits
set to 0.
Bitmap data convert to either 0 or 1.

Each fixed-point index is then shifted left by <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> bits,
and added to <ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref>.
If <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> is negative,
the shift is to the right.
In either case, zero bits fill otherwise unspecified bit locations in the
result.
If <ref resolved='predef::GL.GL_MAP_STENCIL'>GL_MAP_STENCIL</ref> is true,
the index is replaced with the value that it references in lookup table
<ref resolved='predef::GL.GL_PIXEL_MAP_S_TO_S'>GL_PIXEL_MAP_S_TO_S</ref>.
Whether the lookup replacement of the index is done or not,
the integer part of the index is then ANDed with 2 sup b -1,
where b is the number of bits in the stencil buffer.
The resulting stencil indices are then written to the stencil buffer
such that the nth index is written to location
</c></r>
</matrix></p>
<p>.RS
.ce
x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width" 
.sp
.ce
y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf
.fi
.sp
.RE</p>
<p>where (x sub r , y sub r) is the current raster position.
Only the pixel ownership test,
the scissor test,
and the stencil writemask affect these write operations.</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_DEPTH_COMPONENT'>GL_DEPTH_COMPONENT</ref>
</c><c>Each pixel is a single-depth component.
Floating-point data is converted directly to an internal floating-point
format with unspecified precision.
Signed integer data is mapped linearly to the internal floating-point
format such that the most positive representable integer value maps to 1.0,
and the most negative representable value maps to -1.0.
Unsigned integer data is mapped similarly:
the largest integer value maps to 1.0,
and 0 maps to 0.0.
The resulting floating-point depth value is then multiplied by
by <ref resolved='predef::GL.GL_DEPTH_SCALE'>GL_DEPTH_SCALE</ref> and added to <ref resolved='predef::GL.GL_DEPTH_BIAS'>GL_DEPTH_BIAS</ref>.
The result is clamped to the range [0,1].

The GL then converts the resulting depth components to fragments
by attaching the current raster position color or color index and
texture coordinates to each pixel,
then assigning x and y window coordinates to the nth fragment such that
</c></r>
</matrix></p>
<p>.RS
.ce
x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width" 
.sp
.ce
y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf
.ce 0
.sp
.RE</p>
<p>where (x sub r , y sub r) is the current raster position.
These pixel fragments are then treated just like the fragments generated by
rasterizing points, lines, or polygons.
Texture mapping,
fog,
and all the fragment operations are applied before the fragments are written
to the frame buffer.</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>
</c><c>Each pixel is a four-component group: for <ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>, the red
component is first, followed by green, followed by blue, followed by 
alpha.
Floating-point values are converted directly to an internal floating-point
format with unspecified precision.
Signed integer values are mapped linearly to the internal floating-point
format such that the most positive representable integer value maps to 1.0,
and the most negative representable value maps to -1.0. (Note that
this mapping does not convert 0 precisely to 0.0.)
Unsigned integer data is mapped similarly:
the largest integer value maps to 1.0,
and 0 maps to 0.0.
The resulting floating-point color values are then multiplied
by <ref>GL_c_SCALE</ref> and added to <ref>GL_c_BIAS</ref>,
where <i>c</i> is RED, GREEN, BLUE, and ALPHA
for the respective color components.
The results are clamped to the range [0,1].

If <ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> is true,
each color component is scaled by the size of lookup table
<ref>GL_PIXEL_MAP_c_TO_c</ref>,
then replaced by the value that it references in that table.
<i>c</i> is R, G, B, or A respectively.

The GL then converts the resulting RGBA colors to fragments
by attaching the current raster position <i>z</i> coordinate and
texture coordinates to each pixel,
then assigning x and y window coordinates to the nth fragment such that
</c></r>
</matrix></p>
<p>.RS
.ce
x sub n ~=~ x sub r ~+~ n ~ roman mod ~ "width" 
.sp
.ce
y sub n ~=~ y sub r ~+~ \(lf ~ n / "width" ~ \(rf
.ce 0
.sp
.RE</p>
<p>where (x sub r , y sub r) is the current raster position.
These pixel fragments are then treated just like the fragments generated by
rasterizing points, lines, or polygons.
Texture mapping,
fog,
and all the fragment operations are applied before the fragments are written
to the frame buffer.</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_RED'>GL_RED</ref>
</c><c>Each pixel is a single red component.
This component is converted to the internal floating-point format in
the same way the red component of an RGBA pixel is. It is
then converted to an RGBA pixel with green and blue set to 0,
and alpha set to 1.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>
</c><c>Each pixel is a single green component.
This component is converted to the internal floating-point format in
the same way the green component of an RGBA pixel is.
It is then converted to an RGBA pixel with red and blue set to 0,
and alpha set to 1.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>
</c><c>Each pixel is a single blue component.
This component is converted to the internal floating-point format in
the same way the blue component of an RGBA pixel is.
It is then converted to an RGBA pixel with red and green set to 0,
and alpha set to 1.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>
</c><c>Each pixel is a single alpha component.
This component is converted to the internal floating-point format in
the same way the alpha component of an RGBA pixel is.
It is then converted to an RGBA pixel with red, green, and blue set to 0.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>
</c><c>Each pixel is a three-component group:
red first, followed by green, followed by blue.
Each component is converted to the internal floating-point format in
the same way the red, green, and blue components of an RGBA pixel are.
The color triple is converted to an RGBA pixel with alpha set to 1.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>
</c><c>Each pixel is a single luminance component.
This component is converted to the internal floating-point format in
the same way the red component of an RGBA pixel is.
It is then converted to an RGBA pixel with red, green, and blue set to the
converted luminance value,
and alpha set to 1.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
<r><c><ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>
</c><c>Each pixel is a two-component group:
luminance first, followed by alpha.
The two components are converted to the internal floating-point format in
the same way the red component of an RGBA pixel is.
They are then converted to an RGBA pixel with red, green, and blue set to the
converted luminance value,
and alpha set to the converted alpha value.
After this conversion, the pixel is treated as if it had been read
as an RGBA pixel.
</c></r>
</matrix></p>
<p>The following table summarizes the meaning of the valid constants for the
<i>type</i> parameter:
.sp 2
.TS
center box ;
ci | ci
c | c .
type	corresponding type
=
GL_UNSIGNED_BYTE	unsigned 8-bit integer
GL_BYTE	signed 8-bit integer
GL_BITMAP	single bits in unsigned 8-bit integers
GL_UNSIGNED_SHORT	unsigned 16-bit integer
GL_SHORT	signed 16-bit integer
GL_UNSIGNED_INT	unsigned 32-bit integer
GL_INT	32-bit integer
GL_FLOAT	single-precision floating-point 
.TE
.sp</p>
<p>The rasterization described so far assumes pixel zoom factors of 1.
If </p>
<p><ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref> is used to change the x and y pixel zoom factors,
pixels are converted to fragments as follows.
If (x sub r, y sub r) is the current raster position,
and a given pixel is in the nth column and mth row
of the pixel rectangle,
then fragments are generated for pixels whose centers are in the rectangle
with corners at
.sp
.RS
.ce
(x sub r + zoom sub x n, y sub r + zoom sub y m) 
.sp
.ce
(x sub r + zoom sub x (n + 1), y sub r + zoom sub y ( m + 1 ))
.ce 0
.sp
.RE</p>
<p>where zoom sub x is the value of <ref resolved='predef::GL.GL_ZOOM_X'>GL_ZOOM_X</ref> and 
zoom sub y is the value of <ref resolved='predef::GL.GL_ZOOM_Y'>GL_ZOOM_Y</ref>.</p>
</text><group><param name='width'/><text><p>Specify the dimensions of the pixel rectangle to be written
into the frame buffer.</p>
</text></group><group><param name='format'/><text><p>Specifies the format of the pixel data.
Symbolic constants
<ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>,
<ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref>,
<ref resolved='predef::GL.GL_DEPTH_COMPONENT'>GL_DEPTH_COMPONENT</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_RED'>GL_RED</ref>,
<ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>,
<ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>,
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>, and
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref> are accepted.</p>
</text></group><group><param name='type'/><text><p>Specifies the data type for <i>pixels</i>.
Symbolic constants
<ref resolved='predef::GL.GL_UNSIGNED_BYTE'>GL_UNSIGNED_BYTE</ref>,
<ref resolved='predef::GL.GL_BYTE'>GL_BYTE</ref>,
<ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_SHORT'>GL_UNSIGNED_SHORT</ref>,
<ref resolved='predef::GL.GL_SHORT'>GL_SHORT</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_INT'>GL_UNSIGNED_INT</ref>,
<ref resolved='predef::GL.GL_INT'>GL_INT</ref>, and
<ref resolved='predef::GL.GL_FLOAT'>GL_FLOAT</ref> are accepted.</p>
</text></group><group><param name='pixels'/><text><p>Specifies a pointer to the pixel data.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if either <i>width</i> or <i>height</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>format</i> or <i>type</i> is not one of
the accepted values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>format</i> is
<ref resolved='predef::GL.GL_RED'>GL_RED</ref>,
<ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>,
<ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>,
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>,
or
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>,
and the GL is in color index mode.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is <ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref> and
<i>format</i> is not either <ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref> or <ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>format</i> is <ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref>
and there is no stencil buffer.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDrawPixels'>
<arguments><argument name='width'><type><or><object resolved='predef::GL.glDrawPixels'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glDrawPixels'/></valuetype></mapping></or></type></argument><argument name='height'><type><or><object resolved='predef::GL.glDrawPixels'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glDrawPixels'/></valuetype></mapping></or></type></argument><argument name='format'><type><or><object resolved='predef::GL.glDrawPixels'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glDrawPixels'/></valuetype></mapping></or></type></argument><argument name='type'><type><or><object resolved='predef::GL.glDrawPixels'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glDrawPixels'/></valuetype></mapping></or></type></argument><argument name='pixels'><type><array><valuetype><or><object resolved='predef::GL.glDrawPixels'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glDrawPixels'/></valuetype></mapping></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEdgeFlag'><doc><text><p>Each vertex of a polygon,
separate triangle,
or separate quadrilateral specified between a <ref resolved='predef::GL.glBegin'>glBegin</ref>/<ref resolved='predef::GL.glEnd'>glEnd</ref> pair
is marked as the start of either a boundary or nonboundary edge.
If the current edge flag is true when the vertex is specified,
the vertex is marked as the start of a boundary edge.
Otherwise, the vertex is marked as the start of a nonboundary edge.
<ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref> sets the edge flag bit to <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref> if <i>flag</i> is <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref>,
and to <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref> otherwise.</p>
<p>The vertices of connected triangles and connected quadrilaterals are always
marked as boundary,
regardless of the value of the edge flag.</p>
<p>Boundary and nonboundary edge flags on vertices are significant only if
<ref resolved='predef::GL.GL_POLYGON_MODE'>GL_POLYGON_MODE</ref> is set to <ref resolved='predef::GL.GL_POINT'>GL_POINT</ref> or <ref resolved='predef::GL.GL_LINE'>GL_LINE</ref>.
See <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>.</p>
</text><group><param name='flag'/><text><p>Specifies the current edge flag value,
either <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref> or <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>. The initial value is <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref>.</p>
</text></group><group><param name='flag'/><text><p>Specifies a pointer to an array that contains a single boolean element,
which replaces the current edge flag value.</p>
</text></group></doc>
<method name='glEdgeFlag'>
<arguments><argument name='flag'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEvalCoord'><doc><text><p><ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> evaluates enabled one-dimensional maps at argument
<ref resolved='predef::GL.glEvalCoord.u'>u</ref> or two-dimensional maps using two domain values,
<ref resolved='predef::GL.glEvalCoord.u'>u</ref> and <ref resolved='predef::GL.glEvalCoord.v'>v</ref>.
To define a map, call <ref>glMap1</ref> and <ref>glMap2</ref>; to enable and
disable it, call <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>.</p>
<p>When one of the <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> commands is issued,
all currently enabled maps of the indicated dimension are evaluated.
Then,
for each enabled map,
it is as if the corresponding GL command had been issued with the
computed value.
That is,
if <ref resolved='predef::GL.GL_MAP1_INDEX'>GL_MAP1_INDEX</ref> or
<ref resolved='predef::GL.GL_MAP2_INDEX'>GL_MAP2_INDEX</ref> is enabled,
a <ref resolved='predef::GL.glIndex'>glIndex</ref> command is simulated.
If <ref resolved='predef::GL.GL_MAP1_COLOR_4'>GL_MAP1_COLOR_4</ref> or
<ref resolved='predef::GL.GL_MAP2_COLOR_4'>GL_MAP2_COLOR_4</ref> is enabled,
a <ref resolved='predef::GL.glColor'>glColor</ref> command is simulated.
If <ref resolved='predef::GL.GL_MAP1_NORMAL'>GL_MAP1_NORMAL</ref> or <ref resolved='predef::GL.GL_MAP2_NORMAL'>GL_MAP2_NORMAL</ref> is enabled,
a normal vector is produced,
and if any of
<ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_1'>GL_MAP1_TEXTURE_COORD_1</ref>,
<ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_2'>GL_MAP1_TEXTURE_COORD_2</ref>,
<ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_3'>GL_MAP1_TEXTURE_COORD_3</ref>, 
<ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_4'>GL_MAP1_TEXTURE_COORD_4</ref>,
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_1'>GL_MAP2_TEXTURE_COORD_1</ref>,
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>,
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_3'>GL_MAP2_TEXTURE_COORD_3</ref>, or
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_4'>GL_MAP2_TEXTURE_COORD_4</ref> is enabled, then an appropriate <ref resolved='predef::GL.glTexCoord'>glTexCoord</ref> command is simulated.</p>
<p>For color,
color index,
normal,
and texture coordinates the GL uses evaluated values instead of current values for those evaluations
that are enabled,
and current values otherwise,
However,
the evaluated values do not update the current values.
Thus, if <ref resolved='predef::GL.glVertex'>glVertex</ref> commands are interspersed with <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>
commands, the color,
normal,
and texture coordinates associated with the <ref resolved='predef::GL.glVertex'>glVertex</ref> commands are not
affected by the values generated by the <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> commands,
but only by the most recent
<ref resolved='predef::GL.glColor'>glColor</ref>,
<ref resolved='predef::GL.glIndex'>glIndex</ref>,
<ref resolved='predef::GL.glNormal'>glNormal</ref>, and
<ref resolved='predef::GL.glTexCoord'>glTexCoord</ref> commands.</p>
<p>No commands are issued for maps that are not enabled.
If more than one texture evaluation is enabled for a particular dimension
(for example, <ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_1'>GL_MAP2_TEXTURE_COORD_1</ref> and
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>),
then only the evaluation of the map that produces the larger
number of coordinates
(in this case, <ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>)
is carried out.
<ref resolved='predef::GL.GL_MAP1_VERTEX_4'>GL_MAP1_VERTEX_4</ref> overrides <ref resolved='predef::GL.GL_MAP1_VERTEX_3'>GL_MAP1_VERTEX_3</ref>,
and
<ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref> overrides <ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref>,
in the same manner.
If neither a three- nor a four-component vertex map is enabled for the
specified dimension,
the <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> command is ignored.</p>
<p>If you have enabled automatic normal generation,
by calling <ref resolved='predef::GL.glEnable'>glEnable</ref> with argument <ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref>,
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> generates surface normals analytically,
regardless of the contents or enabling of the <ref resolved='predef::GL.GL_MAP2_NORMAL'>GL_MAP2_NORMAL</ref> map.
Let
.sp
.nf
    Pp   Pp
m = -- X --
    Pu   Pv
.sp 
.fi</p>
<p>Then the generated normal  n  is </p>
<p>n = m over ~ over { ||  m || }</p>
<p>.sp</p>
<p>If automatic normal generation is disabled,
the corresponding normal map <ref resolved='predef::GL.GL_MAP2_NORMAL'>GL_MAP2_NORMAL</ref>,
if enabled,
is used to produce a normal.
If neither automatic normal generation nor a normal map is enabled,
no normal is generated for 
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref> commands.</p>
</text><group><param name='u'/><text><p>Specifies a value that is the domain coordinate u to the basis function
defined in a previous <ref>glMap1</ref> or <ref>glMap2</ref> command.</p>
</text></group><group><param name='v'/><text><p>Specifies a value that is the domain coordinate v to the basis function
defined in a previous <ref>glMap2</ref> command.</p>
</text></group><group><param name='u'/><text><p>Specifies a pointer to an array containing
either one or two domain coordinates.
The first coordinate is u.
The second coordinate is v.</p>
</text></group></doc>
<method name='glEvalCoord'>
<arguments><argument name='u'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='v'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEvalPoint'><doc><text><p><ref>glMapGrid</ref> and <ref>glEvalMesh</ref> are used in tandem to efficiently
generate and evaluate a series of evenly spaced map domain values.
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> can be used to evaluate a single grid point in the same gridspace
that is traversed by <ref>glEvalMesh</ref>.
Calling <ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> is equivalent to calling
.nf</p>
<p>glEvalCoord1(i . DELTA u + u );
                            1
where </p>
<p>DELTA u = (u - u  ) / n
            2   1 </p>
<p>and n, u , and u
        1       2</p>
<p>.fi
are the arguments to the most recent <ref>glMapGrid1</ref> command.
The one absolute numeric requirement is that if i~=~n,
then the value computed from 
.nf
i . DELTA u + u  is exactly u .
               1             2</p>
<p>.fi</p>
<p>In the two-dimensional case,
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref>,
let 
.nf
DELTA u = (u  - u )/n
            2    1</p>
<p>DELTA v = (v  - v )/m
            2    1</p>
<p>where n, u , u , m, v , and v 
          1   2      1       2</p>
<p>.fi
are the arguments to the most recent <ref>glMapGrid2</ref> command.
Then the <ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> command is equivalent to calling
.nf</p>
<p>glEvalCoord2(i .  DELTA u + u , j . DELTA v + v );
                             1                 1</p>
<p>.fi
The only absolute numeric requirements are that if i~=~n,
then the value computed from 
.nf</p>
<p>i . DELTA u + u  is exactly u ,
               1             2
.fi
and if j~=~m,
then the value computed from 
.nf</p>
<p>j cdot DELTA v + v  is exactly v .
                  1             2</p>
</text><group><param name='i'/><text><p>Specifies the integer value for grid domain variable i.</p>
</text></group><group><param name='j'/><text><p>Specifies the integer value for grid domain variable j
(<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> only).</p>
</text></group></doc>
<method name='glEvalPoint'>
<arguments><argument name='i'><type><or><int/><array><valuetype><int/></valuetype></array></or></type></argument><argument name='j'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glFog'><doc><text><p>Fog is initially disabled.
While enabled, fog affects rasterized geometry,
bitmaps, and pixel blocks, but not buffer clear operations. To enable
and disable fog, call <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument
<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref>. </p>
<p><ref resolved='predef::GL.glFog'>glFog</ref> assigns the value or values in <i>params</i> to the fog parameter
specified by <i>pname</i>.
The following values are accepted for <i>pname</i>:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
the equation to be used to compute the fog blend factor, f.
Three symbolic constants are accepted:
<ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref>,
<ref resolved='predef::GL.GL_EXP'>GL_EXP</ref>,
and <ref resolved='predef::GL.GL_EXP2'>GL_EXP2</ref>.
The equations corresponding to these symbolic constants are defined below.
The initial fog mode is <ref resolved='predef::GL.GL_EXP'>GL_EXP</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG_DENSITY'>GL_FOG_DENSITY</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies density,
the fog density used in both exponential fog equations.
Only nonnegative densities are accepted.
The initial fog density is 1.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG_START'>GL_FOG_START</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies start,
the near distance used in the linear fog equation.
The initial near distance is 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG_END'>GL_FOG_END</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies end,
the far distance used in the linear fog equation.
The initial far distance is 1.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG_INDEX'>GL_FOG_INDEX</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
i sub f,
the fog color index.
The initial fog index is 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG_COLOR'>GL_FOG_COLOR</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
C sub f, the fog color.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
After conversion,
all color components are clamped to the range [0,1].
The initial fog color is (0, 0, 0, 0).
</c></r>
</matrix></p>
<p>Fog blends a fog color with each rasterized pixel fragment's posttexturing
color using a blending factor f.
Factor f is computed in one of three ways,
depending on the fog mode.
Let z be the distance in eye coordinates from the origin to the fragment
being fogged.
The equation for <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref> fog is
.ce</p>
<p>.EQ
f ~=~ {end ~-~ z} over {end ~-~ start}
.EN</p>
<p>.RE</p>
<p>The equation for <ref resolved='predef::GL.GL_EXP'>GL_EXP</ref> fog is
.ce</p>
<p>.EQ
f ~=~ e ** (-(density ~cdot~ z))
.EN</p>
<p>The equation for <ref resolved='predef::GL.GL_EXP2'>GL_EXP2</ref> fog is
.ce</p>
<p>.EQ
f ~=~ e ** (-(density ~cdot~ z) ** 2)
.EN</p>
<p>Regardless of the fog mode,
f is clamped to the range [0,1] after it is computed.
Then,
if the GL is in RGBA color mode,
the fragment's color C sub r is replaced by
.sp
.ce
.EQ
{C sub r} prime ~=~ f C sub r + (1 - f) C sub f 
.EN</p>
<p>In color index mode, the fragment's color index i sub r is replaced by
.sp
.ce
.EQ
{i sub r} prime ~=~ i sub r + (1 - f) i sub f 
.EN</p>
</text><group><param name='pname'/><text><p>Specifies a single-valued fog parameter.
<ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref>,
<ref resolved='predef::GL.GL_FOG_DENSITY'>GL_FOG_DENSITY</ref>,
<ref resolved='predef::GL.GL_FOG_START'>GL_FOG_START</ref>,
<ref resolved='predef::GL.GL_FOG_END'>GL_FOG_END</ref>,
and
<ref resolved='predef::GL.GL_FOG_INDEX'>GL_FOG_INDEX</ref>
are accepted.</p>
</text></group><group><param name='param'/><text><p>Specifies the value that <i>pname</i> will be set to.</p>
</text></group><group><param name='pname'/><text><p>Specifies a fog parameter.
<ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref>,
<ref resolved='predef::GL.GL_FOG_DENSITY'>GL_FOG_DENSITY</ref>,
<ref resolved='predef::GL.GL_FOG_START'>GL_FOG_START</ref>,
<ref resolved='predef::GL.GL_FOG_END'>GL_FOG_END</ref>,
<ref resolved='predef::GL.GL_FOG_INDEX'>GL_FOG_INDEX</ref>,
and
<ref resolved='predef::GL.GL_FOG_COLOR'>GL_FOG_COLOR</ref>
are accepted.</p>
</text></group><group><param name='params'/><text><p>Specifies the value or values to be assigned to <i>pname</i>.
<ref resolved='predef::GL.GL_FOG_COLOR'>GL_FOG_COLOR</ref> requires an array of four values.
All other parameters accept an array containing only a single value.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>pname</i> is not an accepted value,
or if <i>pname</i> is <ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref> and <i>params</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>pname</i> is <ref resolved='predef::GL.GL_FOG_DENSITY'>GL_FOG_DENSITY</ref>, 
and <i>params</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glFog'>glFog</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glFog'>
<arguments><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glFrustum'><doc><text><p><ref resolved='predef::GL.glFrustum'>glFrustum</ref> describes a perspective matrix that produces a perspective projection.
The current matrix (see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>) is multiplied by this matrix
and the result replaces the current matrix, as if
<ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref> were called with the following matrix
as its argument:</p>
<p>.sp 5
.ce
.EQ
down 130 {left ( ~~ matrix {
   ccol { {{2 ~ "zNear"} over {"right" - "left"}} above 0 above 0 above 0 }
   ccol { 0 above {{2 ~ "zNear"} over {"top" - "bottom"}} ~ above 0 above 0 }
   ccol { A ~~~~ above B ~~~~ above C ~~~~ above -1 ~~~~}
   ccol { 0 above 0 above D above 0}
}  ~~~ right )}
.EN
.sp
.ce
.EQ
down 130
{A ~=~ {"right" + "left"} over {"right" - "left"}}
.EN
.sp
.ce
.EQ
down 130
{B ~=~ {"top" + "bottom"} over {"top" - "bottom"}}
.EN
.sp
.ce
.EQ
down 130
{C ~=~ -{{"zFar" + "zNear"} over {"zFar" - "zNear"}}}
.EN
.sp
.ce
.EQ
down 130
{D ~=~ -{{2 ~ "zFar" ~ "zNear"} over {"zFar" - "zNear"}}}
.EN
.sp</p>
<p>Typically, the matrix mode is <ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>, and
(<i>left</i>, <i>bottom</i>, -<i>zNear</i>) and (<i>right</i>, <i>top</i>,  -<i>zNear</i>)
specify the points on the near clipping plane that are mapped
to the lower left and upper right corners of the window,
assuming that the eye is located at (0, 0, 0).
-<i>zFar</i> specifies the location of the far clipping plane.
Both <i>zNear</i> and <i>zFar</i> must be positive.</p>
<p>Use <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to save and restore
the current matrix stack.</p>
</text><group><param name='left'/><text><p>Specify the coordinates for the left and right vertical clipping planes.</p>
</text></group><group><param name='bottom'/><text><p>Specify the coordinates for the bottom and top horizontal clipping planes.</p>
</text></group><group><param name='zNear'/><text><p>Specify the distances to the near and far depth clipping planes.
Both distances must be positive.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>zNear</i> or <i>zFar</i> is not positive.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glFrustum'>glFrustum</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glFrustum'>
<arguments><argument name='left'><type><float/></type></argument><argument name='right'><type><float/></type></argument><argument name='bottom'><type><float/></type></argument><argument name='top'><type><float/></type></argument><argument name='zNear'><type><float/></type></argument><argument name='zFar'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glGenLists'><doc><text><p><ref resolved='predef::GL.glGenLists'>glGenLists</ref> has one argument, <i>range</i>.
It returns an integer <i>n</i> such that <i>range</i> contiguous
empty display lists,
named <i>n</i>, <i>n</i>+1, ..., <i>n</i>+<i>range</i> -1,
are created.
If <i>range</i> is 0,
if there is no group of <i>range</i> contiguous names available,
or if any error is generated,
no display lists are generated,
and 0 is returned.</p>
</text><group><param name='range'/><text><p>Specifies the number of contiguous empty display lists
to be generated.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>range</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glGenLists'>glGenLists</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glGenLists'>
<arguments><argument name='range'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glGetError'><doc><text><p><ref resolved='predef::GL.glGetError'>glGetError</ref> returns the value of the error flag.
Each detectable error is assigned a numeric code and symbolic name.
When an error occurs,
the error flag is set to the appropriate error code value.
No other errors are recorded until <ref resolved='predef::GL.glGetError'>glGetError</ref> is called,
the error code is returned,
and the flag is reset to <ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>.
If a call to <ref resolved='predef::GL.glGetError'>glGetError</ref> returns <ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>,
there has been no detectable error since the last call to <ref resolved='predef::GL.glGetError'>glGetError</ref>,
or since the GL was initialized.</p>
<p>To allow for distributed implementations,
there may be several error flags.
If any single error flag has recorded an error,
the value of that flag is returned
and that flag is reset to <ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>
when <ref resolved='predef::GL.glGetError'>glGetError</ref> is called.
If more than one flag has recorded an error,
<ref resolved='predef::GL.glGetError'>glGetError</ref> returns and clears an arbitrary error flag value.
Thus, <ref resolved='predef::GL.glGetError'>glGetError</ref> should always be called in a loop,
until it returns <ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>,
if all error flags are to be reset.</p>
<p>Initially, all error flags are set to <ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>.</p>
<p>The following errors are currently defined:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_NO_ERROR'>GL_NO_ERROR</ref>
</c><c>No error has been recorded.
The value of this symbolic constant is guaranteed to be 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref>
</c><c>An unacceptable value is specified for an enumerated argument.
The offending command is ignored,
and has no other side effect than to set the error flag.
</c></r>
<r><c><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref>
</c><c>A numeric argument is out of range.
The offending command is ignored,
and has no other side effect than to set the error flag.
</c></r>
<r><c><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref>
</c><c>The specified operation is not allowed in the current state.
The offending command is ignored,
and has no other side effect than to set the error flag.
</c></r>
<r><c><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref>
</c><c>This command would cause a stack overflow.
The offending command is ignored,
and has no other side effect than to set the error flag.
</c></r>
<r><c><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref>
</c><c>This command would cause a stack underflow.
The offending command is ignored,
and has no other side effect than to set the error flag.
</c></r>
<r><c><ref resolved='predef::GL.GL_OUT_OF_MEMORY'>GL_OUT_OF_MEMORY</ref>
</c><c>There is not enough memory left to execute the command.
The state of the GL is undefined,
except for the state of the error flags,
after this error is recorded.
</c></r>
</matrix></p>
<p>When an error flag is set,
results of a GL operation are undefined only if <ref resolved='predef::GL.GL_OUT_OF_MEMORY'>GL_OUT_OF_MEMORY</ref>
has occurred.
In all other cases,
the command generating the error is ignored and has no effect on the GL state
or frame buffer contents.
If the generating command returns a value, it returns 0.  
If <ref resolved='predef::GL.glGetError'>glGetError</ref> itself generates an error, it returns 0.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glGetError'>glGetError</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.
In this case <ref resolved='predef::GL.glGetError'>glGetError</ref> returns 0.</p>
</text></group></doc>
<method name='glGetError'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glGetString'><doc><text><p><ref resolved='predef::GL.glGetString'>glGetString</ref> returns a pointer to a static string
describing some aspect of the current GL connection.
<i>name</i> can be one of the following:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_VENDOR'>GL_VENDOR</ref>
</c><c>Returns the company responsible for this GL implementation.
This name does not change from release to release.
</c></r>
<r><c><ref resolved='predef::GL.GL_RENDERER'>GL_RENDERER</ref>
</c><c>Returns the name of the renderer.
This name is typically specific to a particular configuration of a hardware
platform.
It does not change from release to release.
</c></r>
<r><c><ref resolved='predef::GL.GL_VERSION'>GL_VERSION</ref>
</c><c>Returns a version or release number.
</c></r>
<r><c><ref resolved='predef::GL.GL_EXTENSIONS'>GL_EXTENSIONS</ref>
</c><c>Returns a space-separated list of supported extensions to GL.
</c></r>
</matrix></p>
<p>Because the GL does not include queries for the performance
characteristics of an implementation, some applications are written to
recognize known platforms and modify their GL usage based on known
performance characteristics of these platforms.
Strings <ref resolved='predef::GL.GL_VENDOR'>GL_VENDOR</ref> and <ref resolved='predef::GL.GL_RENDERER'>GL_RENDERER</ref> together uniquely specify
a platform. They do not change from release to release and should be used
by platform-recognition algorithms. </p>
<p>Some applications want to make use of features that
are not part of the standard GL. These features
may be implemented as extensions to the standard GL.
The <ref resolved='predef::GL.GL_EXTENSIONS'>GL_EXTENSIONS</ref> string is a space-separated
list of supported GL extensions.
(Extension names never contain a space character.)</p>
<p>The <ref resolved='predef::GL.GL_VERSION'>GL_VERSION</ref> string begins with a version number.
The version number uses one
of these forms: </p>
<p><i>major_number.minor_number</i>  </p>
<p><i>major_number.minor_number.release_number</i></p>
<p>Vendor-specific information may follow the version
number. Its format depends on the implementation, but 
a space always separates the version number and 
the vendor-specific information.</p>
<p>All strings are null-terminated.</p>
</text><group><param name='name'/><text><p>Specifies a symbolic constant, one of 
<ref resolved='predef::GL.GL_VENDOR'>GL_VENDOR</ref>, <ref resolved='predef::GL.GL_RENDERER'>GL_RENDERER</ref>, <ref resolved='predef::GL.GL_VERSION'>GL_VERSION</ref>, or <ref resolved='predef::GL.GL_EXTENSIONS'>GL_EXTENSIONS</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>name</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glGetString'>glGetString</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glGetString'>
<arguments><argument name='name'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glHint'><doc><text><p>Certain aspects of GL behavior,
when there is room for interpretation,
can be controlled with hints.
A hint is specified with two arguments.
<i>target</i> is a symbolic 
constant indicating the behavior to be controlled,
and <i>mode</i> is another symbolic constant indicating the desired
behavior. The initial value for each <i>target</i> is <ref resolved='predef::GL.GL_DONT_CARE'>GL_DONT_CARE</ref>. 
<i>mode</i> can be one of the following:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_FASTEST'>GL_FASTEST</ref>
</c><c>The most efficient option should be chosen.
</c></r>
<r><c><ref resolved='predef::GL.GL_NICEST'>GL_NICEST</ref>
</c><c>The most correct,
or highest quality,
option should be chosen.
</c></r>
<r><c><ref resolved='predef::GL.GL_DONT_CARE'>GL_DONT_CARE</ref>
</c><c>No preference.
</c></r>
</matrix></p>
<p>Though the implementation aspects that can be hinted are well defined,
the interpretation of the hints depends on the implementation.
The hint aspects that can be specified with <i>target</i>,
along with suggested semantics,
are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_FOG_HINT'>GL_FOG_HINT</ref>
</c><c>Indicates the accuracy of fog calculation.
If per-pixel fog calculation is not efficiently supported
by the GL implementation,
hinting <ref resolved='predef::GL.GL_DONT_CARE'>GL_DONT_CARE</ref> or <ref resolved='predef::GL.GL_FASTEST'>GL_FASTEST</ref> can result in per-vertex
calculation of fog effects.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_SMOOTH_HINT'>GL_LINE_SMOOTH_HINT</ref>
</c><c>Indicates the sampling quality of antialiased lines.
If a larger filter function is applied, hinting <ref resolved='predef::GL.GL_NICEST'>GL_NICEST</ref> can
result in more pixel fragments being generated during rasterization,
</c></r>
<r><c><ref resolved='predef::GL.GL_PERSPECTIVE_CORRECTION_HINT'>GL_PERSPECTIVE_CORRECTION_HINT</ref>
</c><c>Indicates the quality of color and texture coordinate interpolation.
If perspective-corrected parameter interpolation is not efficiently supported
by the GL implementation,
hinting <ref resolved='predef::GL.GL_DONT_CARE'>GL_DONT_CARE</ref> or <ref resolved='predef::GL.GL_FASTEST'>GL_FASTEST</ref> can result in simple linear
interpolation of colors and/or texture coordinates.
</c></r>
<r><c><ref resolved='predef::GL.GL_POINT_SMOOTH_HINT'>GL_POINT_SMOOTH_HINT</ref>
</c><c>Indicates the sampling quality of antialiased points.
If a larger filter function is applied, hinting <ref resolved='predef::GL.GL_NICEST'>GL_NICEST</ref> can
result in more pixel fragments being generated during rasterization, 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_SMOOTH_HINT'>GL_POLYGON_SMOOTH_HINT</ref>
</c><c>Indicates the sampling quality of antialiased polygons.
Hinting <ref resolved='predef::GL.GL_NICEST'>GL_NICEST</ref> can result in more pixel fragments being generated
during rasterization,
if a larger filter function is applied.
</c></r></matrix></p>
</text><group><param name='target'/><text><p>Specifies a symbolic constant indicating the behavior to be controlled.
<ref resolved='predef::GL.GL_FOG_HINT'>GL_FOG_HINT</ref>,	
<ref resolved='predef::GL.GL_LINE_SMOOTH_HINT'>GL_LINE_SMOOTH_HINT</ref>,
<ref resolved='predef::GL.GL_PERSPECTIVE_CORRECTION_HINT'>GL_PERSPECTIVE_CORRECTION_HINT</ref>,
<ref resolved='predef::GL.GL_POINT_SMOOTH_HINT'>GL_POINT_SMOOTH_HINT</ref>, and
<ref resolved='predef::GL.GL_POLYGON_SMOOTH_HINT'>GL_POLYGON_SMOOTH_HINT</ref> are accepted.</p>
</text></group><group><param name='mode'/><text><p>Specifies a symbolic constant indicating the desired behavior.
<ref resolved='predef::GL.GL_FASTEST'>GL_FASTEST</ref>, 
<ref resolved='predef::GL.GL_NICEST'>GL_NICEST</ref>, and 
<ref resolved='predef::GL.GL_DONT_CARE'>GL_DONT_CARE</ref> are accepted.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if either <i>target</i> or <i>mode</i> is not
an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glHint'>glHint</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glHint'>
<arguments><argument name='target'><type><int/></type></argument><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glIndex'><doc><text><p><ref resolved='predef::GL.glIndex'>glIndex</ref> updates the current (single-valued) color index.
It takes one argument, the new value for the current color index.</p>
<p>The current index is stored as a floating-point value. 
Integer values are converted directly to floating-point values,
with no special mapping.
The initial value is 1. </p>
<p>Index values outside the representable range of the color index buffer
are not clamped.
However,
before an index is dithered (if enabled) and written to the frame buffer,
it is converted to fixed-point format.
Any bits in the integer portion of the resulting fixed-point value
that do not correspond to bits in the frame buffer are masked out.</p>
</text><group><param name='c'/><text><p>Specifies the new value for the current color index.</p>
</text></group><group><param name='c'/><text><p>Specifies a pointer to a one-element array that contains
the new value for the current color index.</p>
</text></group></doc>
<method name='glIndex'>
<arguments><argument name='c'><type><or><float/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glIndexMask'><doc><text><p><ref resolved='predef::GL.glIndexMask'>glIndexMask</ref> controls the writing of individual bits in the color index buffers.
The least significant n bits of <i>mask</i>,
where n is the number of bits in a color index buffer,
specify a mask.
Where a 1 (one) appears in the mask,
it's possible to write to the corresponding bit in the color index
buffer (or buffers). 
Where a 0 (zero) appears,
the corresponding bit is write-protected.</p>
<p>This mask is used only in color index mode,
and it affects only the buffers currently selected for writing
(see <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>).
Initially, all bits are enabled for writing.</p>
</text><group><param name='mask'/><text><p>Specifies a bit mask to enable and disable the writing of individual bits
in the color index buffers.
Initially, the mask is all 1's.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glIndexMask'>glIndexMask</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glIndexMask'>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glIsEnabled'><doc><text><p><ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref> returns <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref> if <i>cap</i> is an enabled capability
and returns <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref> otherwise.
Initially all capabilities except <ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> are disabled;
<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> is initially enabled.</p>
<p>The following capabilities are accepted for <i>cap</i>:</p>
<p>.TS
lb lb
l l l.
Constant	See
_</p>
<p><ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref>	<ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>
<ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref>	<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>
<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>	<ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>
<ref>GL_CLIP_PLANE</ref><i>i</i>	<ref>glClipPlane</ref>
<ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref>	<ref>glColorPointer</ref>
<ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref>	<ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>
<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>	<ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>
<ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref>	<ref resolved='predef::GL.glCullFace'>glCullFace</ref>
<ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref>	<ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>, <ref resolved='predef::GL.glDepthRange'>glDepthRange</ref>
<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref>	<ref resolved='predef::GL.glEnable'>glEnable</ref>
<ref resolved='predef::GL.GL_EDGE_FLAG_ARRAY'>GL_EDGE_FLAG_ARRAY</ref>	<ref>glEdgeFlagPointer</ref>
<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref>	<ref resolved='predef::GL.glFog'>glFog</ref>
<ref resolved='predef::GL.GL_INDEX_ARRAY'>GL_INDEX_ARRAY</ref>	<ref>glIndexPointer</ref>
<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref>	<ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>
<ref>GL_LIGHT</ref><i>i</i>	<ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>
<ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref>	<ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>
<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref>	<ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>
<ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref>	<ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>
<ref resolved='predef::GL.GL_MAP1_COLOR_4'>GL_MAP1_COLOR_4</ref>	<ref>glMap1</ref>, <ref>glMap2</ref>
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>	<ref>glMap2</ref>
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_3'>GL_MAP2_TEXTURE_COORD_3</ref>	<ref>glMap2</ref>
<ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_4'>GL_MAP2_TEXTURE_COORD_4</ref>	<ref>glMap2</ref>
<ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref>	<ref>glMap2</ref>
<ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref>	<ref>glMap2</ref>
<ref resolved='predef::GL.GL_NORMAL_ARRAY'>GL_NORMAL_ARRAY</ref>	<ref>glNormalPointer</ref>
<ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref>	<ref resolved='predef::GL.glNormal'>glNormal</ref>
<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref>	<ref resolved='predef::GL.glPointSize'>glPointSize</ref>
<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref>	<ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>
<ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref> 	<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>
<ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref> 	<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>
<ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref> 	<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>
<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref>	<ref>glPolygonStipple</ref>
<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref>	<ref resolved='predef::GL.glScissor'>glScissor</ref>
<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref>	<ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>
<ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>	<ref>glTexImage1D</ref>
<ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>	<ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>
<ref resolved='predef::GL.GL_TEXTURE_COORD_ARRAY'>GL_TEXTURE_COORD_ARRAY</ref>	<ref>glTexCoordPointer</ref>
<ref resolved='predef::GL.GL_TEXTURE_GEN_Q'>GL_TEXTURE_GEN_Q</ref>	<ref resolved='predef::GL.glTexGen'>glTexGen</ref>
<ref resolved='predef::GL.GL_TEXTURE_GEN_R'>GL_TEXTURE_GEN_R</ref>	<ref resolved='predef::GL.glTexGen'>glTexGen</ref>
<ref resolved='predef::GL.GL_TEXTURE_GEN_S'>GL_TEXTURE_GEN_S</ref>	<ref resolved='predef::GL.glTexGen'>glTexGen</ref>
<ref resolved='predef::GL.GL_TEXTURE_GEN_T'>GL_TEXTURE_GEN_T</ref>	<ref resolved='predef::GL.glTexGen'>glTexGen</ref>
<ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref>	<ref>glVertexPointer</ref>
.TE</p>
</text><group><param name='cap'/><text><p>Specifies a symbolic constant indicating a GL capability.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>cap</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glIsEnabled'>
<arguments><argument name='cap'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glIsList'><doc><text><p><ref resolved='predef::GL.glIsList'>glIsList</ref> returns <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref> if <i>list</i> is the name
of a display list and returns <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref> otherwise.</p>
</text><group><param name='list'/><text><p>Specifies a potential display-list name.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glIsList'>glIsList</ref>
is executed between the execution of
<ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glIsList'>
<arguments><argument name='list'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glIsTexture'><doc><text><p><ref resolved='predef::GL.glIsTexture'>glIsTexture</ref> returns <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref> if <i>texture</i> is currently the name of a texture.
If <i>texture</i> is zero, or is a non-zero value that is not currently the
name of a texture, or if an error occurs, <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref> returns <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>.</p>
</text><group><param name='texture'/><text><p>Specifies a value that may be the name of a texture.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glIsTexture'>
<arguments><argument name='texture'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLight'><doc><text><p><ref resolved='predef::GL.glLight'>glLight</ref> sets the values of individual light source parameters.
<i>light</i> names the light and is a symbolic name of the form <ref>GL_LIGHT</ref>i,
where 0 \(&lt;= i &lt; <ref resolved='predef::GL.GL_MAX_LIGHTS'>GL_MAX_LIGHTS</ref>.
<i>pname</i> specifies one of ten light source parameters,
again by symbolic name.
<i>params</i> is either a single value or a pointer to an array that contains
the new values.</p>
<p>To enable and disable lighting calculation, call <ref resolved='predef::GL.glEnable'>glEnable</ref>
and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref>. Lighting is
initially disabled.
When it is enabled,
light sources that are enabled contribute to the lighting calculation.
Light source i is enabled and disabled using <ref resolved='predef::GL.glEnable'>glEnable</ref> and
<ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref>GL_LIGHT</ref>i. </p>
<p>The ten light parameters are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the ambient RGBA intensity of the light.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial ambient light intensity is (0, 0, 0, 1).
</c></r>
<r><c><ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the diffuse RGBA intensity of the light.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial value
for <ref resolved='predef::GL.GL_LIGHT0'>GL_LIGHT0</ref> is (1, 1, 1, 1); for other lights, the
initial value is (0, 0, 0, 0). 
</c></r>
<r><c><ref resolved='predef::GL.GL_SPECULAR'>GL_SPECULAR</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the specular RGBA intensity of the light.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial value
for <ref resolved='predef::GL.GL_LIGHT0'>GL_LIGHT0</ref> is (1, 1, 1, 1); for other lights, the
initial value is (0, 0, 0, 0). 
</c></r>
<r><c><ref resolved='predef::GL.GL_POSITION'>GL_POSITION</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the position of the light in homogeneous object coordinates.
Both integer and floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.

The position is transformed by the modelview matrix when
<ref resolved='predef::GL.glLight'>glLight</ref> is called (just as if it were a point),
and it is stored in eye coordinates.
If the w component of the position is 0,
the light is treated as a directional source.
Diffuse and specular lighting calculations take the light's direction,
but not its actual position,
into account,
and attenuation is disabled.
Otherwise,
diffuse and specular lighting calculations are based on the actual location
of the light in eye coordinates,
and attenuation is enabled.
The initial position is (0, 0, 1, 0);
thus, the initial light source is directional,
parallel to, and in the direction of the -z axis.
</c></r>
<r><c><ref resolved='predef::GL.GL_SPOT_DIRECTION'>GL_SPOT_DIRECTION</ref>
</c><c><i>params</i> contains three integer or floating-point values that specify
the direction of the light in homogeneous object coordinates.
Both integer and floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.

The spot direction is transformed by the inverse of the modelview matrix when
<ref resolved='predef::GL.glLight'>glLight</ref> is called (just as if it were a normal),
and it is stored in eye coordinates.
It is significant only when <ref resolved='predef::GL.GL_SPOT_CUTOFF'>GL_SPOT_CUTOFF</ref> is not 180,
which it is initially.
The initial direction is (0, 0, -1).
</c></r>
<r><c><ref resolved='predef::GL.GL_SPOT_EXPONENT'>GL_SPOT_EXPONENT</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
the intensity distribution of the light.
Integer and floating-point values are mapped directly.
Only values in the range [0,128] are accepted.

Effective light intensity is attenuated by the cosine of the angle between
the direction of the light and the direction from the light to the vertex
being lighted,
raised to the power of the spot exponent.
Thus, higher spot exponents result in a more focused light source,
regardless of the spot cutoff angle (see <ref resolved='predef::GL.GL_SPOT_CUTOFF'>GL_SPOT_CUTOFF</ref>, next paragraph).
The initial spot exponent is 0,
resulting in uniform light distribution.
</c></r>
<r><c><ref resolved='predef::GL.GL_SPOT_CUTOFF'>GL_SPOT_CUTOFF</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
the maximum spread angle of a light source.
Integer and floating-point values are mapped directly.
Only values in the range [0,90] and the special value 180
are accepted.
If the angle between the direction of the light and the direction from the
light to the vertex being lighted is greater than the spot cutoff angle,
the light is completely masked.
Otherwise, its intensity is controlled by the spot exponent and the
attenuation factors.
The initial spot cutoff is 180,
resulting in uniform light distribution.
</c></r>
<r><c><ref resolved='predef::GL.GL_CONSTANT_ATTENUATION'>GL_CONSTANT_ATTENUATION</ref>
</c><c/></r>
<r><c><ref resolved='predef::GL.GL_LINEAR_ATTENUATION'>GL_LINEAR_ATTENUATION </ref>
</c><c/></r>
<r><c><ref resolved='predef::GL.GL_QUADRATIC_ATTENUATION'>GL_QUADRATIC_ATTENUATION</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
one of the three light attenuation factors.
Integer and floating-point values are mapped directly.
Only nonnegative values are accepted.
If the light is positional,
rather than directional,
its intensity is attenuated by the reciprocal of the sum of the constant
factor, the linear factor times the distance between the light
and the vertex being lighted,
and the quadratic factor times the square of the same distance.
The initial attenuation factors are (1, 0, 0),
resulting in no attenuation.
</c></r></matrix></p>
</text><group><param name='light'/><text><p>Specifies a light.
The number of lights depends on the implementation,
but at least eight lights are supported.
They are identified by symbolic names of the form <ref>GL_LIGHT</ref>i
where 0 \(&lt;=  i  &lt; <ref resolved='predef::GL.GL_MAX_LIGHTS'>GL_MAX_LIGHTS</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies a single-valued light source parameter for <i>light</i>.
<ref resolved='predef::GL.GL_SPOT_EXPONENT'>GL_SPOT_EXPONENT</ref>,
<ref resolved='predef::GL.GL_SPOT_CUTOFF'>GL_SPOT_CUTOFF</ref>,
<ref resolved='predef::GL.GL_CONSTANT_ATTENUATION'>GL_CONSTANT_ATTENUATION</ref>,
<ref resolved='predef::GL.GL_LINEAR_ATTENUATION'>GL_LINEAR_ATTENUATION</ref>, and
<ref resolved='predef::GL.GL_QUADRATIC_ATTENUATION'>GL_QUADRATIC_ATTENUATION</ref> are accepted.</p>
</text></group><group><param name='param'/><text><p>Specifies the value that parameter <i>pname</i> of light source <i>light</i>
will be set to.</p>
</text></group><group><param name='light'/><text><p>Specifies a light.
The number of lights depends on the implementation, but
at least eight lights are supported.
They are identified by symbolic names of the form <ref>GL_LIGHT</ref>i
where 0 \(&lt;=  i  &lt; <ref resolved='predef::GL.GL_MAX_LIGHTS'>GL_MAX_LIGHTS</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies a light source parameter for <i>light</i>.
<ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref>,
<ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>,
<ref resolved='predef::GL.GL_SPECULAR'>GL_SPECULAR</ref>,
<ref resolved='predef::GL.GL_POSITION'>GL_POSITION</ref>,
<ref resolved='predef::GL.GL_SPOT_CUTOFF'>GL_SPOT_CUTOFF</ref>,
<ref resolved='predef::GL.GL_SPOT_DIRECTION'>GL_SPOT_DIRECTION</ref>,
<ref resolved='predef::GL.GL_SPOT_EXPONENT'>GL_SPOT_EXPONENT</ref>,
<ref resolved='predef::GL.GL_CONSTANT_ATTENUATION'>GL_CONSTANT_ATTENUATION</ref>,
<ref resolved='predef::GL.GL_LINEAR_ATTENUATION'>GL_LINEAR_ATTENUATION</ref>, and
<ref resolved='predef::GL.GL_QUADRATIC_ATTENUATION'>GL_QUADRATIC_ATTENUATION</ref> are accepted.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to the value or values that parameter <i>pname</i>
of light source <i>light</i> will be set to.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if either <i>light</i> or <i>pname</i>
is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if a spot exponent value is specified
outside the range [0,128],
or if spot cutoff is specified outside the range [0,90] (except for the
special value 180),
or if a negative attenuation factor is specified.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLight'>glLight</ref> is executed between
the execution of
<ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLight'>
<arguments><argument name='light'><type><int/></type></argument><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLightModel'><doc><text><p><ref resolved='predef::GL.glLightModel'>glLightModel</ref> sets the lighting model parameter.
<i>pname</i> names a parameter and <i>params</i> gives the new value.
There are three lighting model parameters:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_LIGHT_MODEL_AMBIENT'>GL_LIGHT_MODEL_AMBIENT</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the ambient RGBA intensity of the entire scene.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial ambient scene intensity is (0.2, 0.2, 0.2, 1.0).
</c></r>
<r><c><ref resolved='predef::GL.GL_LIGHT_MODEL_LOCAL_VIEWER'>GL_LIGHT_MODEL_LOCAL_VIEWER</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
how specular reflection angles are computed.
If <i>params</i> is 0 (or 0.0), specular reflection angles take the
view direction to be parallel to and in the direction of the -<i>z</i> axis,
regardless of the location of the vertex in eye coordinates.
Otherwise, specular reflections are computed from the origin
of the eye coordinate system.
The initial value is 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_LIGHT_MODEL_TWO_SIDE'>GL_LIGHT_MODEL_TWO_SIDE</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
whether one- or two-sided lighting calculations are done for polygons.
It has no effect on the lighting calculations for points,
lines,
or bitmaps.
If <i>params</i> is 0 (or 0.0), one-sided lighting is specified,
and only the <i>front</i> material parameters are used in the
lighting equation.
Otherwise, two-sided lighting is specified.
In this case, vertices of back-facing polygons are lighted using the
<i>back</i> material parameters,
and have their normals reversed before the lighting equation is evaluated.
Vertices of front-facing polygons are always lighted using the
<i>front</i> material parameters,
with no change to their normals. The initial value is 0.
</c></r>
</matrix></p>
<p>In RGBA mode, the lighted color of a vertex is the sum of
the material emission intensity,
the product of the material ambient reflectance and the lighting model full-scene 
ambient intensity,
and the contribution of each enabled light source.
Each light source contributes the sum of three terms:
ambient, diffuse, and specular.
The ambient light source contribution is the product of the material ambient
reflectance and the light's ambient intensity.
The diffuse light source contribution is the product of the material diffuse
reflectance,
the light's diffuse intensity,
and the dot product of the vertex's normal with the normalized vector from
the vertex to the light source.
The specular light source contribution is the product of the material specular
reflectance,
the light's specular intensity,
and the dot product of the normalized vertex-to-eye and vertex-to-light
vectors,
raised to the power of the shininess of the material.
All three light source contributions are attenuated equally based on
the distance from the vertex to the light source and on light source
direction, spread exponent, and spread cutoff angle.
All dot products are replaced with 0 if they evaluate to a negative value.</p>
<p>The alpha component of the resulting lighted color is set to the alpha value
of the material diffuse reflectance.</p>
<p>In color index mode,
the value of the lighted index of a vertex ranges from the ambient
to the specular values passed to <ref resolved='predef::GL.glMaterial'>glMaterial</ref> using <ref resolved='predef::GL.GL_COLOR_INDEXES'>GL_COLOR_INDEXES</ref>.
Diffuse and specular coefficients,
computed with a (.30, .59, .11) weighting of the lights' colors,
the shininess of the material,
and the same reflection and attenuation equations as in the RGBA case,
determine how much above ambient the resulting index is.</p>
</text><group><param name='pname'/><text><p>Specifies a single-valued lighting model parameter.
<ref resolved='predef::GL.GL_LIGHT_MODEL_LOCAL_VIEWER'>GL_LIGHT_MODEL_LOCAL_VIEWER</ref> and
<ref resolved='predef::GL.GL_LIGHT_MODEL_TWO_SIDE'>GL_LIGHT_MODEL_TWO_SIDE</ref> are accepted.</p>
</text></group><group><param name='param'/><text><p>Specifies the value that <i>param</i> will be set to.</p>
</text></group><group><param name='pname'/><text><p>Specifies a lighting model parameter.
<ref resolved='predef::GL.GL_LIGHT_MODEL_AMBIENT'>GL_LIGHT_MODEL_AMBIENT</ref>,
<ref resolved='predef::GL.GL_LIGHT_MODEL_LOCAL_VIEWER'>GL_LIGHT_MODEL_LOCAL_VIEWER</ref>, and
<ref resolved='predef::GL.GL_LIGHT_MODEL_TWO_SIDE'>GL_LIGHT_MODEL_TWO_SIDE</ref> are accepted.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to the value or values that <i>params</i> will be set to.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>pname</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLightModel'>glLightModel</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLightModel'>
<arguments><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLineStipple'><doc><text><p>Line stippling masks out certain fragments produced by rasterization;
those fragments will not be drawn.
The masking is achieved by using three parameters:
the 16-bit line stipple pattern <i>pattern</i>,
the repeat count <i>factor</i>,
and an integer stipple counter s. </p>
<p>Counter s is reset to 0 whenever <ref resolved='predef::GL.glBegin'>glBegin</ref> is called,
and before each line segment of a <ref resolved='predef::GL.glBegin'>glBegin</ref>(<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>)/<ref resolved='predef::GL.glEnd'>glEnd</ref>
sequence is generated.
It is incremented after each fragment of a unit width aliased line segment is generated,
or after each i fragments of an i width line segment are generated.
The i fragments associated with count s are masked out if
.sp
.ce
<i>pattern</i> bit (s ~/~ "factor") ~roman mod~ 16 
.sp
is 0, otherwise these fragments are sent to the frame buffer.
Bit zero of <i>pattern</i> is the least significant bit.</p>
<p>Antialiased lines are treated as a sequence of 1 times width rectangles
for purposes of stippling.
Whether rectagle s is rasterized or not depends on the fragment rule
described for aliased lines,
counting rectangles rather than groups of fragments.</p>
<p>To enable and disable line stippling, call <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
with argument <ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref>.
When enabled,
the line stipple pattern is applied as described above.
When disabled,
it is as if the pattern were all 1's.
Initially, line stippling is disabled.</p>
</text><group><param name='factor'/><text><p>Specifies a multiplier for each bit in the line stipple pattern.
If <i>factor</i> is 3,
for example,
each bit in the pattern is used three times
before the next bit in the pattern is used.
<i>factor</i> is clamped to the range [1, 256] and defaults to 1.</p>
</text></group><group><param name='pattern'/><text><p>Specifies a 16-bit integer whose bit pattern determines
which fragments of a line will be drawn when the line is rasterized.
Bit zero is used first; the default pattern is all 1's.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLineStipple'>
<arguments><argument name='factor'><type><int/></type></argument><argument name='pattern'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLineWidth'><doc><text><p><ref resolved='predef::GL.glLineWidth'>glLineWidth</ref> specifies the rasterized width of both aliased and antialiased
lines.
Using a line width other than 1 has different effects,
depending on whether line antialiasing is enabled.
To enable and disable line antialiasing, call 
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
with argument <ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref>. Line antialiasing is initially
disabled. </p>
<p>If line antialiasing is disabled,
the actual width is determined by rounding the supplied width
to the nearest integer.
(If the rounding results in the value 0,
it is as if the line width were 1.)
If
.nf
| DELTA x | &gt;= | DELTA y |,
.fi
<i>i</i> pixels are filled in each column that is rasterized,
where <i>i</i> is the rounded value of <i>width</i>.
Otherwise,
<i>i</i> pixels are filled in each row that is rasterized.</p>
<p>If antialiasing is enabled,
line rasterization produces a fragment for each pixel square
that intersects the region lying within the rectangle having width
equal to the current line width,
length equal to the actual length of the line,
and centered on the mathematical line segment.
The coverage value for each fragment is the window coordinate area
of the intersection of the rectangular region with the corresponding
pixel square.
This value is saved and used in the final rasterization step. </p>
<p>Not all widths can be supported when line antialiasing is enabled. 
If an unsupported width is requested,
the nearest supported width is used.
Only width 1 is guaranteed to be supported;
others depend on the implementation.
To query the range of supported widths and the size difference between
supported widths within the range, call
<ref>glGet</ref> with arguments
<ref resolved='predef::GL.GL_LINE_WIDTH_RANGE'>GL_LINE_WIDTH_RANGE</ref> and
<ref resolved='predef::GL.GL_LINE_WIDTH_GRANULARITY'>GL_LINE_WIDTH_GRANULARITY</ref>.</p>
</text><group><param name='width'/><text><p>Specifies the width of rasterized lines.
The initial value is 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>width</i> is less than or equal to 0.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLineWidth'>
<arguments><argument name='width'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glListBase'><doc><text><p><ref>glCallLists</ref> specifies an array of offsets.
Display-list names are generated by adding <i>base</i> to each offset.
Names that reference valid display lists are executed;
the others are ignored.</p>
</text><group><param name='base'/><text><p>Specifies an integer offset that will be added to <ref>glCallLists</ref>
offsets to generate display-list names.
The initial value is 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glListBase'>glListBase</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glListBase'>
<arguments><argument name='base'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLoadMatrix'><doc><text><p><ref resolved='predef::GL.glLoadMatrix'>glLoadMatrix</ref> replaces the current matrix with the one whose elements are specified by
<i>m</i>.
The current matrix is the projection matrix,
modelview matrix,
or texture matrix,
depending on the current matrix mode
(see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>).</p>
<p>The current matrix, M,  defines a transformation of coordinates.
For instance, assume M refers to the modelview matrix.
If  v ~=~ (v[0], v[1], v[2], v[3]) is the set of object coordinates
of a vertex,
and <i>m</i> points to an array of 16 
single- or double-precision
floating-point values m[0], m[1],. . .,m[15],
then the modelview transformation M(v) does the following:</p>
<p>.ce
.EQ
down 130
{M(v)  ~ = ~ 
{{ left (  matrix {
   ccol { ~m[0] above m[1] above m[2] above m[3] ~}
   ccol { ~m[4] above m[5] above m[6] above m[7] ~}
   ccol { ~m[8] above m[9] above m[10] above m[11] ~}
   ccol { ~m[12]~ above m[13]~ above m[14]~ above m[15]~}
} right ) } ~~ times ~~
{left ( matrix {
ccol { ~v[0]~ above ~v[1]~ above ~v[2]~ above ~v[3]~ }
} right )} }}
.EN</p>
<p>.sp</p>
<p>Where 'times' denotes matrix multiplication.</p>
<p>Projection and texture transformations are similarly defined.</p>
</text><group><param name='m'/><text><p>Specifies a pointer to 16 consecutive values, which are used as the
elements of a 4 times 4 column-major matrix.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLoadMatrix'>glLoadMatrix</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLoadMatrix'>
<arguments><argument name='m'><type><array><valuetype><array><valuetype><or><float/><int/></or></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLoadName'><doc><text><p>The name stack is used during selection mode to allow sets of rendering
commands to be uniquely identified.
It consists of an ordered set of unsigned integers.
<ref resolved='predef::GL.glLoadName'>glLoadName</ref> causes <i>name</i> to replace the value on the top of the name stack,
which is initially empty.</p>
<p>The name stack is always empty while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>.
Calls to <ref resolved='predef::GL.glLoadName'>glLoadName</ref> while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> are ignored.</p>
</text><group><param name='name'/><text><p>Specifies a name that will replace the top value on the name stack.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLoadName'>glLoadName</ref> is called while the
name stack is empty.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLoadName'>glLoadName</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLoadName'>
<arguments><argument name='name'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glMaterial'><doc><text><p><ref resolved='predef::GL.glMaterial'>glMaterial</ref> assigns values to material parameters.
There are two matched sets of material parameters.
One,
the <i>front-facing</i> set,
is used to shade points,
lines,
bitmaps,
and all polygons
(when two-sided lighting is disabled),
or just front-facing polygons
(when two-sided lighting is enabled).
The other set,
<i>back-facing</i>,
is used to shade back-facing polygons only when two-sided lighting is enabled.
Refer to the <ref resolved='predef::GL.glLightModel'>glLightModel</ref> reference page for details concerning one- and
two-sided lighting calculations.</p>
<p><ref resolved='predef::GL.glMaterial'>glMaterial</ref> takes three arguments.
The first,
<i>face</i>,
specifies whether the
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref> materials, the
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref> materials, or both
<ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref> materials will be modified.
The second,
<i>pname</i>,
specifies which of several parameters in one or both sets will be modified.
The third,
<i>params</i>,
specifies what value or values will be assigned to the specified parameter.</p>
<p>Material parameters are used in the lighting equation that is optionally
applied to each vertex.
The equation is discussed in the <ref resolved='predef::GL.glLightModel'>glLightModel</ref> reference page.
The parameters that can be specified using <ref resolved='predef::GL.glMaterial'>glMaterial</ref>,
and their interpretations by the lighting equation, are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the ambient RGBA reflectance of the material.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial ambient reflectance for both front- and back-facing materials
is (0.2, 0.2, 0.2, 1.0).
</c></r>
<r><c><ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the diffuse RGBA reflectance of the material.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial diffuse reflectance for both front- and back-facing materials
is (0.8, 0.8, 0.8, 1.0).
</c></r>
<r><c><ref resolved='predef::GL.GL_SPECULAR'>GL_SPECULAR</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the specular RGBA reflectance of the material.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial specular reflectance for both front- and back-facing materials
is (0, 0, 0, 1).
</c></r>
<r><c><ref resolved='predef::GL.GL_EMISSION'>GL_EMISSION</ref>
</c><c><i>params</i> contains four integer or floating-point values that specify
the RGBA emitted light intensity of the material.
Integer values are mapped linearly such that the most positive representable
value maps to 1.0,
and the most negative representable value maps to -1.0.
Floating-point values are mapped directly.
Neither integer nor floating-point values are clamped.
The initial emission intensity for both front- and back-facing materials
is (0, 0, 0, 1).
</c></r>
<r><c><ref resolved='predef::GL.GL_SHININESS'>GL_SHININESS</ref>
</c><c><i>params</i> is a single integer or floating-point value that specifies
the RGBA specular exponent of the material.
Integer and floating-point values are mapped directly.
Only values in the range [0,128] are accepted.
The initial specular exponent for both front- and back-facing materials
is 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_AMBIENT_AND_DIFFUSE'>GL_AMBIENT_AND_DIFFUSE</ref>
</c><c>Equivalent to calling <ref resolved='predef::GL.glMaterial'>glMaterial</ref> twice with the same parameter values,
once with <ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref> and once with <ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_COLOR_INDEXES'>GL_COLOR_INDEXES</ref>
</c><c><i>params</i> contains three integer or floating-point values specifying
the color indices for ambient,
diffuse,
and specular lighting.
These three values,
and <ref resolved='predef::GL.GL_SHININESS'>GL_SHININESS</ref>,
are the only material values used by the color index mode lighting equation.
Refer to the <ref resolved='predef::GL.glLightModel'>glLightModel</ref> reference page for a discussion 
of color index lighting.
</c></r></matrix></p>
</text><group><param name='face'/><text><p>Specifies which face or faces are being updated.
Must be one of
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>, or
<ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the single-valued material parameter of the face or faces
that is being updated.
Must be <ref resolved='predef::GL.GL_SHININESS'>GL_SHININESS</ref>.</p>
</text></group><group><param name='param'/><text><p>Specifies the value that parameter <ref resolved='predef::GL.GL_SHININESS'>GL_SHININESS</ref> will be set to.</p>
</text></group><group><param name='face'/><text><p>Specifies which face or faces are being updated.
Must be one of
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>, or
<ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the material parameter of the face or faces that is being updated.
Must be one of
<ref resolved='predef::GL.GL_AMBIENT'>GL_AMBIENT</ref>,
<ref resolved='predef::GL.GL_DIFFUSE'>GL_DIFFUSE</ref>,
<ref resolved='predef::GL.GL_SPECULAR'>GL_SPECULAR</ref>,
<ref resolved='predef::GL.GL_EMISSION'>GL_EMISSION</ref>,
<ref resolved='predef::GL.GL_SHININESS'>GL_SHININESS</ref>,
<ref resolved='predef::GL.GL_AMBIENT_AND_DIFFUSE'>GL_AMBIENT_AND_DIFFUSE</ref>,  or
<ref resolved='predef::GL.GL_COLOR_INDEXES'>GL_COLOR_INDEXES</ref>.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to the value or values that <i>pname</i> will be set to.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if either <i>face</i> or <i>pname</i> is not
an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if a specular exponent outside the range
[0,128] is specified.</p>
</text></group></doc>
<method name='glMaterial'>
<arguments><argument name='face'><type><int/></type></argument><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glMultMatrix'><doc><text><p><ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref> multiplies the current matrix with the one specified using <i>m</i>, and
replaces the current matrix with the product.</p>
<p>The current matrix is determined by the current matrix mode (see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>). It is either the projection matrix,
modelview matrix,
or the texture matrix.</p>
</text><group><param name='m'/><text><p>Points to 16 consecutive values that are used as the elements of 
a 4 times 4 column-major matrix.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glMultMatrix'>
<arguments><argument name='m'><type><array><valuetype><array><valuetype><or><float/><int/></or></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glNewList'><doc><text><p>Display lists are groups of GL commands that have been stored
for subsequent execution.
Display lists are created with <ref resolved='predef::GL.glNewList'>glNewList</ref>.
All subsequent commands are placed in the display list,
in the order issued,
until <ref resolved='predef::GL.glEndList'>glEndList</ref> is called. </p>
<p><ref resolved='predef::GL.glNewList'>glNewList</ref> has two arguments.
The first argument,
<i>list</i>,
is a positive integer that becomes the unique name for the display list.
Names can be created and reserved with <ref resolved='predef::GL.glGenLists'>glGenLists</ref>
and tested for uniqueness with <ref resolved='predef::GL.glIsList'>glIsList</ref>.
The second argument,
<i>mode</i>,
is a symbolic constant that can assume one of two values: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COMPILE'>GL_COMPILE</ref>
</c><c>Commands are merely compiled.
</c></r>
<r><c><ref resolved='predef::GL.GL_COMPILE_AND_EXECUTE'>GL_COMPILE_AND_EXECUTE</ref>
</c><c>Commands are executed as they are compiled into the display list.
</c></r>
</matrix></p>
<p>Certain commands are not compiled into the display list
but are executed immediately,
regardless of the display-list mode.
These commands are
<ref>glColorPointer</ref>,
<ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref>,
<ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>,
<ref>glEdgeFlagPointer</ref>,
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>,
<ref>glFeedbackBuffer</ref>,
<ref resolved='predef::GL.glFinish'>glFinish</ref>,
<ref resolved='predef::GL.glFlush'>glFlush</ref>,
<ref resolved='predef::GL.glGenLists'>glGenLists</ref>,
<ref>glIndexPointer</ref>,
<ref>glInterleavedArrays</ref>,
<ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>,
<ref resolved='predef::GL.glIsList'>glIsList</ref>,
<ref>glNormalPointer</ref>,
<ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref>,
<ref>glPixelStore</ref>,
<ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref>,
<ref>glReadPixels</ref>,
<ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>,
<ref>glSelectBuffer</ref>,
<ref>glTexCoordPointer</ref>,
<ref>glVertexPointer</ref>,
and all of the <ref>glGet</ref> commands.</p>
<p>Similarly, 
<ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref> 
are executed immediately and not compiled into the display list when their
first argument is <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref> or
<ref resolved='predef::GL.GL_PROXY_TEXTURE_1D'>GL_PROXY_TEXTURE_1D</ref>, respectively.</p>
<p>When <ref resolved='predef::GL.glEndList'>glEndList</ref> is encountered,
the display-list definition is completed by associating the list
with the unique name <i>list</i>
(specified in the <ref resolved='predef::GL.glNewList'>glNewList</ref> command). 
If a display list with name <i>list</i> already exists,
it is replaced only when <ref resolved='predef::GL.glEndList'>glEndList</ref> is called.</p>
</text><group><param name='list'/><text><p>Specifies the display-list name.</p>
</text></group><group><param name='mode'/><text><p>Specifies the compilation mode,
which can be
<ref resolved='predef::GL.GL_COMPILE'>GL_COMPILE</ref> or
<ref resolved='predef::GL.GL_COMPILE_AND_EXECUTE'>GL_COMPILE_AND_EXECUTE</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>list</i> is 0.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEndList'>glEndList</ref> is called
without a preceding <ref resolved='predef::GL.glNewList'>glNewList</ref>, 
or if <ref resolved='predef::GL.glNewList'>glNewList</ref> is called while a display list is being defined.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glNewList'>glNewList</ref> or <ref resolved='predef::GL.glEndList'>glEndList</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p><ref resolved='predef::GL.GL_OUT_OF_MEMORY'>GL_OUT_OF_MEMORY</ref> is generated if there is insufficient memory to
compile the display list. If the GL version is 1.1 or greater, no
change is made to the previous contents of the display list, if any,
and no other change is made to the GL state. (It is as if no attempt
had been made to create the new display list.)</p>
</text></group></doc>
<method name='glNewList'>
<arguments><argument name='list'><type><int/></type></argument><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glNormal'><doc><text><p>The current normal is set to the given coordinates
whenever <ref resolved='predef::GL.glNormal'>glNormal</ref> is issued.
Byte, short, or integer arguments are converted to floating-point
format with a linear mapping that maps the most positive representable integer
value to 1.0,
and the most negative representable integer value to -1.0.</p>
<p>Normals specified with <ref resolved='predef::GL.glNormal'>glNormal</ref> need not have unit length.
If normalization is enabled,
then normals specified with <ref resolved='predef::GL.glNormal'>glNormal</ref> are normalized after transformation.
To enable and disable normalization, call <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
with the argument <ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref>.
Normalization is initially disabled.</p>
</text><group><param name='nx'/><text><p>Specify the x, y, and z coordinates of the new current normal.
The initial value of the current normal is the unit vector, (0, 0, 1).</p>
</text></group><group><param name='v'/><text><p>Specifies a pointer to an array of three elements:
the x, y, and z coordinates of the new current normal.</p>
</text></group></doc>
<method name='glNormal'>
<arguments><argument name='nx'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='ny'><type><or><float/><int/><void/></or></type></argument><argument name='nz'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glOrtho'><doc><text><p><ref resolved='predef::GL.glOrtho'>glOrtho</ref> describes a transformation that produces a parallel projection.
The current matrix (see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>) is multiplied by this matrix
and the result replaces the current matrix, as if
<ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref> were called with the following matrix
as its argument:
.sp
.ce
.EQ
left (  matrix {
   ccol { {2 over {"right" - "left"}} above 0 above 0 above 0 }
   ccol { 0 above {2 over {"top" - "bottom"}} above 0 above 0 }
   ccol { 0 above 0 above {-2 over {"zFar" - "zNear"}}  above 0 }
   ccol { {t sub x}~ above {t sub y}~ above {t sub z}~ above 1~ }
} right )
.EN</p>
<p>where
.ce
.EQ
t sub x ~=~ -{{"right" + "left"} over {"right" - "left"}}
.EN</p>
<p>.ce
.EQ
t sub y ~=~ -{{"top" + "bottom"} over {"top" - "bottom"}}
.EN</p>
<p>.ce
.EQ
t sub z ~=~ -{{"zFar" + "zNear"} over {"zFar" - "zNear"}}
.EN</p>
<p>.RE</p>
<p>Typically, the matrix mode is <ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>, and 
(<i>left</i>, <i>bottom</i>,  -<i>zNear</i>) and (<i>right</i>, <i>top</i>,  -<i>zNear</i>)
specify the points on the near clipping plane that are mapped
to the lower left and upper right corners of the window,
respectively,
assuming that the eye is located at (0, 0, 0).
-<i>zFar</i> specifies the location of the far clipping plane.
Both <i>zNear</i> and <i>zFar</i> can be either positive or negative.</p>
<p>Use <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to save and restore
the current matrix stack.</p>
</text><group><param name='left'/><text><p>Specify the coordinates for the left and right vertical clipping planes.</p>
</text></group><group><param name='bottom'/><text><p>Specify the coordinates for the bottom and top horizontal clipping planes.</p>
</text></group><group><param name='zNear'/><text><p>Specify the distances to the nearer and farther depth clipping planes.
These values are negative if the plane is to be behind the viewer.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glOrtho'>glOrtho</ref>
is executed between the execution of 
<ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glOrtho'>
<arguments><argument name='left'><type><float/></type></argument><argument name='right'><type><float/></type></argument><argument name='bottom'><type><float/></type></argument><argument name='top'><type><float/></type></argument><argument name='zNear'><type><float/></type></argument><argument name='zFar'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPassThrough'><doc><text><p>Feedback is a GL render mode.
The mode is selected by calling
<ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> with <ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref>.
When the GL is in feedback mode,
no pixels are produced by rasterization.
Instead,
information about primitives that would have been rasterized
is fed back to the application using the GL.
See the <ref>glFeedbackBuffer</ref> reference page for a description of the
feedback buffer and the values in it.  </p>
<p><ref resolved='predef::GL.glPassThrough'>glPassThrough</ref> inserts a user-defined marker in the feedback buffer
when it is executed in feedback mode.  
<i>token</i> is returned as if it were a primitive;
it is indicated with its own unique identifying value:
<ref resolved='predef::GL.GL_PASS_THROUGH_TOKEN'>GL_PASS_THROUGH_TOKEN</ref>.
The order of <ref resolved='predef::GL.glPassThrough'>glPassThrough</ref> commands with respect to the specification
of graphics primitives is maintained.</p>
</text><group><param name='token'/><text><p>Specifies a marker value to be placed in the feedback buffer
following a <ref resolved='predef::GL.GL_PASS_THROUGH_TOKEN'>GL_PASS_THROUGH_TOKEN</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPassThrough'>glPassThrough</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPassThrough'>
<arguments><argument name='token'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPixelZoom'><doc><text><p><ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref> specifies values for the x and y zoom factors.
During the execution of <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref> or <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>,
if (xr , yr ) is the current raster position,
and a given element is in the mth row and nth column of the pixel rectangle,
then pixels whose centers are in the rectangle with corners at 
.sp
.ce
(xr ~+~ n cdot "xfactor", yr ~+~ m cdot "yfactor") 
.sp
.ce
(xr ~+~ (n+1) cdot "xfactor", yr ~+~ (m+1) cdot "yfactor")
.sp
are candidates for replacement.
Any pixel whose center lies on the bottom or left edge of this rectangular
region is also modified.</p>
<p>Pixel zoom factors are not limited to positive values.
Negative zoom factors reflect the resulting image about the current
raster position.</p>
</text><group><param name='xfactor'/><text><p>Specify the x and y zoom factors for pixel write operations.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPixelZoom'>
<arguments><argument name='xfactor'><type><float/></type></argument><argument name='yfactor'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPointSize'><doc><text><p><ref resolved='predef::GL.glPointSize'>glPointSize</ref> specifies the rasterized diameter of both aliased and antialiased
points.
Using a point size other than 1 has different effects,
depending on whether point antialiasing is enabled.
To enable and disable point antialiasing, call 
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
with argument <ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref>. Point antialiasing is initially disabled.</p>
<p>If point antialiasing is disabled,
the actual size is determined by rounding the supplied size
to the nearest integer.
(If the rounding results in the value 0,
it is as if the point size were 1.)
If the rounded size is odd,
then the center point
( x ,  y )
of the pixel fragment that represents the point is computed as
.sp
.ce
(  \(lf ~ x sub w ~ \(rf ~+~ .5 ,  \(lf ~ y sub w ~ \(rf ~+~ .5 )
.sp
where w subscripts indicate window coordinates.
All pixels that lie within the square grid of the rounded size centered at
( x ,  y )
make up the fragment.
If the size is even,
the center point is
.sp
.ce
(  \(lf ~ x sub w ~+~ .5 ~ \(rf,  \(lf ~ y sub w ~+~ .5 ~ \(rf )
.sp
and the rasterized fragment's centers are the half-integer window coordinates
within the square of the rounded size centered at
( x ,  y ).
All pixel fragments produced in rasterizing a nonantialiased point are
assigned the same associated data,
that of the vertex corresponding to the point.</p>
<p>If antialiasing is enabled,
then point rasterization produces a fragment for each pixel square
that intersects the region lying within the circle having diameter
equal to the current point size and centered at the point's
( x sub w ,  y sub w ).
The coverage value for each fragment is the window coordinate area
of the intersection of the circular region with the corresponding pixel square.
This value is saved and used in the final rasterization step. 
The data associated with each fragment is the data associated with 
the point being rasterized.</p>
<p>Not all sizes are supported when point antialiasing is enabled. 
If an unsupported size is requested,
the nearest supported size is used.
Only size 1 is guaranteed to be supported;
others depend on the implementation.
To query the range of supported sizes and the size difference between
supported sizes within the range, call
<ref>glGet</ref> with arguments
<ref resolved='predef::GL.GL_POINT_SIZE_RANGE'>GL_POINT_SIZE_RANGE</ref> and
<ref resolved='predef::GL.GL_POINT_SIZE_GRANULARITY'>GL_POINT_SIZE_GRANULARITY</ref>.</p>
</text><group><param name='size'/><text><p>Specifies the diameter of rasterized points.
The initial value is 1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>size</i> is less than or equal to 0.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPointSize'>glPointSize</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPointSize'>
<arguments><argument name='size'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPolygonMode'><doc><text><p><ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref> controls the interpretation of polygons for rasterization.
<i>face</i> describes which polygons <i>mode</i> applies to:
front-facing polygons (<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>),
back-facing polygons (<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>),
or both (<ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>).
The polygon mode affects only the final rasterization of polygons.
In particular,
a polygon's vertices are lit and
the polygon is clipped and possibly culled before these modes are applied.</p>
<p>Three modes are defined and can be specified in <i>mode</i>:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_POINT'>GL_POINT</ref>
</c><c>Polygon vertices that are marked as the start of a boundary edge
are drawn as points.
Point attributes such as
<ref resolved='predef::GL.GL_POINT_SIZE'>GL_POINT_SIZE</ref> and
<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref> control
the rasterization of the points.
Polygon rasterization attributes other than <ref resolved='predef::GL.GL_POLYGON_MODE'>GL_POLYGON_MODE</ref> have no effect.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE'>GL_LINE</ref>
</c><c>Boundary edges of the polygon are drawn as line segments.
They are treated as connected line segments for line stippling;
the line stipple counter and pattern are not reset between segments
(see <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>).
Line attributes such as
<ref resolved='predef::GL.GL_LINE_WIDTH'>GL_LINE_WIDTH</ref> and
<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref> control
the rasterization of the lines.
Polygon rasterization attributes other than <ref resolved='predef::GL.GL_POLYGON_MODE'>GL_POLYGON_MODE</ref> have no effect.
</c></r>
<r><c><ref resolved='predef::GL.GL_FILL'>GL_FILL</ref>
</c><c>The interior of the polygon is filled.
Polygon attributes such as
<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref> and
<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref> control the rasterization of the polygon.
</c></r></matrix></p>
</text><group><param name='face'/><text><p>Specifies the polygons that <i>mode</i> applies to.
Must be
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref> for front-facing polygons,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref> for back-facing polygons,
or <ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref> for front- and back-facing polygons.</p>
</text></group><group><param name='mode'/><text><p>Specifies how polygons will be rasterized.
Accepted values are
<ref resolved='predef::GL.GL_POINT'>GL_POINT</ref>,
<ref resolved='predef::GL.GL_LINE'>GL_LINE</ref>, and
<ref resolved='predef::GL.GL_FILL'>GL_FILL</ref>.
The initial value is <ref resolved='predef::GL.GL_FILL'>GL_FILL</ref> for both front- and back-facing polygons.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if either <i>face</i> or <i>mode</i> is not
an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPolygonMode'>
<arguments><argument name='face'><type><int/></type></argument><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPolygonOffset'><doc><text><p>When <ref>GL_POLYGON_OFFSET</ref> is enabled, each
fragment's <i>depth</i> value will be offset after it is interpolated
from the <i>depth</i> values of the appropriate vertices.
The value of the offset is "factor" ~*~ DZ ~~+~~ r ~*~ "units",
where DZ~ is a measurement of the change in depth relative to the screen 
area of the polygon, and r is the smallest value that is guaranteed to
produce a resolvable offset for a given implementation.
The offset is added before the depth test is performed and before
the value is written into the depth buffer.</p>
<p><ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref> is useful for rendering hidden-line images, for applying decals 
to surfaces, and for rendering solids with highlighted edges.</p>
</text><group><param name='factor'/><text><p>Specifies a scale factor that is used to create a variable
depth offset for each polygon. The initial value is 0.</p>
</text></group><group><param name='units'/><text><p>Is multiplied by an implementation-specific value to
create a constant depth offset. The initial value is 0.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPolygonOffset'>
<arguments><argument name='factor'><type><float/></type></argument><argument name='units'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPushAttrib'><doc><text><p><ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> takes one argument,
a mask that indicates which groups of state variables
to save on the attribute stack.
Symbolic constants are used to set bits in the mask.
<i>mask</i>
is typically constructed by ORing several of these constants together.
The special mask
<ref resolved='predef::GL.GL_ALL_ATTRIB_BITS'>GL_ALL_ATTRIB_BITS</ref>
can be used to save all stackable states.</p>
<p>The symbolic mask constants and their associated GL state are as follows
(the second column lists which attributes are saved):</p>
<p>.TS
;
l l .
<ref resolved='predef::GL.GL_ACCUM_BUFFER_BIT'>GL_ACCUM_BUFFER_BIT</ref>	Accumulation buffer clear value</p>
<p><ref resolved='predef::GL.GL_COLOR_BUFFER_BIT'>GL_COLOR_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref> enable bit
	Alpha test function and reference value
	<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref> enable bit
	Blending source and destination functions
	Constant blend color
	Blending equation
	<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> enable bit
	<ref resolved='predef::GL.GL_DRAW_BUFFER'>GL_DRAW_BUFFER</ref> setting
	<ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref> enable bit
	<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref> enable bit
	Logic op function
	Color mode and index mode clear values
	Color mode and index mode writemasks</p>
<p><ref resolved='predef::GL.GL_CURRENT_BIT'>GL_CURRENT_BIT</ref>	Current RGBA color
	Current color index
	Current normal vector
	Current texture coordinates
	Current raster position
	<ref resolved='predef::GL.GL_CURRENT_RASTER_POSITION_VALID'>GL_CURRENT_RASTER_POSITION_VALID</ref> flag
	RGBA color associated with current raster position
	Color index associated with current raster position
	Texture coordinates associated with current raster position
	<ref resolved='predef::GL.GL_EDGE_FLAG'>GL_EDGE_FLAG</ref> flag</p>
<p><ref resolved='predef::GL.GL_DEPTH_BUFFER_BIT'>GL_DEPTH_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref> enable bit
	Depth buffer test function
	Depth buffer clear value
	<ref resolved='predef::GL.GL_DEPTH_WRITEMASK'>GL_DEPTH_WRITEMASK</ref> enable bit</p>
<p><ref resolved='predef::GL.GL_ENABLE_BIT'>GL_ENABLE_BIT</ref>	<ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref> flag
	<ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref> flag
	<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref> flag
	Enable bits for the user-definable clipping planes
	<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>
	<ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref> flag
	<ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref> flag
	<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> flag
	<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref> flag
	<ref>GL_LIGHT</ref><i>i</i> where 0\ &lt;= <i>i</i>&lt;<ref resolved='predef::GL.GL_MAX_LIGHTS'>GL_MAX_LIGHTS</ref>
	<ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref> flag
	<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref> flag
	<ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref> flag
	<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref> flag
	<ref>GL_MAP1_</ref><i>x</i> where <i>x</i> is a map type
	<ref>GL_MAP2_</ref><i>x</i> where <i>x</i> is a map type
	<ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref> flag
	<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref> flag
	<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref> flag
	<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref> flag
	<ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> flag
	<ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref> flag
	Flags <ref>GL_TEXTURE_GEN_</ref><i>x</i> where <i>x</i> is S, T, R, or Q </p>
<p><ref resolved='predef::GL.GL_EVAL_BIT'>GL_EVAL_BIT</ref>	<ref>GL_MAP1_</ref><i>x</i> enable bits, where <i>x</i> is a map type
	<ref>GL_MAP2_</ref><i>x</i> enable bits, where <i>x</i> is a map type
	1D grid endpoints and divisions
	2D grid endpoints and divisions
	<ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref> enable bit</p>
<p><ref resolved='predef::GL.GL_FOG_BIT'>GL_FOG_BIT</ref>	<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref> enable bit
	Fog color
	Fog density
	Linear fog start
	Linear fog end
	Fog index
	<ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref> value</p>
<p><ref resolved='predef::GL.GL_HINT_BIT'>GL_HINT_BIT</ref>	<ref resolved='predef::GL.GL_PERSPECTIVE_CORRECTION_HINT'>GL_PERSPECTIVE_CORRECTION_HINT</ref> setting
	<ref resolved='predef::GL.GL_POINT_SMOOTH_HINT'>GL_POINT_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_LINE_SMOOTH_HINT'>GL_LINE_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH_HINT'>GL_POLYGON_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_FOG_HINT'>GL_FOG_HINT</ref> setting</p>
<p><ref resolved='predef::GL.GL_LIGHTING_BIT'>GL_LIGHTING_BIT</ref>	<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref> enable bit
	<ref resolved='predef::GL.GL_COLOR_MATERIAL_FACE'>GL_COLOR_MATERIAL_FACE</ref> value
	Color material parameters that are tracking the current color
	Ambient scene color
	<ref resolved='predef::GL.GL_LIGHT_MODEL_LOCAL_VIEWER'>GL_LIGHT_MODEL_LOCAL_VIEWER</ref> value
	<ref resolved='predef::GL.GL_LIGHT_MODEL_TWO_SIDE'>GL_LIGHT_MODEL_TWO_SIDE</ref> setting
	<ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref> enable bit
	Enable bit for each light
	Ambient, diffuse, and specular intensity for each light
	Direction, position, exponent, and cutoff angle for each light
	Constant, linear, and quadratic attenuation factors for each light
	Ambient, diffuse, specular, and emissive color for each material
	Ambient, diffuse, and specular color indices for each material
	Specular exponent for each material
	<ref resolved='predef::GL.GL_SHADE_MODEL'>GL_SHADE_MODEL</ref> setting</p>
<p><ref resolved='predef::GL.GL_LINE_BIT'>GL_LINE_BIT</ref>	<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref> enable bit
	Line stipple pattern and repeat counter
	Line width</p>
<p><ref resolved='predef::GL.GL_LIST_BIT'>GL_LIST_BIT</ref>	<ref resolved='predef::GL.GL_LIST_BASE'>GL_LIST_BASE</ref> setting</p>
<p><ref resolved='predef::GL.GL_PIXEL_MODE_BIT'>GL_PIXEL_MODE_BIT</ref>	<ref resolved='predef::GL.GL_RED_BIAS'>GL_RED_BIAS</ref> and <ref resolved='predef::GL.GL_RED_SCALE'>GL_RED_SCALE</ref> settings
	<ref resolved='predef::GL.GL_GREEN_BIAS'>GL_GREEN_BIAS</ref> and <ref resolved='predef::GL.GL_GREEN_SCALE'>GL_GREEN_SCALE</ref> values
	<ref resolved='predef::GL.GL_BLUE_BIAS'>GL_BLUE_BIAS</ref> and <ref resolved='predef::GL.GL_BLUE_SCALE'>GL_BLUE_SCALE</ref>
	<ref resolved='predef::GL.GL_ALPHA_BIAS'>GL_ALPHA_BIAS</ref> and <ref resolved='predef::GL.GL_ALPHA_SCALE'>GL_ALPHA_SCALE</ref>
	<ref resolved='predef::GL.GL_DEPTH_BIAS'>GL_DEPTH_BIAS</ref> and <ref resolved='predef::GL.GL_DEPTH_SCALE'>GL_DEPTH_SCALE</ref>
	<ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref> and <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> values
	<ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> and <ref resolved='predef::GL.GL_MAP_STENCIL'>GL_MAP_STENCIL</ref> flags
	<ref resolved='predef::GL.GL_ZOOM_X'>GL_ZOOM_X</ref> and <ref resolved='predef::GL.GL_ZOOM_Y'>GL_ZOOM_Y</ref> factors
	<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> setting</p>
<p><ref resolved='predef::GL.GL_POINT_BIT'>GL_POINT_BIT</ref>	<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref> flag
	Point size</p>
<p><ref resolved='predef::GL.GL_POLYGON_BIT'>GL_POLYGON_BIT</ref>	<ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref> enable bit
	<ref resolved='predef::GL.GL_CULL_FACE_MODE'>GL_CULL_FACE_MODE</ref> value
	<ref resolved='predef::GL.GL_FRONT_FACE'>GL_FRONT_FACE</ref> indicator
	<ref resolved='predef::GL.GL_POLYGON_MODE'>GL_POLYGON_MODE</ref> setting
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref> enable bit
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FACTOR'>GL_POLYGON_OFFSET_FACTOR</ref>
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_UNITS'>GL_POLYGON_OFFSET_UNITS</ref></p>
<p><ref resolved='predef::GL.GL_POLYGON_STIPPLE_BIT'>GL_POLYGON_STIPPLE_BIT</ref>	Polygon stipple image</p>
<p><ref resolved='predef::GL.GL_SCISSOR_BIT'>GL_SCISSOR_BIT</ref>	<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref> flag
	Scissor box</p>
<p><ref resolved='predef::GL.GL_STENCIL_BUFFER_BIT'>GL_STENCIL_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref> enable bit
	Stencil function and reference value
	Stencil value mask
	Stencil fail, pass, and depth buffer pass actions
	Stencil buffer clear value
	Stencil buffer writemask</p>
<p><ref resolved='predef::GL.GL_TEXTURE_BIT'>GL_TEXTURE_BIT</ref>	Enable bits for the four texture coordinates
	Border color for each texture image
	Minification function for each texture image
	Magnification function for each texture image
	Texture coordinates and wrap mode for each texture image
	Color and mode for each texture environment
	Enable bits <ref>GL_TEXTURE_GEN_</ref><i>x</i>, <i>x</i> is S, T, R, and Q 
	<ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref> setting for S, T, R, and Q
	<ref resolved='predef::GL.glTexGen'>glTexGen</ref> plane equations for S, T, R, and Q
	Current texture bindings (for example, <ref>GL_TEXTURE_2D_BINDING</ref>)</p>
<p><ref resolved='predef::GL.GL_TRANSFORM_BIT'>GL_TRANSFORM_BIT</ref>	Coefficients of the six clipping planes
	Enable bits for the user-definable clipping planes
	<ref resolved='predef::GL.GL_MATRIX_MODE'>GL_MATRIX_MODE</ref> value
	<ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref> flag</p>
<p><ref resolved='predef::GL.GL_VIEWPORT_BIT'>GL_VIEWPORT_BIT</ref>	Depth range (near and far)
	Viewport origin and extent
.TE</p>
<p><ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> restores the values of the state variables saved with the last</p>
<p><ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> command.
Those not saved are left unchanged.</p>
<p>It is an error to push attributes onto a full stack,
or to pop attributes off an empty stack.
In either case, the error flag is set
and no other change is made to GL state.</p>
<p>Initially, the attribute stack is empty.</p>
</text><group><param name='mask'/><text><p>Specifies a mask that indicates which attributes to save. Values for
<i>mask</i> are listed below.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> is called while
the attribute stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> is called while
the attribute stack is empty.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> or <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPushAttrib'>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPushClientAttrib'><doc><text><p><ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> takes one argument,
a mask that indicates which groups of client-state variables
to save on the client attribute stack. 
Symbolic constants are used to set bits in the mask.
<i>mask</i>
is typically constructed by OR'ing several of these constants together.
The special mask
<ref resolved='predef::GL.GL_CLIENT_ALL_ATTRIB_BITS'>GL_CLIENT_ALL_ATTRIB_BITS</ref>
can be used to save all stackable client state.</p>
<p>The symbolic mask constants and their associated GL client state are as follows
(the second column lists which attributes are saved):</p>
<p><ref resolved='predef::GL.GL_CLIENT_PIXEL_STORE_BIT'>GL_CLIENT_PIXEL_STORE_BIT</ref>	Pixel storage modes</p>
<p><ref resolved='predef::GL.GL_CLIENT_VERTEX_ARRAY_BIT'>GL_CLIENT_VERTEX_ARRAY_BIT</ref>	Vertex arrays (and enables)</p>
<p><ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> restores the values of the client-state variables 
saved with the last <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref>.
Those not saved are left unchanged.</p>
<p>It is an error to push attributes onto a full client attribute stack,
or to pop attributes off an empty stack.
In either case, the error flag is set,
and no other change is made to GL state.</p>
<p>Initially, the client attribute stack is empty.</p>
</text><group><param name='mask'/><text><p>Specifies a mask that indicates which attributes to save.  Values for
<i>mask</i> are listed below.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> is called while
the attribute stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> is called while
the attribute stack is empty.</p>
</text></group></doc>
<method name='glPushClientAttrib'>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPushName'><doc><text><p>The name stack is used during selection mode to allow sets of rendering
commands to be uniquely identified.
It consists of an ordered set of unsigned integers and is initially empty.</p>
<p><ref resolved='predef::GL.glPushName'>glPushName</ref> causes <i>name</i> to be pushed onto the name stack.
<ref resolved='predef::GL.glPopName'>glPopName</ref> pops one name off the top of the stack. </p>
<p>The maximum name stack depth is implementation-dependent; call
<ref resolved='predef::GL.GL_MAX_NAME_STACK_DEPTH'>GL_MAX_NAME_STACK_DEPTH</ref> to find out the value for a particular
implementation. It is an
error to push a name onto a full stack, 
or to pop a name off an empty stack.
It is also an error to manipulate the name stack between the execution of
<ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.
In any of these cases, the error flag is set and no other change is
made to GL state.</p>
<p>The name stack is always empty while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>.
Calls to <ref resolved='predef::GL.glPushName'>glPushName</ref> or <ref resolved='predef::GL.glPopName'>glPopName</ref> while the render mode is not
<ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> are ignored.</p>
</text><group><param name='name'/><text><p>Specifies a name that will be pushed onto the name stack.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushName'>glPushName</ref> is called while the
name stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopName'>glPopName</ref> is called while the
name stack is empty.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushName'>glPushName</ref> or <ref resolved='predef::GL.glPopName'>glPopName</ref>
is executed between a call to <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding call to
<ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPushName'>
<arguments><argument name='name'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glRasterPos'><doc><text><p>The GL maintains a 3D position in window coordinates.
This position,
called the raster position,
is used to position pixel and bitmap write operations. It is
maintained with subpixel accuracy.
See <ref>glBitmap</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>.</p>
<p>The current raster position consists of three window coordinates
(x, y, z),
a clip coordinate value (w),
an eye coordinate distance,
a valid bit,
and associated color data and texture coordinates.
The w coordinate is a clip coordinate,
because w is not projected to window coordinates.
The variable z defaults to 0 and w defaults to 1.</p>
<p>The object coordinates presented by <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref> are treated just like those
of a <ref resolved='predef::GL.glVertex'>glVertex</ref> command:
They are transformed by the current modelview and projection matrices
and passed to the clipping stage.
If the vertex is not culled,
then it is projected and scaled to window coordinates,
which become the new current raster position,
and the <ref resolved='predef::GL.GL_CURRENT_RASTER_POSITION_VALID'>GL_CURRENT_RASTER_POSITION_VALID</ref> flag is set.
If the vertex 
.I is
culled,
then the valid bit is cleared and the current raster position
and associated color and texture coordinates are undefined.</p>
<p>The current raster position also includes some associated color data
and texture coordinates.
If lighting is enabled,
then <ref resolved='predef::GL.GL_CURRENT_RASTER_COLOR'>GL_CURRENT_RASTER_COLOR</ref>
(in RGBA mode)
or <ref resolved='predef::GL.GL_CURRENT_RASTER_INDEX'>GL_CURRENT_RASTER_INDEX</ref>
(in color index mode)
is set to the color produced by the lighting calculation
(see <ref resolved='predef::GL.glLight'>glLight</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, and </p>
<p><ref resolved='predef::GL.glShadeModel'>glShadeModel</ref>).
If lighting is disabled, 
current color
(in RGBA mode, state variable <ref resolved='predef::GL.GL_CURRENT_COLOR'>GL_CURRENT_COLOR</ref>)
or color index
(in color index mode, state variable <ref resolved='predef::GL.GL_CURRENT_INDEX'>GL_CURRENT_INDEX</ref>)
is used to update the current raster color.</p>
<p>Likewise,
<ref resolved='predef::GL.GL_CURRENT_RASTER_TEXTURE_COORDS'>GL_CURRENT_RASTER_TEXTURE_COORDS</ref> is updated as a function
of <ref resolved='predef::GL.GL_CURRENT_TEXTURE_COORDS'>GL_CURRENT_TEXTURE_COORDS</ref>,
based on the texture matrix and the texture generation functions
(see <ref resolved='predef::GL.glTexGen'>glTexGen</ref>).
Finally,
the distance from the origin of the eye coordinate system to the
vertex as transformed by only the modelview matrix replaces
<ref resolved='predef::GL.GL_CURRENT_RASTER_DISTANCE'>GL_CURRENT_RASTER_DISTANCE</ref>.</p>
<p>Initially, the current raster position is (0, 0, 0, 1),
the current raster distance is 0,
the valid bit is set,
the associated RGBA color is (1, 1, 1, 1),
the associated color index is 1,
and the associated texture coordinates are (0, 0, 0, 1).
In RGBA mode,
<ref resolved='predef::GL.GL_CURRENT_RASTER_INDEX'>GL_CURRENT_RASTER_INDEX</ref> is always 1;
in color index mode,
the current raster RGBA color always maintains its initial value.</p>
</text><group><param name='x'/><text><p>Specify the x, y, z, and w object coordinates
(if present)
for the raster position.</p>
</text></group><group><param name='v'/><text><p>Specifies a pointer to an array of two,
three,
or four elements,
specifying x, y, z, and w coordinates, respectively.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glRasterPos'>
<arguments><argument name='x'><type><or><float/><int/></or></type></argument><argument name='y'><type><or><float/><int/></or></type></argument><argument name='z'><type><or><float/><int/><void/></or></type></argument><argument name='w'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='glRasterPos'>
<arguments><argument name='pos'><type><array><valuetype><or><float/><int/></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glRotate'><doc><text><p><ref resolved='predef::GL.glRotate'>glRotate</ref> produces a rotation of <i>angle</i> degrees around 
the vector ("x", "y", "z").
The current matrix (see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>) is multiplied by a rotation 
matrix with the product
replacing the current matrix, as if <ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref> were called
with the following matrix as its argument:</p>
<p>.ce
.EQ 
left ( ~ down 20 matrix {
   ccol { "x" "x" (1 - c)+ c above  "y" "x" (1 - c)+ "z" s above   "x" "z" (1 - c)-"y" s above ~0 }
   ccol {"x" "y" (1 - c)-"z" s above  "y" "y"  (1 - c)+ c above   "y" "z" (1 - c)+ "x" s above ~0 }
   ccol {  "x" "z" (1 - c)+ "y" s above  "y" "z" (1 - c)- "x" s above "z" "z" (1 - c) + c above ~0 }
   ccol { ~0 above ~0 above ~0 above ~1}
} ~~ right )
.EN</p>
<p>.sp
Where c ~=~ cos("angle"), s ~=~ sine("angle"), and 
||(~"x", "y", "z"~)|| ~=~ 1 (if not, the GL 
will normalize this vector).
.sp
.sp</p>
<p>If the matrix mode is either <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref> or <ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>,
all objects drawn after <ref resolved='predef::GL.glRotate'>glRotate</ref> is called are rotated.
Use <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to save and restore
the unrotated coordinate system.</p>
</text><group><param name='angle'/><text><p>Specifies the angle of rotation, in degrees.</p>
</text></group><group><param name='x'/><text><p>Specify the <i>x</i>, <i>y</i>, and <i>z</i> coordinates of a vector, respectively.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glRotate'>glRotate</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glRotate'>
<arguments><argument name='angle'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='x'><type><or><float/><int/><void/></or></type></argument><argument name='y'><type><or><float/><int/><void/></or></type></argument><argument name='z'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glScale'><doc><text><p><ref resolved='predef::GL.glScale'>glScale</ref> produces a nonuniform scaling along the <i>x</i>, <i>y</i>, and
<i>z</i> axes. 
The three parameters indicate the desired scale factor along
each of the three axes.</p>
<p>The current matrix
(see <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>)
is multiplied by this scale matrix,
and the product replaces the current matrix
as if <ref resolved='predef::GL.glScale'>glScale</ref> were called with the following matrix
as its argument:</p>
<p>.ce
.EQ 
left ( ~ down 20 matrix {
   ccol { ~"x" above ~0 above ~0 above ~0 }
   ccol { ~0 above ~"y" above ~0 above ~0 }
   ccol { ~0 above ~0 above ~"z" above ~0 }
   ccol { ~0 above ~0 above ~0 above ~1}
} ~~ right )
.EN
.sp
If the matrix mode is either <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref> or <ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>,
all objects drawn after <ref resolved='predef::GL.glScale'>glScale</ref> is called are scaled.</p>
<p>Use <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to save and restore
the unscaled coordinate system.</p>
</text><group><param name='x'/><text><p>Specify scale factors along the <i>x</i>, <i>y</i>, and <i>z</i> axes, respectively.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glScale'>glScale</ref>
is executed between the execution of 
<ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glScale'>
<arguments><argument name='x'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='y'><type><or><float/><int/><void/></or></type></argument><argument name='z'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glScissor'><doc><text><p><ref resolved='predef::GL.glScissor'>glScissor</ref> defines a rectangle, called the scissor box,
in window coordinates.
The first two arguments,
<i>x</i> and <i>y</i>,
specify the lower left corner of the box.
<i>width</i> and <i>height</i> specify the width and height of the box. </p>
<p>To enable and disable the scissor test, call
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument
<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref>. The test is initially disabled. 
While the test is enabled, only pixels that lie within the scissor box
can be modified by drawing commands.
Window coordinates have integer values at the shared corners of
frame buffer pixels.
\f7glScissor(0,0,1,1)\fP allows modification of only the lower left
pixel in the window, and \f7glScissor(0,0,0,0)\fP doesn't allow
modification of any pixels in the window.  </p>
<p>When the scissor test is disabled,
it is as though the scissor box includes the entire window.</p>
</text><group><param name='x'/><text><p>Specify the lower left corner of the scissor box.
Initially (0, 0).</p>
</text></group><group><param name='width'/><text><p>Specify the width and height of the scissor box.
When a GL context is first attached to a window,
<i>width</i> and <i>height</i> are set to the dimensions of that window.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if either <i>width</i> or <i>height</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glScissor'>glScissor</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glScissor'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glStencilFunc'><doc><text><p>Stenciling,
like depth-buffering,
enables and disables drawing on a per-pixel basis.
You draw into the stencil planes using GL drawing primitives,
then render geometry and images,
using the stencil planes to mask out portions of the screen.
Stenciling is typically used in multipass rendering algorithms
to achieve special effects,
such as decals,
outlining,
and constructive solid geometry rendering.</p>
<p>The stencil test conditionally eliminates a pixel based on the outcome
of a comparison between the reference value
and the value in the stencil buffer.
To enable and disable the test, call <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
with argument <ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref>.
To specify actions based on the outcome of the stencil test, call
<ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>.</p>
<p><i>func</i> is a symbolic constant that determines the stencil comparison function.
It accepts one of eight values,
shown in the following list.
<i>ref</i> is an integer reference value that is used in the stencil comparison.
It is clamped to the range [0,2 sup n - 1],
where n is the number of bitplanes in the stencil buffer.
<i>mask</i> is bitwise ANDed with both the reference value
and the stored stencil value,
with the ANDed values participating in the comparison.
.P 
If <i>stencil</i> represents the value stored in the corresponding
stencil buffer location,
the following list shows the effect of each comparison function
that can be specified by <i>func</i>.
Only if the comparison succeeds is the pixel passed through
to the next stage in the rasterization process
(see <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>).
All tests treat <i>stencil</i> values as unsigned integers in the range
[0,2 sup n - 1],
where n is the number of bitplanes in the stencil buffer.</p>
<p>The following values are accepted by <i>func</i>:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>
</c><c>Always fails.
</c></r>
<r><c><ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) &lt; ( <i>stencil</i> &amp; <i>mask</i> ). 
</c></r>
<r><c><ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) \(&lt;= ( <i>stencil</i> &amp; <i>mask</i> ).
</c></r>
<r><c><ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) &gt; ( <i>stencil</i> &amp; <i>mask</i> ).
</c></r>
<r><c><ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) \(&gt;= ( <i>stencil</i> &amp; <i>mask</i> ).
</c></r>
<r><c><ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) = ( <i>stencil</i> &amp; <i>mask</i> ).
</c></r>
<r><c><ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>
</c><c>Passes if ( <i>ref</i> &amp; <i>mask</i> ) \(!=  ( <i>stencil</i> &amp; <i>mask</i> ).
</c></r>
<r><c><ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>
</c><c>Always passes.
</c></r></matrix></p>
</text><group><param name='func'/><text><p>Specifies the test function.
Eight tokens are valid:
<ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>,
<ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>,
<ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>,
<ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref>,
<ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>,
<ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>,
<ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>, and
<ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>. The initial value is <ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>.</p>
</text></group><group><param name='ref'/><text><p>Specifies the reference value for the stencil test.
<i>ref</i> is clamped to the range [0,2 sup n - 1],
where n is the number of bitplanes in the stencil buffer. The
initial value is 0.</p>
</text></group><group><param name='mask'/><text><p>Specifies a mask that is ANDed with both the reference value
and the stored stencil value when the test is done. The initial value
is all 1's.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>func</i> is not one of the eight
accepted values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glStencilFunc'>
<arguments><argument name='func'><type><int/></type></argument><argument name='ref'><type><int/></type></argument><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glStencilMask'><doc><text><p><ref resolved='predef::GL.glStencilMask'>glStencilMask</ref> controls the writing of individual bits in the stencil planes.
The least significant n bits of <i>mask</i>,
where n is the number of bits in the stencil buffer,
specify a mask.
Where a 1 appears in the mask,
it's possible to write to the corresponding bit in the stencil buffer.
Where a 0 appears,
the corresponding bit is write-protected.
Initially, all bits are enabled for writing.</p>
</text><group><param name='mask'/><text><p>Specifies a bit mask to enable and disable writing of individual bits
in the stencil planes.
Initially, the mask is all 1's.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glStencilMask'>glStencilMask</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glStencilMask'>
<arguments><argument name='mask'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glStencilOp'><doc><text><p>Stenciling,
like depth-buffering,
enables and disables drawing on a per-pixel basis.
You draw into the stencil planes using GL drawing primitives,
then render geometry and images,
using the stencil planes to mask out portions of the screen.
Stenciling is typically used in multipass rendering algorithms
to achieve special effects,
such as decals,
outlining,
and constructive solid geometry rendering.</p>
<p>The stencil test conditionally eliminates a pixel based on the outcome
of a comparison between the value in the stencil buffer and a
reference value. To enable and disable the test, call <ref resolved='predef::GL.glEnable'>glEnable</ref>
and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument
<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref>; to control it, call <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>.</p>
<p><ref resolved='predef::GL.glStencilOp'>glStencilOp</ref> takes three arguments that indicate what happens
to the stored stencil value while stenciling is enabled.
If the stencil test fails,
no change is made to the pixel's color or depth buffers,
and <i>fail</i> specifies what happens to the stencil buffer contents.
The following six actions are possible.</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_KEEP'>GL_KEEP</ref>
</c><c>Keeps the current value.
</c></r>
<r><c><ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>
</c><c>Sets the stencil buffer value to 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_REPLACE'>GL_REPLACE</ref>
</c><c>Sets the stencil buffer value to <i>ref</i>,
as specified by <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_INCR'>GL_INCR</ref>
</c><c>Increments the current stencil buffer value.
Clamps to the maximum representable unsigned value.
</c></r>
<r><c><ref resolved='predef::GL.GL_DECR'>GL_DECR</ref>
</c><c>Decrements the current stencil buffer value.
Clamps to 0.
</c></r>
<r><c><ref resolved='predef::GL.GL_INVERT'>GL_INVERT</ref>
</c><c>Bitwise inverts the current stencil buffer value.
</c></r>
</matrix></p>
<p>Stencil buffer values are treated as unsigned integers.
When incremented and decremented,
values are clamped to 0 and 2 sup n - 1,
where n is the value returned by querying <ref resolved='predef::GL.GL_STENCIL_BITS'>GL_STENCIL_BITS</ref>.</p>
<p>The other two arguments to <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref> specify stencil buffer actions
that depend on whether subsequent depth buffer tests succeed (<i>zpass</i>)
or fail (<i>zfail</i>) (see </p>
<p><ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>).
The actions are specified using the same six symbolic constants as <i>fail</i>.
Note that <i>zfail</i> is ignored when there is no depth buffer,
or when the depth buffer is not enabled.
In these cases, <i>fail</i> and <i>zpass</i> specify stencil action when the
stencil test fails and passes,
respectively.</p>
</text><group><param name='fail'/><text><p>Specifies the action to take when the stencil test fails.
Six symbolic constants are accepted:
<ref resolved='predef::GL.GL_KEEP'>GL_KEEP</ref>,
<ref resolved='predef::GL.GL_ZERO'>GL_ZERO</ref>,
<ref resolved='predef::GL.GL_REPLACE'>GL_REPLACE</ref>,
<ref resolved='predef::GL.GL_INCR'>GL_INCR</ref>,
<ref resolved='predef::GL.GL_DECR'>GL_DECR</ref>, and
<ref resolved='predef::GL.GL_INVERT'>GL_INVERT</ref>. The initial value is <ref resolved='predef::GL.GL_KEEP'>GL_KEEP</ref>.</p>
</text></group><group><param name='zfail'/><text><p>Specifies the stencil action when the stencil test passes,
but the depth test fails.
<i>zfail</i> accepts the same symbolic constants as <i>fail</i>. The initial value
is <ref resolved='predef::GL.GL_KEEP'>GL_KEEP</ref>.</p>
</text></group><group><param name='zpass'/><text><p>Specifies the stencil action when both the stencil test and the depth
test pass, or when the stencil test passes and either there is no
depth buffer or depth testing is not enabled.
<i>zpass</i> accepts the same symbolic constants as <i>fail</i>. The initial value
is <ref resolved='predef::GL.GL_KEEP'>GL_KEEP</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>fail</i>,
<i>zfail</i>, or <i>zpass</i> is any value other than the six defined constant values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glStencilOp'>
<arguments><argument name='fail'><type><int/></type></argument><argument name='zfail'><type><int/></type></argument><argument name='zpass'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexCoord'><doc><text><p><ref resolved='predef::GL.glTexCoord'>glTexCoord</ref> specifies texture coordinates in
one,
two,
three, or
four dimensions.  
<ref>glTexCoord1</ref> sets the current texture coordinates to
(<i>s</i>, 0, 0, 1);
a call to </p>
<p><ref>glTexCoord2</ref> sets them to
(<i>s</i>, <i>t</i>, 0, 1).
Similarly, <ref>glTexCoord3</ref> specifies the texture coordinates as
(<i>s</i>, <i>t</i>, <i>r</i>, 1), and
<ref>glTexCoord4</ref> defines all four components explicitly as
(<i>s</i>, <i>t</i>, <i>r</i>, <i>q</i>). </p>
<p>The current texture coordinates are part of the data
that is associated with each vertex and with the current
raster position. 
Initially, the values for 
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i>
are (0, 0, 0, 1).</p>
</text><group><param name='s'/><text><p>Specify <i>s</i>, <i>t</i>, <i>r</i>, and <i>q</i>  texture coordinates.
Not all parameters are present in all forms of the command.</p>
</text></group><group><param name='v'/><text><p>Specifies a pointer to an array of one, two, three, or four elements,
which in turn specify the
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i> texture coordinates.</p>
</text></group></doc>
<method name='glTexCoord'>
<arguments><argument name='s'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='t'><type><or><float/><int/><void/></or></type></argument><argument name='r'><type><or><float/><int/><void/></or></type></argument><argument name='q'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexEnv'><doc><text><p>A texture environment specifies how texture values are interpreted
when a fragment is textured.
<i>target</i> must be <ref resolved='predef::GL.GL_TEXTURE_ENV'>GL_TEXTURE_ENV</ref>.
<i>pname</i> can be either <ref resolved='predef::GL.GL_TEXTURE_ENV_MODE'>GL_TEXTURE_ENV_MODE</ref> or <ref resolved='predef::GL.GL_TEXTURE_ENV_COLOR'>GL_TEXTURE_ENV_COLOR</ref>.</p>
<p>If <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_ENV_MODE'>GL_TEXTURE_ENV_MODE</ref>,
then <i>params</i> is (or points to) the symbolic name of a texture function.
Four texture functions may be specified:
<ref resolved='predef::GL.GL_MODULATE'>GL_MODULATE</ref>, 
<ref resolved='predef::GL.GL_DECAL'>GL_DECAL</ref>, 
<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>, and
<ref resolved='predef::GL.GL_REPLACE'>GL_REPLACE</ref>.</p>
<p>A texture function acts on the fragment to be textured using
the texture image value that applies to the fragment
(see <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>)
and produces an RGBA color for that fragment.
The following table shows how the RGBA color is produced for each
of the three texture functions that can be chosen.
C is a triple of color values (RGB) and A is the associated alpha value.
RGBA values extracted from a texture image are in the range [0,1].
The subscript f refers to the incoming fragment,
the subscript t to the texture image,
the subscript c to the texture environment color,
and subscript v indicates a value produced by the texture function.</p>
<p>A texture image can have up to four components per texture element
(see <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, and
<ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>). 
In a one-component image,
L sub t indicates that single component.
A two-component image uses L sub t and A sub t.
A three-component image has only a color value, C sub t.
A four-component image has both a color value C sub t
and an alpha value A sub t.</p>
<p>.ne
.TS
center box tab(:) ;
ci || ci s s s
ci || c c c c
c || c | c | c | c.
Base internal:Texture functions       
format:<ref resolved='predef::GL.GL_MODULATE'>GL_MODULATE</ref>:<ref resolved='predef::GL.GL_DECAL'>GL_DECAL</ref>:<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>:<ref resolved='predef::GL.GL_REPLACE'>GL_REPLACE</ref>
=
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>:C sub v = C sub f:undefined:C sub v =  C sub f:C sub v = C sub f
\^ :A sub v = A sub f A sub t:\^:A sub v = A sub f:A sub v = A sub t
_
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>:C sub v = L sub t C sub f:undefined:C sub v = ( 1 - L sub t ) C sub f:C sub v = L sub t
1: : :+ L sub t C sub c:
: : : : 
: A sub v = A sub f:\^: A sub v = A sub f:A sub v = A sub f
_
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>:C sub v = L sub t C sub f:undefined:C sub v = ( 1 - L sub t ) C sub f :C sub v = L sub t
\<ref>_ALPHA</ref>: : : + L sub t C sub c
2: : : :
:A sub v = A sub t A sub f:\^:A sub v = A sub t A sub f:A sub v = A sub t
_
<ref resolved='predef::GL.GL_INTENSITY'>GL_INTENSITY</ref>:C sub v = C sub f I sub t:undefined:C sub v = ( 1 - I sub t ) C sub f :C sub v = I sub t
: : :+ I sub t C sub c
: : : :
\^ :A sub v = A sub f I sub t:\^:A sub v = ( 1 - I sub t ) A sub f :A sub v = I sub t
: : :+ I sub t A sub c:
_
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>:C sub v = C sub t C sub f:C sub v = C sub t:C sub v = (1 - C sub t) C sub f :C sub v = C sub t
3: : : + C sub t C sub c
: : : :
:A sub v = A sub f:A sub v = A sub f:A sub v = A sub f:A sub v = A sub f
_
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>:C sub v = C sub t C sub f:C sub v = ( 1 - A sub t ) C sub f :C sub v = (1 - C sub t) C sub f :C sub v = C sub t
4: :+ A sub t C sub t: + C sub t C sub c
: : : :
:A sub v = A sub t A sub f:A sub v = A sub f:A sub v = A sub t A sub f:A sub v = A sub t
.TE
.sp
If <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_ENV_COLOR'>GL_TEXTURE_ENV_COLOR</ref>,
<i>params</i> is a pointer to an array that holds an RGBA color consisting of four
values.
Integer color components are interpreted linearly such that the most
positive integer maps to 1.0,
and the most negative integer maps to -1.0.
The values are clamped to the range [0,1] when they are specified.
C sub c takes these four values.</p>
<p><ref resolved='predef::GL.GL_TEXTURE_ENV_MODE'>GL_TEXTURE_ENV_MODE</ref> defaults to <ref resolved='predef::GL.GL_MODULATE'>GL_MODULATE</ref> and
<ref resolved='predef::GL.GL_TEXTURE_ENV_COLOR'>GL_TEXTURE_ENV_COLOR</ref> defaults to (0, 0, 0, 0).</p>
</text><group><param name='target'/><text><p>Specifies a texture environment.
Must be <ref resolved='predef::GL.GL_TEXTURE_ENV'>GL_TEXTURE_ENV</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of a single-valued texture environment parameter.
Must be <ref resolved='predef::GL.GL_TEXTURE_ENV_MODE'>GL_TEXTURE_ENV_MODE</ref>.</p>
</text></group><group><param name='param'/><text><p>Specifies a single symbolic constant, one of <ref resolved='predef::GL.GL_MODULATE'>GL_MODULATE</ref>, 
<ref resolved='predef::GL.GL_DECAL'>GL_DECAL</ref>, <ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>, or <ref resolved='predef::GL.GL_REPLACE'>GL_REPLACE</ref>.</p>
</text></group><group><param name='target'/><text><p>Specifies a texture environment.
Must be <ref resolved='predef::GL.GL_TEXTURE_ENV'>GL_TEXTURE_ENV</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of a texture environment parameter.
Accepted values are <ref resolved='predef::GL.GL_TEXTURE_ENV_MODE'>GL_TEXTURE_ENV_MODE</ref> and <ref resolved='predef::GL.GL_TEXTURE_ENV_COLOR'>GL_TEXTURE_ENV_COLOR</ref>.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to a parameter array that contains
either a single symbolic constant or an RGBA color.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated when <i>target</i> or <i>pname</i> is not
one of the accepted defined values,
or when <i>params</i> should have a defined constant value
(based on the value of <i>pname</i>)
and does not.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTexEnv'>
<arguments><argument name='target'><type><int/></type></argument><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexGen'><doc><text><p><ref resolved='predef::GL.glTexGen'>glTexGen</ref> selects a texture-coordinate generation function
or supplies coefficients for one of the functions.
<i>coord</i> names one of the (<i>s</i>, <i>t</i>, <i>r</i>, <i>q</i>) texture
coordinates; it must be one of the symbols
<ref resolved='predef::GL.GL_S'>GL_S</ref>,
<ref resolved='predef::GL.GL_T'>GL_T</ref>,
<ref resolved='predef::GL.GL_R'>GL_R</ref>, or
<ref resolved='predef::GL.GL_Q'>GL_Q</ref>.
<i>pname</i> must be one of three symbolic constants:
<ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>,
<ref resolved='predef::GL.GL_OBJECT_PLANE'>GL_OBJECT_PLANE</ref>, or
<ref resolved='predef::GL.GL_EYE_PLANE'>GL_EYE_PLANE</ref>. 
If <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>,
then <i>params</i> chooses a mode,
one of
<ref resolved='predef::GL.GL_OBJECT_LINEAR'>GL_OBJECT_LINEAR</ref>,
<ref resolved='predef::GL.GL_EYE_LINEAR'>GL_EYE_LINEAR</ref>, or
<ref resolved='predef::GL.GL_SPHERE_MAP'>GL_SPHERE_MAP</ref>. 
If <i>pname</i> is either <ref resolved='predef::GL.GL_OBJECT_PLANE'>GL_OBJECT_PLANE</ref> or <ref resolved='predef::GL.GL_EYE_PLANE'>GL_EYE_PLANE</ref>,
<i>params</i> contains coefficients for the corresponding
texture generation function.
.P 
If the texture generation function is <ref resolved='predef::GL.GL_OBJECT_LINEAR'>GL_OBJECT_LINEAR</ref>,
the function</p>
<p>.ce
g = p sub 1 x sub o + p sub 2 y sub o + p sub 3 z sub o + p sub 4 w sub o</p>
<p>is used, where g is the value computed for the coordinate named in <i>coord</i>,
p sub 1,
p sub 2,
p sub 3,
and
p sub 4 are the four values supplied in <i>params</i>, and
x sub o,
y sub o,
z sub o, and
w sub o are the object coordinates of the vertex.
This function can be used, for example, to texture-map terrain using sea level
as a reference plane
(defined by p sub 1, p sub 2, p sub 3, and p sub 4). 
The altitude of a terrain vertex is computed by the <ref resolved='predef::GL.GL_OBJECT_LINEAR'>GL_OBJECT_LINEAR</ref>
coordinate generation function as its distance from sea level; 
that altitude can then be used to index the texture image to map white snow
onto peaks and green grass onto foothills.</p>
<p>If the texture generation function is <ref resolved='predef::GL.GL_EYE_LINEAR'>GL_EYE_LINEAR</ref>, the function</p>
<p>.ce
g = {p sub 1} sup prime ~x sub e + {p sub 2} sup prime ~y sub e + {p sub 3} sup prime ~z sub e + {p sub 4} sup prime ~w sub e</p>
<p>is used, where </p>
<p>.ce
$( {p sub 1} sup prime
~~{p sub 2} sup prime~~{p sub 3} sup prime~~
{{p sub 4}sup prime}) = ( p sub 1~~ p sub 2~~ p sub 3~~ p sub 4 ) ~M sup -1$</p>
<p>and
x sub e,
y sub e,
z sub e, and
w sub e are the eye coordinates of the vertex,
p sub 1,
p sub 2,
p sub 3,
and
p sub 4 are the values supplied in <i>params</i>, and
M is the modelview matrix when <ref resolved='predef::GL.glTexGen'>glTexGen</ref> is invoked.
If M is poorly conditioned or singular,
texture coordinates generated by the resulting function may be inaccurate
or undefined.</p>
<p>Note that the values in <i>params</i> define a reference plane in eye coordinates. 
The modelview matrix that is applied to them may not be the same one
in effect when the polygon vertices are transformed. 
This function establishes a field of texture coordinates
that can produce dynamic contour lines on moving objects.</p>
<p>If <i>pname</i> is <ref resolved='predef::GL.GL_SPHERE_MAP'>GL_SPHERE_MAP</ref> and <i>coord</i> is either
<ref resolved='predef::GL.GL_S'>GL_S</ref> or
<ref resolved='predef::GL.GL_T'>GL_T</ref>,
s and t texture coordinates are generated as follows. 
Let <i>u</i> be the unit vector pointing from the origin to the polygon vertex
(in eye coordinates). 
Let <i>n</i> sup prime be the current normal,
after transformation to eye coordinates. 
Let </p>
<p>.ce
f ~=~ ( f sub x~~f sub y~~f sub z ) sup T
be the reflection vector such that</p>
<p>.ce
f ~=~  u ~-~ 2 n sup prime n sup prime sup T u</p>
<p>Finally, let  m ~=~ 2 sqrt { f sub x sup {~2} + f sub y sup {~2} + (f sub z + 1 ) sup 2}. 
Then the values assigned to the s and t texture coordinates are</p>
<p>.ce 1
s ~=~ f sub x over m ~+~ 1 over 2
.sp
.ce 1
t ~=~ f sub y over m ~+~ 1 over 2</p>
<p>To enable or disable a texture-coordinate generation function, call
<ref resolved='predef::GL.glEnable'>glEnable</ref> or <ref resolved='predef::GL.glDisable'>glDisable</ref>
with one of the symbolic texture-coordinate names
(<ref resolved='predef::GL.GL_TEXTURE_GEN_S'>GL_TEXTURE_GEN_S</ref>,
<ref resolved='predef::GL.GL_TEXTURE_GEN_T'>GL_TEXTURE_GEN_T</ref>,
<ref resolved='predef::GL.GL_TEXTURE_GEN_R'>GL_TEXTURE_GEN_R</ref>, or
<ref resolved='predef::GL.GL_TEXTURE_GEN_Q'>GL_TEXTURE_GEN_Q</ref>) as the argument. 
When enabled,
the specified texture coordinate is computed
according to the generating function associated with that coordinate. 
When disabled,
subsequent vertices take the specified texture coordinate
from the current set of texture coordinates. Initially, all texture
generation functions are set to <ref resolved='predef::GL.GL_EYE_LINEAR'>GL_EYE_LINEAR</ref> and are disabled.
Both s plane equations are (1, 0, 0, 0),
both t plane equations are (0, 1, 0, 0),
and all r and q plane equations are (0, 0, 0, 0).</p>
</text><group><param name='coord'/><text><p>Specifies a texture coordinate.
Must be one of <ref resolved='predef::GL.GL_S'>GL_S</ref>, <ref resolved='predef::GL.GL_T'>GL_T</ref>, <ref resolved='predef::GL.GL_R'>GL_R</ref>, or <ref resolved='predef::GL.GL_Q'>GL_Q</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of the texture-coordinate generation function.
Must be <ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>.</p>
</text></group><group><param name='param'/><text><p>Specifies a single-valued texture generation parameter,
one of <ref resolved='predef::GL.GL_OBJECT_LINEAR'>GL_OBJECT_LINEAR</ref>, <ref resolved='predef::GL.GL_EYE_LINEAR'>GL_EYE_LINEAR</ref>, or <ref resolved='predef::GL.GL_SPHERE_MAP'>GL_SPHERE_MAP</ref>.</p>
</text></group><group><param name='coord'/><text><p>Specifies a texture coordinate.
Must be one of <ref resolved='predef::GL.GL_S'>GL_S</ref>, <ref resolved='predef::GL.GL_T'>GL_T</ref>, <ref resolved='predef::GL.GL_R'>GL_R</ref>, or <ref resolved='predef::GL.GL_Q'>GL_Q</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of the texture-coordinate generation function
or function parameters.
Must be
<ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>,
<ref resolved='predef::GL.GL_OBJECT_PLANE'>GL_OBJECT_PLANE</ref>, or
<ref resolved='predef::GL.GL_EYE_PLANE'>GL_EYE_PLANE</ref>.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to an array of texture generation parameters.
If <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>,
then the array must contain a single symbolic constant,
one of
<ref resolved='predef::GL.GL_OBJECT_LINEAR'>GL_OBJECT_LINEAR</ref>,
<ref resolved='predef::GL.GL_EYE_LINEAR'>GL_EYE_LINEAR</ref>, or
<ref resolved='predef::GL.GL_SPHERE_MAP'>GL_SPHERE_MAP</ref>. 
Otherwise,
<i>params</i> holds the coefficients for the texture-coordinate generation function
specified by <i>pname</i>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated when <i>coord</i> or <i>pname</i> is not an
accepted defined value,
or when <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref> and <i>params</i> is not an
accepted defined value.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated when <i>pname</i> is <ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref>,
<i>params</i> is <ref resolved='predef::GL.GL_SPHERE_MAP'>GL_SPHERE_MAP</ref>,
and <i>coord</i> is either <ref resolved='predef::GL.GL_R'>GL_R</ref> or <ref resolved='predef::GL.GL_Q'>GL_Q</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTexGen'>glTexGen</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTexGen'>
<arguments><argument name='coord'><type><int/></type></argument><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexImage2D'><doc><text><p>Texturing maps a portion of a specified texture image
onto each graphical primitive for which texturing is enabled.
To enable and disable two-dimensional texturing, call <ref resolved='predef::GL.glEnable'>glEnable</ref>
and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
<p>To define texture images, call <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>. 
The arguments describe the parameters of the texture image,
such as height,
width,
width of the border,
level-of-detail number
(see <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>),
and number of color components provided.
The last three arguments describe how the image is represented in memory;
they are identical to the pixel formats used for <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>.</p>
<p>If <i>target</i> is <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref>, no data is read from <i>pixels</i>, but
all of the texture image state is recalculated, checked for
consistency, and checked 
against the implementation's capabilities. If the implementation cannot
handle a texture of the requested texture size, it sets
all of the image state to 0,
but does not generate an error (see <ref resolved='predef::GL.glGetError'>glGetError</ref>). To query for an
entire mipmap array, use an image array level greater than or equal to
1. 
.P 
If <i>target</i> is <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>,
data is read from <i>pixels</i> as a sequence of signed or unsigned bytes,
shorts,
or longs,
or single-precision floating-point values,
depending on <i>type</i>. 
These values are grouped into sets of one,
two,
three,
or four values,
depending on <i>format</i>,
to form elements. 
If <i>type</i> is <ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref>,
the data is considered as a string of unsigned bytes (and
<i>format</i> must be <ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>). 
Each data byte is treated as eight 1-bit elements,
with bit ordering determined by <ref resolved='predef::GL.GL_UNPACK_LSB_FIRST'>GL_UNPACK_LSB_FIRST</ref>
(see <ref>glPixelStore</ref>).</p>
<p>The first element corresponds to the lower left corner of the texture
image.
Subsequent elements progress left-to-right through the remaining texels
in the lowest row of the texture image, and then in successively higher
rows of the texture image.
The final element corresponds to the upper right corner of the texture
image.</p>
<p><i>format</i> determines the composition of each element in <i>pixels</i>.
It can assume one of nine symbolic values:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>
</c><c>Each element is a single value,
a color index. 
The GL converts it to fixed point
(with an unspecified number of zero bits to the right of the binary point),
shifted left or right depending on the value and sign of <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref>,
and added to <ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref>
(see 

<ref>glPixelTransfer</ref>). 
The resulting index is converted to a set of color components
using the
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_R'>GL_PIXEL_MAP_I_TO_R</ref>,
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_G'>GL_PIXEL_MAP_I_TO_G</ref>,
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_B'>GL_PIXEL_MAP_I_TO_B</ref>, and
<ref resolved='predef::GL.GL_PIXEL_MAP_I_TO_A'>GL_PIXEL_MAP_I_TO_A</ref> tables,
and clamped to the range [0,1].
</c></r>
<r><c><ref resolved='predef::GL.GL_RED'>GL_RED</ref>
</c><c>Each element is a single red component. 
The GL converts it to floating point and assembles it into an RGBA element
by attaching 0 for green and blue, and 1 for alpha. 
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>
</c><c>Each element is a single green component. 
The GL converts it to floating point and assembles it into an RGBA element
by attaching 0 for red and blue, and 1 for alpha. 
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>
</c><c>Each element is a single blue component. 
The GL converts it to floating point and assembles it into an RGBA element
by attaching 0 for red and green, and 1 for alpha. 
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>
</c><c>Each element is a single alpha component. 
The GL converts it to floating point and assembles it into an RGBA element
by attaching 0 for red, green, and blue.
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>
</c><c>Each element is an RGB triple.
The GL converts it to floating point and assembles it into an RGBA element
by attaching 1 for alpha.
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see 

<ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>
</c><c>Each element contains all four components.
Each component is multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>
</c><c>Each element is a single luminance value.
The GL converts it to floating point,
then assembles it into an RGBA element by replicating the luminance value
three times for red, green, and blue and attaching 1 for alpha. 
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see <ref>glPixelTransfer</ref>).
</c></r>
<r><c><ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>
</c><c>Each element is a luminance/alpha pair.
The GL converts it to floating point,
then assembles it into an RGBA element by replicating the luminance value
three times for red, green, and blue.
Each component is then multiplied by the signed scale factor <ref>GL_c_SCALE</ref>,
added to the signed bias <ref>GL_c_BIAS</ref>,
and clamped to the range [0,1]
(see 

<ref>glPixelTransfer</ref>).
</c></r>
</matrix></p>
<p>Refer to the <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref> reference page for a description of
the acceptable values for the <i>type</i> parameter.</p>
<p>If an application wants to store the texture at a certain
resolution or in a certain format, it can request the resolution
and format with <i>internalformat</i>. The GL will choose an internal
representation that closely approximates that requested by <i>internalformat</i>, but
it may not match exactly.
(The representations specified by <ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>,
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>, <ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
and <ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref> must match exactly. The numeric values 1, 2, 3, and 4
may also be used to specify the above representations.)</p>
<p>Use the <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref> target to try out a resolution and
format. The implementation will
update and recompute its best match for the requested storage resolution
and format. To then query this state, call
<ref>glGetTexLevelParameter</ref>.
If the texture cannot be accommodated, texture state is set to 0.</p>
<p>A one-component texture image uses only the red component of the RGBA
color extracted from <i>pixels</i>. 
A two-component image uses the R and A values.
A three-component image uses the R, G, and B values.
A four-component image uses all of the RGBA components.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref> or <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref>.</p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='internalformat'/><text><p>Specifies the number of color components in the texture.
Must be 1, 2, 3, or 4, or one of the following symbolic constants:
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_ALPHA4'>GL_ALPHA4</ref>,
<ref resolved='predef::GL.GL_ALPHA8'>GL_ALPHA8</ref>,
<ref resolved='predef::GL.GL_ALPHA12'>GL_ALPHA12</ref>,
<ref resolved='predef::GL.GL_ALPHA16'>GL_ALPHA16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4'>GL_LUMINANCE4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8'>GL_LUMINANCE8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12'>GL_LUMINANCE12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16'>GL_LUMINANCE16</ref>,
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE4_ALPHA4'>GL_LUMINANCE4_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE6_ALPHA2'>GL_LUMINANCE6_ALPHA2</ref>,
<ref resolved='predef::GL.GL_LUMINANCE8_ALPHA8'>GL_LUMINANCE8_ALPHA8</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA4'>GL_LUMINANCE12_ALPHA4</ref>,
<ref resolved='predef::GL.GL_LUMINANCE12_ALPHA12'>GL_LUMINANCE12_ALPHA12</ref>,
<ref resolved='predef::GL.GL_LUMINANCE16_ALPHA16'>GL_LUMINANCE16_ALPHA16</ref>,
<ref resolved='predef::GL.GL_INTENSITY'>GL_INTENSITY</ref>,
<ref resolved='predef::GL.GL_INTENSITY4'>GL_INTENSITY4</ref>,
<ref resolved='predef::GL.GL_INTENSITY8'>GL_INTENSITY8</ref>,
<ref resolved='predef::GL.GL_INTENSITY12'>GL_INTENSITY12</ref>,
<ref resolved='predef::GL.GL_INTENSITY16'>GL_INTENSITY16</ref>,
<ref resolved='predef::GL.GL_R3_G3_B2'>GL_R3_G3_B2</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_RGB4'>GL_RGB4</ref>,
<ref resolved='predef::GL.GL_RGB5'>GL_RGB5</ref>,
<ref resolved='predef::GL.GL_RGB8'>GL_RGB8</ref>,
<ref resolved='predef::GL.GL_RGB10'>GL_RGB10</ref>,
<ref resolved='predef::GL.GL_RGB12'>GL_RGB12</ref>,
<ref resolved='predef::GL.GL_RGB16'>GL_RGB16</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_RGBA2'>GL_RGBA2</ref>,
<ref resolved='predef::GL.GL_RGBA4'>GL_RGBA4</ref>,
<ref resolved='predef::GL.GL_RGB5_A1'>GL_RGB5_A1</ref>,
<ref resolved='predef::GL.GL_RGBA8'>GL_RGBA8</ref>,
<ref resolved='predef::GL.GL_RGB10_A2'>GL_RGB10_A2</ref>,
<ref resolved='predef::GL.GL_RGBA12'>GL_RGBA12</ref>, or
<ref resolved='predef::GL.GL_RGBA16'>GL_RGBA16</ref>.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture image.
Must be 2 sup n + 2 ( "border" ) for some integer n. All
implementations support texture images that are at least 64 texels
wide.</p>
</text></group><group><param name='height'/><text><p>Specifies the height of the texture image.
Must be 2 sup m + 2 ( "border" ) for some integer m. All
implementations support texture images that are at least 64 texels
high.</p>
</text></group><group><param name='border'/><text><p>Specifies the width of the border.
Must be either 0 or 1.</p>
</text></group><group><param name='format'/><text><p>Specifies the format of the pixel data.
The following symbolic values are accepted:
<ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>,
<ref resolved='predef::GL.GL_RED'>GL_RED</ref>,
<ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>,
<ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>,
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>, and
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>.</p>
</text></group><group><param name='type'/><text><p>Specifies the data type of the pixel data.
The following symbolic values are accepted:
<ref resolved='predef::GL.GL_UNSIGNED_BYTE'>GL_UNSIGNED_BYTE</ref>,
<ref resolved='predef::GL.GL_BYTE'>GL_BYTE</ref>,
<ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_SHORT'>GL_UNSIGNED_SHORT</ref>,
<ref resolved='predef::GL.GL_SHORT'>GL_SHORT</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_INT'>GL_UNSIGNED_INT</ref>,
<ref resolved='predef::GL.GL_INT'>GL_INT</ref>, and
<ref resolved='predef::GL.GL_FLOAT'>GL_FLOAT</ref>.</p>
</text></group><group><param name='pixels'/><text><p>Specifies a pointer to the image data in memory.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>
or <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>format</i> is not an accepted
format constant.
Format constants other than <ref resolved='predef::GL.GL_STENCIL_INDEX'>GL_STENCIL_INDEX</ref> and <ref resolved='predef::GL.GL_DEPTH_COMPONENT'>GL_DEPTH_COMPONENT</ref>
are accepted.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is not a type constant.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is <ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref> and
<i>format</i> is not <ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
.P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i> is greater than $log
sub 2$<i>max</i>,
where <i>max</i> is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>internalformat</i> is not 1, 2, 3, 4, or one of the 
accepted resolution and format symbolic constants.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>width</i> or <i>height</i> is less than 0
or greater than 2 + <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>,
or if either cannot be represented as 2 sup k + 2("border") for some
integer value of <i>k</i>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>border</i> is not 0 or 1.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTexImage2D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='internalformat'><type><int/></type></argument><argument name='width'><type><or><object resolved='predef::GL.glTexImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexImage2D'/></valuetype></mapping></or></type></argument><argument name='height'><type><or><object resolved='predef::GL.glTexImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexImage2D'/></valuetype></mapping></or></type></argument><argument name='border'><type><int/></type></argument><argument name='format'><type><or><object resolved='predef::GL.glTexImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexImage2D'/></valuetype></mapping></or></type></argument><argument name='type'><type><or><object resolved='predef::GL.glTexImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexImage2D'/></valuetype></mapping></or></type></argument><argument name='pixels'><type><array><valuetype><or><object resolved='predef::GL.glTexImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexImage2D'/></valuetype></mapping></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexParameter'><doc><text><p>Texture mapping is a technique that applies an image onto an object's surface
as if the image were a decal or cellophane shrink-wrap. 
The image is created in texture space,
with an (s, t) coordinate system. 
A texture is a one- or two-dimensional image and a set of parameters
that determine how samples are derived from the image.</p>
<p><ref resolved='predef::GL.glTexParameter'>glTexParameter</ref> assigns the value or values in <i>params</i> to the texture parameter
specified as <i>pname</i>. 
<i>target</i> defines the target texture,
either <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> or <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.
The following symbols are accepted in <i>pname</i>:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_TEXTURE_MIN_FILTER'>GL_TEXTURE_MIN_FILTER</ref>
</c><c>The texture minifying function is used whenever the pixel being textured
maps to an area greater than one texture element. 
There are six defined minifying functions.
Two of them use the nearest one or nearest four texture elements
to compute the texture value. 
The other four use mipmaps.

A mipmap is an ordered set of arrays representing the same image
at progressively lower resolutions. 
If the texture has dimensions 2 sup n times 2 sup m, there are
 bold max ( n, m ) + 1  mipmaps. 
The first mipmap is the original texture,
with dimensions 2 sup n times 2 sup m. 
Each subsequent mipmap has dimensions 2 sup { k - 1 } times 2 sup { l - 1 },
where 2 sup k times 2 sup l are the dimensions of the previous mipmap,
until either k = 0 or l=0.
At that point,
subsequent mipmaps have dimension  1 times 2 sup { l - 1 } 
or  2 sup { k - 1} times 1  until the final mipmap,
which has dimension 1 times 1. 
To define the mipmaps, call <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>,
<ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, or <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>
with the <i>level</i> argument indicating the order of the mipmaps.
Level 0 is the original texture;
level  bold max ( n, m )  is the final 1 times 1 mipmap.

<i>params</i> supplies a function for minifying the texture as one of the following:
.RS 10
</c></r>
<r><c><ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref>
</c><c>Returns the value of the texture element that is nearest
(in Manhattan distance)
to the center of the pixel being textured.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref>
</c><c>Returns the weighted average of the four texture elements
that are closest to the center of the pixel being textured.
These can include border texture elements,
depending on the values of <ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref> and <ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref>,
and on the exact mapping.
</c></r>
<r><c><ref resolved='predef::GL.GL_NEAREST_MIPMAP_NEAREST'>GL_NEAREST_MIPMAP_NEAREST</ref>
</c><c>Chooses the mipmap that most closely matches the size of the pixel
being textured and uses the <ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref> criterion
(the texture element nearest to the center of the pixel)
to produce a texture value.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINEAR_MIPMAP_NEAREST'>GL_LINEAR_MIPMAP_NEAREST</ref>
</c><c>Chooses the mipmap that most closely matches the size of the pixel
being textured and uses the <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref> criterion
(a weighted average of the four texture elements that are closest
to the center of the pixel)
to produce a texture value.
</c></r>
<r><c><ref resolved='predef::GL.GL_NEAREST_MIPMAP_LINEAR'>GL_NEAREST_MIPMAP_LINEAR</ref>
</c><c>Chooses the two mipmaps that most closely match the size of the pixel
being textured and uses the <ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref> criterion
(the texture element nearest to the center of the pixel)
to produce a texture value from each mipmap. 
The final texture value is a weighted average of those two values.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINEAR_MIPMAP_LINEAR'>GL_LINEAR_MIPMAP_LINEAR</ref>
</c><c>Chooses the two mipmaps that most closely match the size of the pixel
being textured and uses the <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref> criterion
(a weighted average of the four texture elements that are closest
to the center of the pixel)
to produce a texture value from each mipmap.
The final texture value is a weighted average of those two values.
.RE

As more texture elements are sampled in the minification process,
fewer aliasing artifacts will be apparent. 
While the <ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref> and <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref> minification functions can be
faster than the other four,
they sample only one or four texture elements to determine the texture value
of the pixel being rendered and can produce moire patterns
or ragged transitions. 
The initial value of <ref resolved='predef::GL.GL_TEXTURE_MIN_FILTER'>GL_TEXTURE_MIN_FILTER</ref> is
<ref resolved='predef::GL.GL_NEAREST_MIPMAP_LINEAR'>GL_NEAREST_MIPMAP_LINEAR</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_MAG_FILTER'>GL_TEXTURE_MAG_FILTER</ref>
</c><c>The texture magnification function is used when the pixel being textured
maps to an area less than or equal to one texture element.
It sets the texture magnification function to either <ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref>
or <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref> (see below). <ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref> is generally faster
than <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref>, 
but it can produce textured images with sharper edges
because the transition between texture elements is not as smooth. 
The initial value of <ref resolved='predef::GL.GL_TEXTURE_MAG_FILTER'>GL_TEXTURE_MAG_FILTER</ref> is <ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref>.
.RS 10
</c></r>
<r><c><ref resolved='predef::GL.GL_NEAREST'>GL_NEAREST</ref>
</c><c>Returns the value of the texture element that is nearest
(in Manhattan distance)
to the center of the pixel being textured.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINEAR'>GL_LINEAR</ref>
</c><c>Returns the weighted average of the four texture elements
that are closest to the center of the pixel being textured.
These can include border texture elements,
depending on the values of <ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref> and <ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref>,
and on the exact mapping.
</c></r>
</matrix></p>
<p>.RE</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref>
</c><c>Sets the wrap parameter for texture coordinate <i>s</i> to either
<ref resolved='predef::GL.GL_CLAMP'>GL_CLAMP</ref> or <ref resolved='predef::GL.GL_REPEAT'>GL_REPEAT</ref>.
<ref resolved='predef::GL.GL_CLAMP'>GL_CLAMP</ref> causes s coordinates to be clamped to the range [0,1]
and is useful for preventing wrapping artifacts when mapping
a single image onto an object. 
<ref resolved='predef::GL.GL_REPEAT'>GL_REPEAT</ref> causes the integer part of the s coordinate to be ignored;
the GL uses only the fractional part,
thereby creating a repeating pattern. 
Border texture elements are accessed only if wrapping is set to <ref resolved='predef::GL.GL_CLAMP'>GL_CLAMP</ref>.
Initially, <ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref> is set to <ref resolved='predef::GL.GL_REPEAT'>GL_REPEAT</ref>.
</c></r>
</matrix></p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref>
</c><c>Sets the wrap parameter for texture coordinate <i>t</i> to either
<ref resolved='predef::GL.GL_CLAMP'>GL_CLAMP</ref> or <ref resolved='predef::GL.GL_REPEAT'>GL_REPEAT</ref>.
See the discussion under <ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref>. 
Initially, <ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref> is set to <ref resolved='predef::GL.GL_REPEAT'>GL_REPEAT</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_BORDER_COLOR'>GL_TEXTURE_BORDER_COLOR</ref>
</c><c>Sets a border color.
<i>params</i> contains four values that comprise the RGBA color
of the texture border. 
Integer color components are interpreted linearly such that the most
positive integer maps to 1.0,
and the most negative integer maps to -1.0.
The values are clamped to the range [0,1] when they are specified.
Initially, the border color is (0, 0, 0, 0).
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_PRIORITY'>GL_TEXTURE_PRIORITY</ref>
</c><c>Specifies the texture residence priority of the currently bound texture.
Permissible values are in the range [0,\ 1].
See <ref>glPrioritizeTextures</ref> and <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref> for more information.
</c></r></matrix></p>
</text><group><param name='target'/><text><p>Specifies the target texture,
which must be either <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> or <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of a single-valued texture parameter.
<i>pname</i> can be one of the following:
<ref resolved='predef::GL.GL_TEXTURE_MIN_FILTER'>GL_TEXTURE_MIN_FILTER</ref>,
<ref resolved='predef::GL.GL_TEXTURE_MAG_FILTER'>GL_TEXTURE_MAG_FILTER</ref>,
<ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref>, 
<ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref>, or
<ref resolved='predef::GL.GL_TEXTURE_PRIORITY'>GL_TEXTURE_PRIORITY</ref>.</p>
</text></group><group><param name='param'/><text><p>Specifies the value of <i>pname</i>.</p>
</text></group><group><param name='target'/><text><p>Specifies the target texture,
which must be either <ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> or <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
</text></group><group><param name='pname'/><text><p>Specifies the symbolic name of a texture parameter.
<i>pname</i> can be one of the following:
<ref resolved='predef::GL.GL_TEXTURE_MIN_FILTER'>GL_TEXTURE_MIN_FILTER</ref>,
<ref resolved='predef::GL.GL_TEXTURE_MAG_FILTER'>GL_TEXTURE_MAG_FILTER</ref>,
<ref resolved='predef::GL.GL_TEXTURE_WRAP_S'>GL_TEXTURE_WRAP_S</ref>,
<ref resolved='predef::GL.GL_TEXTURE_WRAP_T'>GL_TEXTURE_WRAP_T</ref>, 
<ref resolved='predef::GL.GL_TEXTURE_BORDER_COLOR'>GL_TEXTURE_BORDER_COLOR</ref>, or
<ref resolved='predef::GL.GL_TEXTURE_PRIORITY'>GL_TEXTURE_PRIORITY</ref>.</p>
</text></group><group><param name='params'/><text><p>Specifies a pointer to an array where the value or values of <i>pname</i> are stored.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> or <i>pname</i> is not
one of the accepted defined values.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>params</i> should have a defined
constant value (based on the value of <i>pname</i>) and does not.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTexParameter'>
<arguments><argument name='target'><type><int/></type></argument><argument name='pname'><type><int/></type></argument><argument name='param'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTexSubImage2D'><doc><text><p>Texturing maps a portion of a specified texture image
onto each graphical primitive for which texturing is enabled.
To enable and disable two-dimensional texturing, call <ref resolved='predef::GL.glEnable'>glEnable</ref>
and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
<p><ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref> redefines a contiguous subregion of an existing two-dimensional
texture image.
The texels referenced by <i>pixels</i> replace the portion of the
existing texture array with x indices <i>xoffset</i> and "xoffset"~+~"width"~-~1,
inclusive,
and y indices <i>yoffset</i> and "yoffset"~+~"height"~-~1, inclusive. 
This region may not include any texels outside the range of the
texture array as it was originally specified.
It is not an error to specify a subtexture with zero width or height, but
such a specification has no effect.</p>
</text><group><param name='target'/><text><p>Specifies the target texture.
Must be <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>.</p>
</text></group><group><param name='level'/><text><p>Specifies the level-of-detail number.
Level 0 is the base image level.
Level <i>n</i> is the <i>n</i>th mipmap reduction image.</p>
</text></group><group><param name='xoffset'/><text><p>Specifies a texel offset in the x direction within the texture array.</p>
</text></group><group><param name='yoffset'/><text><p>Specifies a texel offset in the y direction within the texture array.</p>
</text></group><group><param name='width'/><text><p>Specifies the width of the texture subimage.</p>
</text></group><group><param name='height'/><text><p>Specifies the height of the texture subimage.</p>
</text></group><group><param name='format'/><text><p>Specifies the format of the pixel data.
The following symbolic values are accepted:
<ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>,
<ref resolved='predef::GL.GL_RED'>GL_RED</ref>,
<ref resolved='predef::GL.GL_GREEN'>GL_GREEN</ref>,
<ref resolved='predef::GL.GL_BLUE'>GL_BLUE</ref>,
<ref resolved='predef::GL.GL_ALPHA'>GL_ALPHA</ref>,
<ref resolved='predef::GL.GL_RGB'>GL_RGB</ref>,
<ref resolved='predef::GL.GL_RGBA'>GL_RGBA</ref>,
<ref resolved='predef::GL.GL_LUMINANCE'>GL_LUMINANCE</ref>, and
<ref resolved='predef::GL.GL_LUMINANCE_ALPHA'>GL_LUMINANCE_ALPHA</ref>.</p>
</text></group><group><param name='type'/><text><p>Specifies the data type of the pixel data.
The following symbolic values are accepted:
<ref resolved='predef::GL.GL_UNSIGNED_BYTE'>GL_UNSIGNED_BYTE</ref>,
<ref resolved='predef::GL.GL_BYTE'>GL_BYTE</ref>,
<ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_SHORT'>GL_UNSIGNED_SHORT</ref>,
<ref resolved='predef::GL.GL_SHORT'>GL_SHORT</ref>,
<ref resolved='predef::GL.GL_UNSIGNED_INT'>GL_UNSIGNED_INT</ref>,
<ref resolved='predef::GL.GL_INT'>GL_INT</ref>, and
<ref resolved='predef::GL.GL_FLOAT'>GL_FLOAT</ref>.</p>
</text></group><group><param name='pixels'/><text><p>Specifies a pointer to the image data in memory.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>target</i> is not <ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>. </p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if the texture array has not
been defined by a previous <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> operation.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>level</i> is less than 0.
.P 
P 
<ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> may be generated if <i>level</i> is greater
than log sub 2<i>max</i>,
where <i>max</i> is the returned value of <ref resolved='predef::GL.GL_MAX_TEXTURE_SIZE'>GL_MAX_TEXTURE_SIZE</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if "xoffset" ~&lt;~ ~-b,
("xoffset"~+~"width") ~&gt;~ (w~-~b), 
"yoffset" ~&lt;~ ~-b, or ("yoffset" ~+~ "height") ~&gt;~ (h~-~b).
Where w is the <ref resolved='predef::GL.GL_TEXTURE_WIDTH'>GL_TEXTURE_WIDTH</ref>, 
h is the <ref resolved='predef::GL.GL_TEXTURE_HEIGHT'>GL_TEXTURE_HEIGHT</ref>, and b is the border width 
of the texture image being modified.
Note that w and h include twice the border width.</p>
<p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>width</i> or <i>height</i> is less than 0.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>format</i> is not an accepted
format constant.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is not a type constant.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>type</i> is <ref resolved='predef::GL.GL_BITMAP'>GL_BITMAP</ref> and
<i>format</i> is not <ref resolved='predef::GL.GL_COLOR_INDEX'>GL_COLOR_INDEX</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref> is executed
between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTexSubImage2D'>
<arguments><argument name='target'><type><int/></type></argument><argument name='level'><type><int/></type></argument><argument name='xoffset'><type><int/></type></argument><argument name='yoffset'><type><int/></type></argument><argument name='width'><type><or><object resolved='predef::GL.glTexSubImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexSubImage2D'/></valuetype></mapping></or></type></argument><argument name='height'><type><or><object resolved='predef::GL.glTexSubImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexSubImage2D'/></valuetype></mapping></or></type></argument><argument name='format'><type><or><object resolved='predef::GL.glTexSubImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexSubImage2D'/></valuetype></mapping></or></type></argument><argument name='type'><type><or><object resolved='predef::GL.glTexSubImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexSubImage2D'/></valuetype></mapping></or></type></argument><argument name='pixels'><type><array><valuetype><or><object resolved='predef::GL.glTexSubImage2D'/><mapping><indextype><string/></indextype><valuetype><object resolved='predef::GL.glTexSubImage2D'/></valuetype></mapping></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glTranslate'><doc><text><p><ref resolved='predef::GL.glTranslate'>glTranslate</ref> produces a translation by 
("x","y","z").
The current matrix
(see </p>
<p><ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>)
is multiplied by this translation matrix,
with the product replacing the current matrix, as if
<ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref> were called with the following matrix
for its argument:
.sp
.ce
.EQ
left (  ~ down 20 matrix {
   ccol { 1~~ above 0~~ above 0~~ above 0~~ }
   ccol { 0~~ above 1~~ above 0~~ above 0~~ }
   ccol { 0~~ above 0~~ above 1~~ above 0~~ }
   ccol { "x"~ above "y"~ above "z"~ above 1}
} ~~right )
.EN
.sp
.RE
If the matrix mode is either <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref> or <ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>,
all objects drawn after a call to <ref resolved='predef::GL.glTranslate'>glTranslate</ref> are translated.</p>
<p>Use <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> and 
<ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> to save and restore
the untranslated coordinate system.</p>
</text><group><param name='x'/><text><p>Specify the <i>x</i>, <i>y</i>, and <i>z</i> coordinates of a translation vector.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glTranslate'>glTranslate</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glTranslate'>
<arguments><argument name='x'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='y'><type><or><float/><int/><void/></or></type></argument><argument name='z'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glVertex'><doc><text><p><ref resolved='predef::GL.glVertex'>glVertex</ref> commands are used within <ref resolved='predef::GL.glBegin'>glBegin</ref>/<ref resolved='predef::GL.glEnd'>glEnd</ref> pairs to specify
point, line, and polygon vertices.
The current color,
normal,
and texture coordinates are associated with the vertex when <ref resolved='predef::GL.glVertex'>glVertex</ref> is called.</p>
<p>When only <i>x</i> and <i>y</i> are specified,
<i>z</i> defaults to 0 and <i>w</i> defaults to 1.
When <i>x, y,</i> and <i>z</i> are specified,
<i>w</i> defaults to 1.</p>
</text><group><param name='x'/><text><p>Specify <i>x</i>, <i>y</i>, <i>z</i>, and <i>w</i> coordinates of a vertex.
Not all parameters are present in all forms of the command.</p>
</text></group><group><param name='v'/><text><p>Specifies a pointer to an array of two, three, or four elements.
The elements of a two-element array are <i>x</i> and <i>y</i>;
of a three-element array, <i>x</i>, <i>y</i>, and <i>z</i>;
and of a four-element array, <i>x</i>, <i>y</i>, <i>z</i>, and <i>w</i>.</p>
</text></group></doc>
<method name='glVertex'>
<arguments><argument name='x'><type><or><float/><int/><array><valuetype><or><float/><int/></or></valuetype></array></or></type></argument><argument name='y'><type><or><float/><int/><void/></or></type></argument><argument name='z'><type><or><float/><int/><void/></or></type></argument><argument name='w'><type><or><float/><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glViewport'><doc><text><p><ref resolved='predef::GL.glViewport'>glViewport</ref> specifies the affine transformation of x and y from
normalized device coordinates to window coordinates.
Let (x sub nd, y sub nd) be normalized device coordinates.
Then the window coordinates (x sub w, y sub w) are computed as follows:
.sp
.ce
.EQ
x sub w ~=~ ( x sub nd + 1 ) left ( "width" over 2 right ) ~+~ "x"
.EN
.sp
.ce
.EQ
y sub w ~=~ ( y sub nd + 1 ) left ( "height" over 2 right ) ~+~ "y"
.EN
.RE</p>
<p>Viewport width and height are silently clamped
to a range that depends on the implementation.
To query this range, call <ref>glGet</ref> with argument
<ref resolved='predef::GL.GL_MAX_VIEWPORT_DIMS'>GL_MAX_VIEWPORT_DIMS</ref>.</p>
</text><group><param name='x'/><text><p>Specify the lower left corner of the viewport rectangle,
in pixels. The initial value is (0,0).</p>
</text></group><group><param name='width'/><text><p>Specify the width and height
of the viewport.
When a GL context is first attached to a window,
<i>width</i> and <i>height</i> are set to the dimensions of that window.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if either <i>width</i> or <i>height</i> is negative.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glViewport'>glViewport</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glViewport'>
<arguments><argument name='x'><type><int/></type></argument><argument name='y'><type><int/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEnd'><doc><text><p><ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref> delimit the vertices that define a primitive or
a group of like primitives.
<ref resolved='predef::GL.glBegin'>glBegin</ref> accepts a single argument that specifies in which of ten ways the
vertices are interpreted.
Taking <i>n</i> as an integer count starting at one,
and <i>N</i> as the total number of vertices specified,
the interpretations are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_POINTS'>GL_POINTS</ref>
</c><c>Treats each vertex as a single point.
Vertex <i>n</i> defines point <i>n</i>.
<i>N</i> points are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>
</c><c>Treats each pair of vertices as an independent line segment.
Vertices <i>2n-1</i> and <i>2n</i> define line <i>n</i>.
<i>N/2</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_STRIP'>GL_LINE_STRIP</ref>
</c><c>Draws a connected group of line segments from the first vertex
to the last.
Vertices <i>n</i> and <i>n+1</i> define line <i>n</i>.
<i>N-1</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_LOOP'>GL_LINE_LOOP</ref>
</c><c>Draws a connected group of line segments from the first vertex
to the last,
then back to the first.
Vertices <i>n</i> and <i>n+1</i> define line <i>n</i>.
The last line, however, is defined by vertices <i>N</i> and <i>1</i>.
<i>N</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref>
</c><c>Treats each triplet of vertices as an independent triangle.
Vertices <i>3n-2</i>,
<i>3n-1</i>,
and <i>3n</i> define triangle <i>n</i>.
<i>N/3</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLE_STRIP'>GL_TRIANGLE_STRIP</ref>
</c><c>Draws a connected group of triangles.
One triangle is defined for each vertex presented after the first two vertices.
For odd <i>n</i>, vertices <i>n</i>,
<i>n+1</i>,
and <i>n+2</i> define triangle <i>n</i>.
For even <i>n</i>,
vertices <i>n+1</i>,
<i>n</i>,
and <i>n+2</i> define triangle <i>n</i>.
<i>N-2</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLE_FAN'>GL_TRIANGLE_FAN</ref>
</c><c>Draws a connected group of triangles.
One triangle is defined for each vertex presented after the first two vertices.
Vertices <i>1</i>,
<i>n+1</i>,
and <i>n+2</i> define triangle <i>n</i>.
<i>N-2</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref>
</c><c>Treats each group of four vertices as an independent quadrilateral.
Vertices <i>4n-3</i>,
<i>4n-2</i>,
<i>4n-1</i>,
and <i>4n</i> define quadrilateral <i>n</i>.
<i>N/4</i> quadrilaterals are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref>
</c><c>Draws a connected group of quadrilaterals.
One quadrilateral is defined for each pair of vertices presented
after the first pair.
Vertices <i>2n-1</i>,
<i>2n</i>,
<i>2n+2</i>,
and <i>2n+1</i> define quadrilateral <i>n</i>.
<i>N/2-1</i> quadrilaterals are drawn.
Note that the order in which vertices are used to construct a quadrilateral
from strip data is different from that used with independent data.
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON'>GL_POLYGON</ref>
</c><c>Draws a single,
convex polygon.
Vertices <i>1</i> through <i>N</i> define this polygon.
</c></r>
</matrix></p>
<p>Only a subset of GL commands can be used between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>.
The commands are
<ref resolved='predef::GL.glVertex'>glVertex</ref>,
<ref resolved='predef::GL.glColor'>glColor</ref>,
<ref resolved='predef::GL.glIndex'>glIndex</ref>,
<ref resolved='predef::GL.glNormal'>glNormal</ref>,
<ref resolved='predef::GL.glTexCoord'>glTexCoord</ref>,
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref>,
<ref resolved='predef::GL.glArrayElement'>glArrayElement</ref>,
<ref resolved='predef::GL.glMaterial'>glMaterial</ref>, and
<ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>.
Also,
it is acceptable to use
<ref resolved='predef::GL.glCallList'>glCallList</ref> or
<ref>glCallLists</ref> to execute
display lists that include only the preceding commands.
If any other GL command is executed between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>,
the error flag is set and the command is ignored.</p>
<p>Regardless of the value chosen for <i>mode</i>,
there is no limit to the number of vertices that can be defined
between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>.
Lines,
triangles,
quadrilaterals,
and polygons that are incompletely specified are not drawn.
Incomplete specification results when either too few vertices are
provided to specify even a single primitive or when an incorrect multiple 
of vertices is specified. The incomplete primitive is ignored; the rest are drawn.</p>
<p>The minimum specification of vertices
for each primitive is as follows:
1 for a point,
2 for a line,
3 for a triangle,
4 for a quadrilateral,
and 3 for a polygon.
Modes that require a certain multiple of vertices are
<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref> (2),
<ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref> (3),
<ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref> (4),
and <ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref> (2).</p>
</text><group><param name='mode'/><text><p>Specifies the primitive or primitives that will be created from vertices
presented between <ref resolved='predef::GL.glBegin'>glBegin</ref> and the subsequent <ref resolved='predef::GL.glEnd'>glEnd</ref>.
Ten symbolic constants are accepted:
<ref resolved='predef::GL.GL_POINTS'>GL_POINTS</ref>,
<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>,
<ref resolved='predef::GL.GL_LINE_STRIP'>GL_LINE_STRIP</ref>,
<ref resolved='predef::GL.GL_LINE_LOOP'>GL_LINE_LOOP</ref>,
<ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_STRIP'>GL_TRIANGLE_STRIP</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_FAN'>GL_TRIANGLE_FAN</ref>,
<ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref>,
<ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref>, and
<ref resolved='predef::GL.GL_POLYGON'>GL_POLYGON</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is set to an unaccepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glBegin'>glBegin</ref> is executed between a 
<ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEnd'>glEnd</ref> is executed without being
preceded by a <ref resolved='predef::GL.glBegin'>glBegin</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if a command other than
<ref resolved='predef::GL.glVertex'>glVertex</ref>,
<ref resolved='predef::GL.glColor'>glColor</ref>,
<ref resolved='predef::GL.glIndex'>glIndex</ref>,
<ref resolved='predef::GL.glNormal'>glNormal</ref>,
<ref resolved='predef::GL.glTexCoord'>glTexCoord</ref>,
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref>,
<ref resolved='predef::GL.glArrayElement'>glArrayElement</ref>,
<ref resolved='predef::GL.glMaterial'>glMaterial</ref>,
<ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>,
<ref resolved='predef::GL.glCallList'>glCallList</ref>, or
<ref>glCallLists</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p>Execution of 
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>,
<ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>,
<ref>glEdgeFlagPointer</ref>,
<ref>glTexCoordPointer</ref>,
<ref>glColorPointer</ref>,
<ref>glIndexPointer</ref>,
<ref>glNormalPointer</ref>,</p>
<p><ref>glVertexPointer</ref>,
<ref>glInterleavedArrays</ref>, or
<ref>glPixelStore</ref> is not allowed after a call to <ref resolved='predef::GL.glBegin'>glBegin</ref> and before
the corresponding call to <ref resolved='predef::GL.glEnd'>glEnd</ref>,
but an error may or may not be generated.</p>
</text></group></doc>
<method name='glEnd'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEndList'><doc><text><p>Display lists are groups of GL commands that have been stored
for subsequent execution.
Display lists are created with <ref resolved='predef::GL.glNewList'>glNewList</ref>.
All subsequent commands are placed in the display list,
in the order issued,
until <ref resolved='predef::GL.glEndList'>glEndList</ref> is called. </p>
<p><ref resolved='predef::GL.glNewList'>glNewList</ref> has two arguments.
The first argument,
<i>list</i>,
is a positive integer that becomes the unique name for the display list.
Names can be created and reserved with <ref resolved='predef::GL.glGenLists'>glGenLists</ref>
and tested for uniqueness with <ref resolved='predef::GL.glIsList'>glIsList</ref>.
The second argument,
<i>mode</i>,
is a symbolic constant that can assume one of two values: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COMPILE'>GL_COMPILE</ref>
</c><c>Commands are merely compiled.
</c></r>
<r><c><ref resolved='predef::GL.GL_COMPILE_AND_EXECUTE'>GL_COMPILE_AND_EXECUTE</ref>
</c><c>Commands are executed as they are compiled into the display list.
</c></r>
</matrix></p>
<p>Certain commands are not compiled into the display list
but are executed immediately,
regardless of the display-list mode.
These commands are
<ref>glColorPointer</ref>,
<ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref>,
<ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>,
<ref>glEdgeFlagPointer</ref>,
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>,
<ref>glFeedbackBuffer</ref>,
<ref resolved='predef::GL.glFinish'>glFinish</ref>,
<ref resolved='predef::GL.glFlush'>glFlush</ref>,
<ref resolved='predef::GL.glGenLists'>glGenLists</ref>,
<ref>glIndexPointer</ref>,
<ref>glInterleavedArrays</ref>,
<ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>,
<ref resolved='predef::GL.glIsList'>glIsList</ref>,
<ref>glNormalPointer</ref>,
<ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref>,
<ref>glPixelStore</ref>,
<ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref>,
<ref>glReadPixels</ref>,
<ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>,
<ref>glSelectBuffer</ref>,
<ref>glTexCoordPointer</ref>,
<ref>glVertexPointer</ref>,
and all of the <ref>glGet</ref> commands.</p>
<p>Similarly, 
<ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref> 
are executed immediately and not compiled into the display list when their
first argument is <ref resolved='predef::GL.GL_PROXY_TEXTURE_2D'>GL_PROXY_TEXTURE_2D</ref> or
<ref resolved='predef::GL.GL_PROXY_TEXTURE_1D'>GL_PROXY_TEXTURE_1D</ref>, respectively.</p>
<p>When <ref resolved='predef::GL.glEndList'>glEndList</ref> is encountered,
the display-list definition is completed by associating the list
with the unique name <i>list</i>
(specified in the <ref resolved='predef::GL.glNewList'>glNewList</ref> command). 
If a display list with name <i>list</i> already exists,
it is replaced only when <ref resolved='predef::GL.glEndList'>glEndList</ref> is called.</p>
</text><group><param name='list'/><text><p>Specifies the display-list name.</p>
</text></group><group><param name='mode'/><text><p>Specifies the compilation mode,
which can be
<ref resolved='predef::GL.GL_COMPILE'>GL_COMPILE</ref> or
<ref resolved='predef::GL.GL_COMPILE_AND_EXECUTE'>GL_COMPILE_AND_EXECUTE</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_VALUE'>GL_INVALID_VALUE</ref> is generated if <i>list</i> is 0.</p>
<p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEndList'>glEndList</ref> is called
without a preceding <ref resolved='predef::GL.glNewList'>glNewList</ref>, 
or if <ref resolved='predef::GL.glNewList'>glNewList</ref> is called while a display list is being defined.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glNewList'>glNewList</ref> or <ref resolved='predef::GL.glEndList'>glEndList</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p><ref resolved='predef::GL.GL_OUT_OF_MEMORY'>GL_OUT_OF_MEMORY</ref> is generated if there is insufficient memory to
compile the display list. If the GL version is 1.1 or greater, no
change is made to the previous contents of the display list, if any,
and no other change is made to the GL state. (It is as if no attempt
had been made to create the new display list.)</p>
</text></group></doc>
<method name='glEndList'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glFinish'><doc><text><p><ref resolved='predef::GL.glFinish'>glFinish</ref> does not return until the effects of all previously
called GL commands are complete.
Such effects include all changes to GL state,
all changes to connection state,
and all changes to the frame buffer contents.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glFinish'>glFinish</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glFinish'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glFlush'><doc><text><p>Different GL implementations buffer commands in several different locations,
including network buffers and the graphics accelerator itself.
<ref resolved='predef::GL.glFlush'>glFlush</ref> empties all of these buffers,
causing all issued commands to be executed as quickly as
they are accepted by the actual rendering engine.
Though this execution may not be completed in any particular
time period,
it does complete in finite time.</p>
<p>Because any GL program might be executed over a network,
or on an accelerator that buffers commands,
all programs should call <ref resolved='predef::GL.glFlush'>glFlush</ref> whenever they count on having
all of their previously issued commands completed.
For example,
call <ref resolved='predef::GL.glFlush'>glFlush</ref> before waiting for user input that depends on
the generated image.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glFlush'>glFlush</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glFlush'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glInitNames'><doc><text><p>The name stack is used during selection mode to allow sets of rendering
commands to be uniquely identified.
It consists of an ordered set of unsigned integers.
<ref resolved='predef::GL.glInitNames'>glInitNames</ref> causes the name stack to be initialized to its default empty state.</p>
<p>The name stack is always empty while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>.
Calls to <ref resolved='predef::GL.glInitNames'>glInitNames</ref> while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> are ignored.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glInitNames'>glInitNames</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of
<ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glInitNames'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLoadIdentity'><doc><text><p><ref resolved='predef::GL.glLoadIdentity'>glLoadIdentity</ref> replaces the current matrix with the identity matrix.
It is semantically equivalent to calling <ref resolved='predef::GL.glLoadMatrix'>glLoadMatrix</ref>
with the identity matrix</p>
<p>.ce</p>
<p>.EQ
left (  down 20 { ~ matrix {
   ccol { 1 above 0 above 0 above 0~ }
   ccol { 0 above 1 above 0 above 0~ }
   ccol { 0 above 0 above 1 above 0~ }
   ccol { 0 above 0 above 0 above 1 }
} } ~~ right )
.EN</p>
<p>but in some cases it is more efficient.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLoadIdentity'>glLoadIdentity</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLoadIdentity'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPopAttrib'><doc><text><p><ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> takes one argument,
a mask that indicates which groups of state variables
to save on the attribute stack.
Symbolic constants are used to set bits in the mask.
<i>mask</i>
is typically constructed by ORing several of these constants together.
The special mask
<ref resolved='predef::GL.GL_ALL_ATTRIB_BITS'>GL_ALL_ATTRIB_BITS</ref>
can be used to save all stackable states.</p>
<p>The symbolic mask constants and their associated GL state are as follows
(the second column lists which attributes are saved):</p>
<p>.TS
;
l l .
<ref resolved='predef::GL.GL_ACCUM_BUFFER_BIT'>GL_ACCUM_BUFFER_BIT</ref>	Accumulation buffer clear value</p>
<p><ref resolved='predef::GL.GL_COLOR_BUFFER_BIT'>GL_COLOR_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref> enable bit
	Alpha test function and reference value
	<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref> enable bit
	Blending source and destination functions
	Constant blend color
	Blending equation
	<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> enable bit
	<ref resolved='predef::GL.GL_DRAW_BUFFER'>GL_DRAW_BUFFER</ref> setting
	<ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref> enable bit
	<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref> enable bit
	Logic op function
	Color mode and index mode clear values
	Color mode and index mode writemasks</p>
<p><ref resolved='predef::GL.GL_CURRENT_BIT'>GL_CURRENT_BIT</ref>	Current RGBA color
	Current color index
	Current normal vector
	Current texture coordinates
	Current raster position
	<ref resolved='predef::GL.GL_CURRENT_RASTER_POSITION_VALID'>GL_CURRENT_RASTER_POSITION_VALID</ref> flag
	RGBA color associated with current raster position
	Color index associated with current raster position
	Texture coordinates associated with current raster position
	<ref resolved='predef::GL.GL_EDGE_FLAG'>GL_EDGE_FLAG</ref> flag</p>
<p><ref resolved='predef::GL.GL_DEPTH_BUFFER_BIT'>GL_DEPTH_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref> enable bit
	Depth buffer test function
	Depth buffer clear value
	<ref resolved='predef::GL.GL_DEPTH_WRITEMASK'>GL_DEPTH_WRITEMASK</ref> enable bit</p>
<p><ref resolved='predef::GL.GL_ENABLE_BIT'>GL_ENABLE_BIT</ref>	<ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref> flag
	<ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref> flag
	<ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref> flag
	Enable bits for the user-definable clipping planes
	<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>
	<ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref> flag
	<ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref> flag
	<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> flag
	<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref> flag
	<ref>GL_LIGHT</ref><i>i</i> where 0\ &lt;= <i>i</i>&lt;<ref resolved='predef::GL.GL_MAX_LIGHTS'>GL_MAX_LIGHTS</ref>
	<ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref> flag
	<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref> flag
	<ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref> flag
	<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref> flag
	<ref>GL_MAP1_</ref><i>x</i> where <i>x</i> is a map type
	<ref>GL_MAP2_</ref><i>x</i> where <i>x</i> is a map type
	<ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref> flag
	<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref> flag
	<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref> flag
	<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref> flag
	<ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref> flag
	<ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref> flag
	Flags <ref>GL_TEXTURE_GEN_</ref><i>x</i> where <i>x</i> is S, T, R, or Q </p>
<p><ref resolved='predef::GL.GL_EVAL_BIT'>GL_EVAL_BIT</ref>	<ref>GL_MAP1_</ref><i>x</i> enable bits, where <i>x</i> is a map type
	<ref>GL_MAP2_</ref><i>x</i> enable bits, where <i>x</i> is a map type
	1D grid endpoints and divisions
	2D grid endpoints and divisions
	<ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref> enable bit</p>
<p><ref resolved='predef::GL.GL_FOG_BIT'>GL_FOG_BIT</ref>	<ref resolved='predef::GL.GL_FOG'>GL_FOG</ref> enable bit
	Fog color
	Fog density
	Linear fog start
	Linear fog end
	Fog index
	<ref resolved='predef::GL.GL_FOG_MODE'>GL_FOG_MODE</ref> value</p>
<p><ref resolved='predef::GL.GL_HINT_BIT'>GL_HINT_BIT</ref>	<ref resolved='predef::GL.GL_PERSPECTIVE_CORRECTION_HINT'>GL_PERSPECTIVE_CORRECTION_HINT</ref> setting
	<ref resolved='predef::GL.GL_POINT_SMOOTH_HINT'>GL_POINT_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_LINE_SMOOTH_HINT'>GL_LINE_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH_HINT'>GL_POLYGON_SMOOTH_HINT</ref> setting
	<ref resolved='predef::GL.GL_FOG_HINT'>GL_FOG_HINT</ref> setting</p>
<p><ref resolved='predef::GL.GL_LIGHTING_BIT'>GL_LIGHTING_BIT</ref>	<ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref> enable bit
	<ref resolved='predef::GL.GL_COLOR_MATERIAL_FACE'>GL_COLOR_MATERIAL_FACE</ref> value
	Color material parameters that are tracking the current color
	Ambient scene color
	<ref resolved='predef::GL.GL_LIGHT_MODEL_LOCAL_VIEWER'>GL_LIGHT_MODEL_LOCAL_VIEWER</ref> value
	<ref resolved='predef::GL.GL_LIGHT_MODEL_TWO_SIDE'>GL_LIGHT_MODEL_TWO_SIDE</ref> setting
	<ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref> enable bit
	Enable bit for each light
	Ambient, diffuse, and specular intensity for each light
	Direction, position, exponent, and cutoff angle for each light
	Constant, linear, and quadratic attenuation factors for each light
	Ambient, diffuse, specular, and emissive color for each material
	Ambient, diffuse, and specular color indices for each material
	Specular exponent for each material
	<ref resolved='predef::GL.GL_SHADE_MODEL'>GL_SHADE_MODEL</ref> setting</p>
<p><ref resolved='predef::GL.GL_LINE_BIT'>GL_LINE_BIT</ref>	<ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref> enable bit
	Line stipple pattern and repeat counter
	Line width</p>
<p><ref resolved='predef::GL.GL_LIST_BIT'>GL_LIST_BIT</ref>	<ref resolved='predef::GL.GL_LIST_BASE'>GL_LIST_BASE</ref> setting</p>
<p><ref resolved='predef::GL.GL_PIXEL_MODE_BIT'>GL_PIXEL_MODE_BIT</ref>	<ref resolved='predef::GL.GL_RED_BIAS'>GL_RED_BIAS</ref> and <ref resolved='predef::GL.GL_RED_SCALE'>GL_RED_SCALE</ref> settings
	<ref resolved='predef::GL.GL_GREEN_BIAS'>GL_GREEN_BIAS</ref> and <ref resolved='predef::GL.GL_GREEN_SCALE'>GL_GREEN_SCALE</ref> values
	<ref resolved='predef::GL.GL_BLUE_BIAS'>GL_BLUE_BIAS</ref> and <ref resolved='predef::GL.GL_BLUE_SCALE'>GL_BLUE_SCALE</ref>
	<ref resolved='predef::GL.GL_ALPHA_BIAS'>GL_ALPHA_BIAS</ref> and <ref resolved='predef::GL.GL_ALPHA_SCALE'>GL_ALPHA_SCALE</ref>
	<ref resolved='predef::GL.GL_DEPTH_BIAS'>GL_DEPTH_BIAS</ref> and <ref resolved='predef::GL.GL_DEPTH_SCALE'>GL_DEPTH_SCALE</ref>
	<ref resolved='predef::GL.GL_INDEX_OFFSET'>GL_INDEX_OFFSET</ref> and <ref resolved='predef::GL.GL_INDEX_SHIFT'>GL_INDEX_SHIFT</ref> values
	<ref resolved='predef::GL.GL_MAP_COLOR'>GL_MAP_COLOR</ref> and <ref resolved='predef::GL.GL_MAP_STENCIL'>GL_MAP_STENCIL</ref> flags
	<ref resolved='predef::GL.GL_ZOOM_X'>GL_ZOOM_X</ref> and <ref resolved='predef::GL.GL_ZOOM_Y'>GL_ZOOM_Y</ref> factors
	<ref resolved='predef::GL.GL_READ_BUFFER'>GL_READ_BUFFER</ref> setting</p>
<p><ref resolved='predef::GL.GL_POINT_BIT'>GL_POINT_BIT</ref>	<ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref> flag
	Point size</p>
<p><ref resolved='predef::GL.GL_POLYGON_BIT'>GL_POLYGON_BIT</ref>	<ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref> enable bit
	<ref resolved='predef::GL.GL_CULL_FACE_MODE'>GL_CULL_FACE_MODE</ref> value
	<ref resolved='predef::GL.GL_FRONT_FACE'>GL_FRONT_FACE</ref> indicator
	<ref resolved='predef::GL.GL_POLYGON_MODE'>GL_POLYGON_MODE</ref> setting
	<ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref> enable bit
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref> flag
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_FACTOR'>GL_POLYGON_OFFSET_FACTOR</ref>
	<ref resolved='predef::GL.GL_POLYGON_OFFSET_UNITS'>GL_POLYGON_OFFSET_UNITS</ref></p>
<p><ref resolved='predef::GL.GL_POLYGON_STIPPLE_BIT'>GL_POLYGON_STIPPLE_BIT</ref>	Polygon stipple image</p>
<p><ref resolved='predef::GL.GL_SCISSOR_BIT'>GL_SCISSOR_BIT</ref>	<ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref> flag
	Scissor box</p>
<p><ref resolved='predef::GL.GL_STENCIL_BUFFER_BIT'>GL_STENCIL_BUFFER_BIT</ref>	<ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref> enable bit
	Stencil function and reference value
	Stencil value mask
	Stencil fail, pass, and depth buffer pass actions
	Stencil buffer clear value
	Stencil buffer writemask</p>
<p><ref resolved='predef::GL.GL_TEXTURE_BIT'>GL_TEXTURE_BIT</ref>	Enable bits for the four texture coordinates
	Border color for each texture image
	Minification function for each texture image
	Magnification function for each texture image
	Texture coordinates and wrap mode for each texture image
	Color and mode for each texture environment
	Enable bits <ref>GL_TEXTURE_GEN_</ref><i>x</i>, <i>x</i> is S, T, R, and Q 
	<ref resolved='predef::GL.GL_TEXTURE_GEN_MODE'>GL_TEXTURE_GEN_MODE</ref> setting for S, T, R, and Q
	<ref resolved='predef::GL.glTexGen'>glTexGen</ref> plane equations for S, T, R, and Q
	Current texture bindings (for example, <ref>GL_TEXTURE_2D_BINDING</ref>)</p>
<p><ref resolved='predef::GL.GL_TRANSFORM_BIT'>GL_TRANSFORM_BIT</ref>	Coefficients of the six clipping planes
	Enable bits for the user-definable clipping planes
	<ref resolved='predef::GL.GL_MATRIX_MODE'>GL_MATRIX_MODE</ref> value
	<ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref> flag</p>
<p><ref resolved='predef::GL.GL_VIEWPORT_BIT'>GL_VIEWPORT_BIT</ref>	Depth range (near and far)
	Viewport origin and extent
.TE</p>
<p><ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> restores the values of the state variables saved with the last</p>
<p><ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> command.
Those not saved are left unchanged.</p>
<p>It is an error to push attributes onto a full stack,
or to pop attributes off an empty stack.
In either case, the error flag is set
and no other change is made to GL state.</p>
<p>Initially, the attribute stack is empty.</p>
</text><group><param name='mask'/><text><p>Specifies a mask that indicates which attributes to save. Values for
<i>mask</i> are listed below.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> is called while
the attribute stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> is called while
the attribute stack is empty.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> or <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPopAttrib'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPopClientAttrib'><doc><text><p><ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> takes one argument,
a mask that indicates which groups of client-state variables
to save on the client attribute stack. 
Symbolic constants are used to set bits in the mask.
<i>mask</i>
is typically constructed by OR'ing several of these constants together.
The special mask
<ref resolved='predef::GL.GL_CLIENT_ALL_ATTRIB_BITS'>GL_CLIENT_ALL_ATTRIB_BITS</ref>
can be used to save all stackable client state.</p>
<p>The symbolic mask constants and their associated GL client state are as follows
(the second column lists which attributes are saved):</p>
<p><ref resolved='predef::GL.GL_CLIENT_PIXEL_STORE_BIT'>GL_CLIENT_PIXEL_STORE_BIT</ref>	Pixel storage modes</p>
<p><ref resolved='predef::GL.GL_CLIENT_VERTEX_ARRAY_BIT'>GL_CLIENT_VERTEX_ARRAY_BIT</ref>	Vertex arrays (and enables)</p>
<p><ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> restores the values of the client-state variables 
saved with the last <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref>.
Those not saved are left unchanged.</p>
<p>It is an error to push attributes onto a full client attribute stack,
or to pop attributes off an empty stack.
In either case, the error flag is set,
and no other change is made to GL state.</p>
<p>Initially, the client attribute stack is empty.</p>
</text><group><param name='mask'/><text><p>Specifies a mask that indicates which attributes to save.  Values for
<i>mask</i> are listed below.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> is called while
the attribute stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> is called while
the attribute stack is empty.</p>
</text></group></doc>
<method name='glPopClientAttrib'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPopMatrix'><doc><text><p>There is a stack of matrices for each of the matrix modes.
In <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref> mode,
the stack depth is at least 32.
In the other two modes,
<ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref> and <ref resolved='predef::GL.GL_TEXTURE'>GL_TEXTURE</ref>,
the depth is at least 2.
The current matrix in any mode is the matrix on the top of the stack
for that mode.</p>
<p><ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> pushes the current matrix stack down by one,
duplicating the current matrix.
That is,
after a <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> call,
the matrix on top of the stack is identical to the one below it.</p>
<p><ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> pops the current matrix stack,
replacing the current matrix with the one below it on the stack. </p>
<p>Initially, each of the stacks contains one matrix, an identity matrix.</p>
<p>It is an error to push a full matrix stack,
or to pop a matrix stack that contains only a single matrix.
In either case, the error flag is set
and no other change is made to GL state.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> is called while
the current matrix stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> is called while
the current matrix stack contains only a single matrix.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> or <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPopMatrix'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPopName'><doc><text><p>The name stack is used during selection mode to allow sets of rendering
commands to be uniquely identified.
It consists of an ordered set of unsigned integers and is initially empty.</p>
<p><ref resolved='predef::GL.glPushName'>glPushName</ref> causes <i>name</i> to be pushed onto the name stack.
<ref resolved='predef::GL.glPopName'>glPopName</ref> pops one name off the top of the stack. </p>
<p>The maximum name stack depth is implementation-dependent; call
<ref resolved='predef::GL.GL_MAX_NAME_STACK_DEPTH'>GL_MAX_NAME_STACK_DEPTH</ref> to find out the value for a particular
implementation. It is an
error to push a name onto a full stack, 
or to pop a name off an empty stack.
It is also an error to manipulate the name stack between the execution of
<ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.
In any of these cases, the error flag is set and no other change is
made to GL state.</p>
<p>The name stack is always empty while the render mode is not <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>.
Calls to <ref resolved='predef::GL.glPushName'>glPushName</ref> or <ref resolved='predef::GL.glPopName'>glPopName</ref> while the render mode is not
<ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> are ignored.</p>
</text><group><param name='name'/><text><p>Specifies a name that will be pushed onto the name stack.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushName'>glPushName</ref> is called while the
name stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopName'>glPopName</ref> is called while the
name stack is empty.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushName'>glPushName</ref> or <ref resolved='predef::GL.glPopName'>glPopName</ref>
is executed between a call to <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding call to
<ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPopName'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glPushMatrix'><doc><text><p>There is a stack of matrices for each of the matrix modes.
In <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref> mode,
the stack depth is at least 32.
In the other two modes,
<ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref> and <ref resolved='predef::GL.GL_TEXTURE'>GL_TEXTURE</ref>,
the depth is at least 2.
The current matrix in any mode is the matrix on the top of the stack
for that mode.</p>
<p><ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> pushes the current matrix stack down by one,
duplicating the current matrix.
That is,
after a <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> call,
the matrix on top of the stack is identical to the one below it.</p>
<p><ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> pops the current matrix stack,
replacing the current matrix with the one below it on the stack. </p>
<p>Initially, each of the stacks contains one matrix, an identity matrix.</p>
<p>It is an error to push a full matrix stack,
or to pop a matrix stack that contains only a single matrix.
In either case, the error flag is set
and no other change is made to GL state.</p>
</text><group><throws/><text><p><ref resolved='predef::GL.GL_STACK_OVERFLOW'>GL_STACK_OVERFLOW</ref> is generated if <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> is called while
the current matrix stack is full.</p>
<p><ref resolved='predef::GL.GL_STACK_UNDERFLOW'>GL_STACK_UNDERFLOW</ref> is generated if <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> is called while
the current matrix stack contains only a single matrix.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref> or <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glPushMatrix'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glBegin'><doc><text><p><ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref> delimit the vertices that define a primitive or
a group of like primitives.
<ref resolved='predef::GL.glBegin'>glBegin</ref> accepts a single argument that specifies in which of ten ways the
vertices are interpreted.
Taking <i>n</i> as an integer count starting at one,
and <i>N</i> as the total number of vertices specified,
the interpretations are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_POINTS'>GL_POINTS</ref>
</c><c>Treats each vertex as a single point.
Vertex <i>n</i> defines point <i>n</i>.
<i>N</i> points are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>
</c><c>Treats each pair of vertices as an independent line segment.
Vertices <i>2n-1</i> and <i>2n</i> define line <i>n</i>.
<i>N/2</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_STRIP'>GL_LINE_STRIP</ref>
</c><c>Draws a connected group of line segments from the first vertex
to the last.
Vertices <i>n</i> and <i>n+1</i> define line <i>n</i>.
<i>N-1</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_LOOP'>GL_LINE_LOOP</ref>
</c><c>Draws a connected group of line segments from the first vertex
to the last,
then back to the first.
Vertices <i>n</i> and <i>n+1</i> define line <i>n</i>.
The last line, however, is defined by vertices <i>N</i> and <i>1</i>.
<i>N</i> lines are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref>
</c><c>Treats each triplet of vertices as an independent triangle.
Vertices <i>3n-2</i>,
<i>3n-1</i>,
and <i>3n</i> define triangle <i>n</i>.
<i>N/3</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLE_STRIP'>GL_TRIANGLE_STRIP</ref>
</c><c>Draws a connected group of triangles.
One triangle is defined for each vertex presented after the first two vertices.
For odd <i>n</i>, vertices <i>n</i>,
<i>n+1</i>,
and <i>n+2</i> define triangle <i>n</i>.
For even <i>n</i>,
vertices <i>n+1</i>,
<i>n</i>,
and <i>n+2</i> define triangle <i>n</i>.
<i>N-2</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_TRIANGLE_FAN'>GL_TRIANGLE_FAN</ref>
</c><c>Draws a connected group of triangles.
One triangle is defined for each vertex presented after the first two vertices.
Vertices <i>1</i>,
<i>n+1</i>,
and <i>n+2</i> define triangle <i>n</i>.
<i>N-2</i> triangles are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref>
</c><c>Treats each group of four vertices as an independent quadrilateral.
Vertices <i>4n-3</i>,
<i>4n-2</i>,
<i>4n-1</i>,
and <i>4n</i> define quadrilateral <i>n</i>.
<i>N/4</i> quadrilaterals are drawn.
</c></r>
<r><c><ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref>
</c><c>Draws a connected group of quadrilaterals.
One quadrilateral is defined for each pair of vertices presented
after the first pair.
Vertices <i>2n-1</i>,
<i>2n</i>,
<i>2n+2</i>,
and <i>2n+1</i> define quadrilateral <i>n</i>.
<i>N/2-1</i> quadrilaterals are drawn.
Note that the order in which vertices are used to construct a quadrilateral
from strip data is different from that used with independent data.
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON'>GL_POLYGON</ref>
</c><c>Draws a single,
convex polygon.
Vertices <i>1</i> through <i>N</i> define this polygon.
</c></r>
</matrix></p>
<p>Only a subset of GL commands can be used between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>.
The commands are
<ref resolved='predef::GL.glVertex'>glVertex</ref>,
<ref resolved='predef::GL.glColor'>glColor</ref>,
<ref resolved='predef::GL.glIndex'>glIndex</ref>,
<ref resolved='predef::GL.glNormal'>glNormal</ref>,
<ref resolved='predef::GL.glTexCoord'>glTexCoord</ref>,
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref>,
<ref resolved='predef::GL.glArrayElement'>glArrayElement</ref>,
<ref resolved='predef::GL.glMaterial'>glMaterial</ref>, and
<ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>.
Also,
it is acceptable to use
<ref resolved='predef::GL.glCallList'>glCallList</ref> or
<ref>glCallLists</ref> to execute
display lists that include only the preceding commands.
If any other GL command is executed between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>,
the error flag is set and the command is ignored.</p>
<p>Regardless of the value chosen for <i>mode</i>,
there is no limit to the number of vertices that can be defined
between <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref resolved='predef::GL.glEnd'>glEnd</ref>.
Lines,
triangles,
quadrilaterals,
and polygons that are incompletely specified are not drawn.
Incomplete specification results when either too few vertices are
provided to specify even a single primitive or when an incorrect multiple 
of vertices is specified. The incomplete primitive is ignored; the rest are drawn.</p>
<p>The minimum specification of vertices
for each primitive is as follows:
1 for a point,
2 for a line,
3 for a triangle,
4 for a quadrilateral,
and 3 for a polygon.
Modes that require a certain multiple of vertices are
<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref> (2),
<ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref> (3),
<ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref> (4),
and <ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref> (2).</p>
</text><group><param name='mode'/><text><p>Specifies the primitive or primitives that will be created from vertices
presented between <ref resolved='predef::GL.glBegin'>glBegin</ref> and the subsequent <ref resolved='predef::GL.glEnd'>glEnd</ref>.
Ten symbolic constants are accepted:
<ref resolved='predef::GL.GL_POINTS'>GL_POINTS</ref>,
<ref resolved='predef::GL.GL_LINES'>GL_LINES</ref>,
<ref resolved='predef::GL.GL_LINE_STRIP'>GL_LINE_STRIP</ref>,
<ref resolved='predef::GL.GL_LINE_LOOP'>GL_LINE_LOOP</ref>,
<ref resolved='predef::GL.GL_TRIANGLES'>GL_TRIANGLES</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_STRIP'>GL_TRIANGLE_STRIP</ref>,
<ref resolved='predef::GL.GL_TRIANGLE_FAN'>GL_TRIANGLE_FAN</ref>,
<ref resolved='predef::GL.GL_QUADS'>GL_QUADS</ref>,
<ref resolved='predef::GL.GL_QUAD_STRIP'>GL_QUAD_STRIP</ref>, and
<ref resolved='predef::GL.GL_POLYGON'>GL_POLYGON</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is set to an unaccepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glBegin'>glBegin</ref> is executed between a 
<ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEnd'>glEnd</ref> is executed without being
preceded by a <ref resolved='predef::GL.glBegin'>glBegin</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if a command other than
<ref resolved='predef::GL.glVertex'>glVertex</ref>,
<ref resolved='predef::GL.glColor'>glColor</ref>,
<ref resolved='predef::GL.glIndex'>glIndex</ref>,
<ref resolved='predef::GL.glNormal'>glNormal</ref>,
<ref resolved='predef::GL.glTexCoord'>glTexCoord</ref>,
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref>,
<ref resolved='predef::GL.glArrayElement'>glArrayElement</ref>,
<ref resolved='predef::GL.glMaterial'>glMaterial</ref>,
<ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>,
<ref resolved='predef::GL.glCallList'>glCallList</ref>, or
<ref>glCallLists</ref> is executed between
the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the corresponding
execution <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
<p>Execution of 
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>,
<ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>,
<ref>glEdgeFlagPointer</ref>,
<ref>glTexCoordPointer</ref>,
<ref>glColorPointer</ref>,
<ref>glIndexPointer</ref>,
<ref>glNormalPointer</ref>,</p>
<p><ref>glVertexPointer</ref>,
<ref>glInterleavedArrays</ref>, or
<ref>glPixelStore</ref> is not allowed after a call to <ref resolved='predef::GL.glBegin'>glBegin</ref> and before
the corresponding call to <ref resolved='predef::GL.glEnd'>glEnd</ref>,
but an error may or may not be generated.</p>
</text></group></doc>
<method name='glBegin'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glCullFace'><doc><text><p><ref resolved='predef::GL.glCullFace'>glCullFace</ref> specifies whether front- or back-facing facets are culled
(as specified by <i>mode</i>) when facet culling is enabled. Facet
culling is initially disabled.
To enable and disable facet culling, call the
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> commands
with the argument <ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref>.
Facets include triangles,
quadrilaterals,
polygons,
and rectangles.</p>
<p><ref resolved='predef::GL.glFrontFace'>glFrontFace</ref> specifies which of the clockwise and counterclockwise facets
are front-facing and back-facing.
See <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref>.</p>
</text><group><param name='mode'/><text><p>Specifies whether front- or back-facing facets are candidates for culling.
Symbolic constants
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>, <ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>, and <ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref> are accepted.
The initial value is <ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glCullFace'>glCullFace</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glCullFace'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDepthFunc'><doc><text><p><ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> specifies the function used to compare each incoming pixel depth value
with the depth value present in the depth buffer.
The comparison is performed only if depth testing is enabled.
(See <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> of <ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref>.)</p>
<p><i>func</i> specifies the conditions under which the pixel will be drawn.
The comparison functions are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>
</c><c>Never passes. 
</c></r>
<r><c><ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>
</c><c>Passes if the incoming depth value is less than the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>
</c><c>Passes if the incoming depth value is equal to the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>
</c><c>Passes if the incoming depth value is less than or equal to
the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref> 
</c><c>Passes if the incoming depth value is greater than the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>
</c><c>Passes if the incoming depth value is not equal to the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>
</c><c>Passes if the incoming depth value is greater than or equal to
the stored depth value.
</c></r>
<r><c><ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref>
</c><c>Always passes. 
</c></r>
</matrix></p>
<p>The initial value of <i>func</i> is <ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>.
Initially, depth testing is disabled.
.NOTES
Even if the depth buffer exists and the depth mask is non-zero, the
depth buffer is not updated if the depth test is disabled.</p>
</text><group><param name='func'/><text><p>Specifies the depth comparison function.
Symbolic constants
<ref resolved='predef::GL.GL_NEVER'>GL_NEVER</ref>,
<ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>,
<ref resolved='predef::GL.GL_EQUAL'>GL_EQUAL</ref>,
<ref resolved='predef::GL.GL_LEQUAL'>GL_LEQUAL</ref>,
<ref resolved='predef::GL.GL_GREATER'>GL_GREATER</ref>,
<ref resolved='predef::GL.GL_NOTEQUAL'>GL_NOTEQUAL</ref>,
<ref resolved='predef::GL.GL_GEQUAL'>GL_GEQUAL</ref>, and
<ref resolved='predef::GL.GL_ALWAYS'>GL_ALWAYS</ref> are accepted.
The initial value is <ref resolved='predef::GL.GL_LESS'>GL_LESS</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>func</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDepthFunc'>
<arguments><argument name='func'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDisable'><doc><text><p><ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> enable and disable various capabilities.
Use <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref> or <ref>glGet</ref> to determine the current setting
of any capability. The initial value for each capability with the
exception of <ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> is <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>. The initial value for
<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> is <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref>. </p>
<p>Both <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> take a single argument, <i>cap</i>,
which can assume one of the following values:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref>
</c><c>If enabled,
do alpha testing. See
<ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref>
</c><c>If enabled,
generate normal vectors when either
<ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref> or
<ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref> is used to generate vertices. 
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>
</c><c>If enabled,
blend the incoming RGBA color values with the values in the color
buffers. See <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>.
</c></r>
<r><c><ref>GL_CLIP_PLANE</ref><i>i</i>
</c><c>If enabled,
clip geometry against user-defined clipping plane <i>i</i>.
See <ref>glClipPlane</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref>
</c><c>If enabled,
apply the currently selected logical operation to the incoming RGBA
color and color buffer values. See <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>
</c><c>If enabled,
have one or more material parameters track the current color.
See <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref>
</c><c>If enabled,
cull polygons based on their winding in window coordinates. 
See <ref resolved='predef::GL.glCullFace'>glCullFace</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref>
</c><c>If enabled,
do depth comparisons and update the depth buffer. Note that even if
the depth buffer exists and the depth mask is non-zero, the 
depth buffer is not updated if the depth test is disabled. See
<ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and 

<ref resolved='predef::GL.glDepthRange'>glDepthRange</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref>	
</c><c>If enabled,
dither color components or indices before they are written to the
color buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG'>GL_FOG</ref>
</c><c>If enabled,
blend a fog color into the posttexturing color.
See <ref resolved='predef::GL.glFog'>glFog</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref>
</c><c>If enabled,
apply the currently selected logical operation to the incoming index and color
buffer indices. See 

<ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>.
</c></r>
<r><c><ref>GL_LIGHT</ref><i>i</i>
</c><c>If enabled,
include light <i>i</i> in the evaluation of the lighting
equation. See <ref resolved='predef::GL.glLightModel'>glLightModel</ref> and <ref resolved='predef::GL.glLight'>glLight</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref>
</c><c>If enabled,
use the current lighting parameters to compute the vertex color or index.
Otherwise, simply associate the current color or index with each
vertex. See 

<ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, and <ref resolved='predef::GL.glLight'>glLight</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref>
</c><c>If enabled,
draw lines with correct filtering.
Otherwise,
draw aliased lines.
See <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref>
</c><c>If enabled,
use the current line stipple pattern when drawing lines. See
<ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_COLOR_4'>GL_MAP1_COLOR_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate RGBA values.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_INDEX'>GL_MAP1_INDEX</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate color indices.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_NORMAL'>GL_MAP1_NORMAL</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate normals.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_1'>GL_MAP1_TEXTURE_COORD_1</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>
texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_2'>GL_MAP1_TEXTURE_COORD_2</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i> and
<i>t</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_3'>GL_MAP1_TEXTURE_COORD_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>, and
<i>r</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_4'>GL_MAP1_TEXTURE_COORD_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_VERTEX_3'>GL_MAP1_VERTEX_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>x</i>, <i>y</i>, and <i>z</i> vertex coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_VERTEX_4'>GL_MAP1_VERTEX_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
homogeneous
<i>x</i>,
<i>y</i>,
<i>z</i>, and
<i>w</i> vertex coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_COLOR_4'>GL_MAP2_COLOR_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate RGBA values.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_INDEX'>GL_MAP2_INDEX</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate color indices.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_NORMAL'>GL_MAP2_NORMAL</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate normals.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_1'>GL_MAP2_TEXTURE_COORD_1</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>
texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i> and
<i>t</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_3'>GL_MAP2_TEXTURE_COORD_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>, and
<i>r</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_4'>GL_MAP2_TEXTURE_COORD_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>x</i>, <i>y</i>, and <i>z</i> vertex coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
homogeneous
<i>x</i>,
<i>y</i>,
<i>z</i>, and
<i>w</i> vertex coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref>
</c><c>If enabled,
normal vectors specified with <ref resolved='predef::GL.glNormal'>glNormal</ref> are scaled to unit length
after transformation. See <ref resolved='predef::GL.glNormal'>glNormal</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref>
</c><c>If enabled,
draw points with proper filtering.
Otherwise,
draw aliased points.
See <ref resolved='predef::GL.glPointSize'>glPointSize</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref>
</c><c>If enabled, and if the polygon is rendered in
<ref resolved='predef::GL.GL_FILL'>GL_FILL</ref> mode, an offset is added to depth values of a polygon's
fragments before the depth comparison is performed. See
<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref>
</c><c>If enabled, and if the polygon is rendered in
<ref resolved='predef::GL.GL_LINE'>GL_LINE</ref> mode, an offset is added to depth values of a polygon's
fragments before the depth comparison is performed. See <ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref>
</c><c>If enabled, an offset is added to depth values of a polygon's fragments
before the depth comparison is performed, if the polygon is rendered in 
<ref resolved='predef::GL.GL_POINT'>GL_POINT</ref> mode. See 

<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref>
</c><c>If enabled, draw polygons with proper filtering.
Otherwise, draw aliased polygons. For correct anti-aliased polygons,
an alpha buffer is needed and the polygons must be sorted front to
back. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref>
</c><c>If enabled,
use the current polygon stipple pattern when rendering
polygons. See <ref>glPolygonStipple</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref>
</c><c>If enabled,
discard fragments that are outside the scissor rectangle. 
See <ref resolved='predef::GL.glScissor'>glScissor</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref>
</c><c>If enabled,
do stencil testing and update the stencil buffer. 
See <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>
</c><c>If enabled,
one-dimensional texturing is performed
(unless two-dimensional texturing is also enabled). See <ref>glTexImage1D</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>
</c><c>If enabled,
two-dimensional texturing is performed. See <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_Q'>GL_TEXTURE_GEN_Q</ref>
</c><c>If enabled,
the <i>q</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>q</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_R'>GL_TEXTURE_GEN_R</ref>
</c><c>If enabled,
the <i>r</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>r</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_S'>GL_TEXTURE_GEN_S</ref>
</c><c>If enabled,
the <i>s</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>s</i> texture coordinate is used. 
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_T'>GL_TEXTURE_GEN_T</ref>
</c><c>If enabled,
the <i>t</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>t</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r></matrix></p>
</text><group><param name='cap'/><text><p>Specifies a symbolic constant indicating a GL capability.</p>
</text></group><group><param name='cap'/><text><p>Specifies a symbolic constant indicating a GL capability.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>cap</i> is not one of the values
listed previously.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEnable'>glEnable</ref> or <ref resolved='predef::GL.glDisable'>glDisable</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDisable'>
<arguments><argument name='cap'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDisableClientState'><doc><text><p><ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>
enable or disable individual client-side capabilities. By default, all
client-side capabilities are disabled.
Both 
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref> take a
single argument, <i>cap</i>, which can assume one of the following
values: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref>
</c><c>If enabled, the color array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or 
<ref>glDrawElement</ref> is called. See
<ref>glColorPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_EDGE_FLAG_ARRAY'>GL_EDGE_FLAG_ARRAY</ref>
</c><c>If enabled, the edge flag array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is called. See
<ref>glEdgeFlagPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_INDEX_ARRAY'>GL_INDEX_ARRAY</ref>
</c><c>If enabled, the index array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or 
<ref>glDrawElements</ref> is called. See
<ref>glIndexPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_NORMAL_ARRAY'>GL_NORMAL_ARRAY</ref>
</c><c>If enabled, the normal array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is called. See
<ref>glNormalPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_COORD_ARRAY'>GL_TEXTURE_COORD_ARRAY</ref>
</c><c>If enabled, the texture coordinate array is enabled for writing and
used for rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is
called. See <ref>glTexCoordPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref>
</c><c>If enabled, the vertex array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or
<ref>glDrawElements</ref> is called. See
<ref>glVertexPointer</ref>. 
</c></r></matrix></p>
</text><group><param name='cap'/><text><p>Specifies the capability to enable.
Symbolic constants
<ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref>,
<ref resolved='predef::GL.GL_EDGE_FLAG_ARRAY'>GL_EDGE_FLAG_ARRAY</ref>,
<ref resolved='predef::GL.GL_INDEX_ARRAY'>GL_INDEX_ARRAY</ref>,
<ref resolved='predef::GL.GL_NORMAL_ARRAY'>GL_NORMAL_ARRAY</ref>,
<ref resolved='predef::GL.GL_TEXTURE_COORD_ARRAY'>GL_TEXTURE_COORD_ARRAY</ref>, and
<ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref>
are accepted.</p>
</text></group><group><param name='cap'/><text><p>Specifies the capability to disable.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>cap</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> is not allowed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the
corresponding <ref resolved='predef::GL.glEnd'>glEnd</ref>, but an error may or may not be generated. If
no error is generated, the behavior is undefined.</p>
</text></group></doc>
<method name='glDisableClientState'>
<arguments><argument name='cap'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glDrawBuffer'><doc><text><p>When colors are written to the frame buffer,
they are written into the color buffers specified by <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>.
The specifications are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_NONE'>GL_NONE</ref>
</c><c>No color buffers are written.
</c></r>
<r><c><ref resolved='predef::GL.GL_FRONT_LEFT'>GL_FRONT_LEFT</ref>
</c><c>Only the front left color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_FRONT_RIGHT'>GL_FRONT_RIGHT</ref>
</c><c>Only the front right color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_BACK_LEFT'>GL_BACK_LEFT</ref>
</c><c>Only the back left color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_BACK_RIGHT'>GL_BACK_RIGHT</ref>
</c><c>Only the back right color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>
</c><c>Only the front left and front right color buffers are written.
If there is no front right color buffer,
only the front left color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>
</c><c>Only the back left and back right color buffers are written.
If there is no back right color buffer,
only the back left color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_LEFT'>GL_LEFT</ref>
</c><c>Only the front left and back left color buffers are written.
If there is no back left color buffer,
only the front left color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_RIGHT'>GL_RIGHT</ref>
</c><c>Only the front right and back right color buffers are written.
If there is no back right color buffer,
only the front right color buffer is written.
</c></r>
<r><c><ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>
</c><c>All the front and back color buffers
(front left, front right, back left, back right)
are written.
If there are no back color buffers,
only the front left and front right color buffers are written.
If there are no right color buffers,
only the front left and back left color buffers are written.
If there are no right or back color buffers,
only the front left color buffer is written.
</c></r>
<r><c>GL_AUX<i>i</i>
</c><c>Only auxiliary color buffer <i>i</i> is written.
</c></r>
</matrix></p>
<p>If more than one color buffer is selected for drawing,
then blending or logical operations are computed and applied independently
for each color buffer and can produce different results in each buffer.</p>
<p>Monoscopic contexts include only 
.I left 
buffers, and stereoscopic contexts include both
.I left
and
.I right
buffers.
Likewise, single-buffered contexts include only
.I front
buffers, and double-buffered contexts include both 
.I front
and
.I back
buffers.
The context is selected at GL initialization.</p>
</text><group><param name='mode'/><text><p>Specifies up to four color buffers to be drawn into.
Symbolic constants
<ref resolved='predef::GL.GL_NONE'>GL_NONE</ref>, 
<ref resolved='predef::GL.GL_FRONT_LEFT'>GL_FRONT_LEFT</ref>,
<ref resolved='predef::GL.GL_FRONT_RIGHT'>GL_FRONT_RIGHT</ref>,
<ref resolved='predef::GL.GL_BACK_LEFT'>GL_BACK_LEFT</ref>,
<ref resolved='predef::GL.GL_BACK_RIGHT'>GL_BACK_RIGHT</ref>,
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>,
<ref resolved='predef::GL.GL_LEFT'>GL_LEFT</ref>,
<ref resolved='predef::GL.GL_RIGHT'>GL_RIGHT</ref>,
<ref resolved='predef::GL.GL_FRONT_AND_BACK'>GL_FRONT_AND_BACK</ref>, and
GL_AUX<i>i</i>,
where <i>i</i> is between 0 and ``<ref resolved='predef::GL.GL_AUX_BUFFERS'>GL_AUX_BUFFERS</ref>'' -1,
are accepted (<ref resolved='predef::GL.GL_AUX_BUFFERS'>GL_AUX_BUFFERS</ref> is not the upper limit; use <ref>glGet</ref>
to query the number of available aux buffers.)
The initial value is <ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref> for single-buffered contexts,
and <ref resolved='predef::GL.GL_BACK'>GL_BACK</ref> for double-buffered contexts.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if none of the buffers indicated
by <i>mode</i> exists.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glDrawBuffer'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEnable'><doc><text><p><ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> enable and disable various capabilities.
Use <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref> or <ref>glGet</ref> to determine the current setting
of any capability. The initial value for each capability with the
exception of <ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> is <ref resolved='predef::GL.GL_FALSE'>GL_FALSE</ref>. The initial value for
<ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref> is <ref resolved='predef::GL.GL_TRUE'>GL_TRUE</ref>. </p>
<p>Both <ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref> take a single argument, <i>cap</i>,
which can assume one of the following values:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_ALPHA_TEST'>GL_ALPHA_TEST</ref>
</c><c>If enabled,
do alpha testing. See
<ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_AUTO_NORMAL'>GL_AUTO_NORMAL</ref>
</c><c>If enabled,
generate normal vectors when either
<ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref> or
<ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref> is used to generate vertices. 
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_BLEND'>GL_BLEND</ref>
</c><c>If enabled,
blend the incoming RGBA color values with the values in the color
buffers. See <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>.
</c></r>
<r><c><ref>GL_CLIP_PLANE</ref><i>i</i>
</c><c>If enabled,
clip geometry against user-defined clipping plane <i>i</i>.
See <ref>glClipPlane</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref>
</c><c>If enabled,
apply the currently selected logical operation to the incoming RGBA
color and color buffer values. See <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_COLOR_MATERIAL'>GL_COLOR_MATERIAL</ref>
</c><c>If enabled,
have one or more material parameters track the current color.
See <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref>
</c><c>If enabled,
cull polygons based on their winding in window coordinates. 
See <ref resolved='predef::GL.glCullFace'>glCullFace</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_DEPTH_TEST'>GL_DEPTH_TEST</ref>
</c><c>If enabled,
do depth comparisons and update the depth buffer. Note that even if
the depth buffer exists and the depth mask is non-zero, the 
depth buffer is not updated if the depth test is disabled. See
<ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and 

<ref resolved='predef::GL.glDepthRange'>glDepthRange</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_DITHER'>GL_DITHER</ref>	
</c><c>If enabled,
dither color components or indices before they are written to the
color buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_FOG'>GL_FOG</ref>
</c><c>If enabled,
blend a fog color into the posttexturing color.
See <ref resolved='predef::GL.glFog'>glFog</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref>
</c><c>If enabled,
apply the currently selected logical operation to the incoming index and color
buffer indices. See 

<ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>.
</c></r>
<r><c><ref>GL_LIGHT</ref><i>i</i>
</c><c>If enabled,
include light <i>i</i> in the evaluation of the lighting
equation. See <ref resolved='predef::GL.glLightModel'>glLightModel</ref> and <ref resolved='predef::GL.glLight'>glLight</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LIGHTING'>GL_LIGHTING</ref>
</c><c>If enabled,
use the current lighting parameters to compute the vertex color or index.
Otherwise, simply associate the current color or index with each
vertex. See 

<ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, and <ref resolved='predef::GL.glLight'>glLight</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_SMOOTH'>GL_LINE_SMOOTH</ref>
</c><c>If enabled,
draw lines with correct filtering.
Otherwise,
draw aliased lines.
See <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_LINE_STIPPLE'>GL_LINE_STIPPLE</ref>
</c><c>If enabled,
use the current line stipple pattern when drawing lines. See
<ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_COLOR_4'>GL_MAP1_COLOR_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate RGBA values.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_INDEX'>GL_MAP1_INDEX</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate color indices.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_NORMAL'>GL_MAP1_NORMAL</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate normals.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_1'>GL_MAP1_TEXTURE_COORD_1</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>
texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_2'>GL_MAP1_TEXTURE_COORD_2</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i> and
<i>t</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_3'>GL_MAP1_TEXTURE_COORD_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>, and
<i>r</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_TEXTURE_COORD_4'>GL_MAP1_TEXTURE_COORD_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i> texture coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_VERTEX_3'>GL_MAP1_VERTEX_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>x</i>, <i>y</i>, and <i>z</i> vertex coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP1_VERTEX_4'>GL_MAP1_VERTEX_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh1</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
homogeneous
<i>x</i>,
<i>y</i>,
<i>z</i>, and
<i>w</i> vertex coordinates.
See <ref>glMap1</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_COLOR_4'>GL_MAP2_COLOR_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate RGBA values.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_INDEX'>GL_MAP2_INDEX</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate color indices.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_NORMAL'>GL_MAP2_NORMAL</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate normals.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_1'>GL_MAP2_TEXTURE_COORD_1</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>
texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_2'>GL_MAP2_TEXTURE_COORD_2</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i> and
<i>t</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_3'>GL_MAP2_TEXTURE_COORD_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>, and
<i>r</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_TEXTURE_COORD_4'>GL_MAP2_TEXTURE_COORD_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>s</i>,
<i>t</i>,
<i>r</i>, and
<i>q</i> texture coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_VERTEX_3'>GL_MAP2_VERTEX_3</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
<i>x</i>, <i>y</i>, and <i>z</i> vertex coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_MAP2_VERTEX_4'>GL_MAP2_VERTEX_4</ref>
</c><c>If enabled,
calls to
<ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref>,
<ref>glEvalMesh2</ref>, and
<ref resolved='predef::GL.glEvalPoint'>glEvalPoint</ref> generate
homogeneous
<i>x</i>,
<i>y</i>,
<i>z</i>, and
<i>w</i> vertex coordinates.
See <ref>glMap2</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_NORMALIZE'>GL_NORMALIZE</ref>
</c><c>If enabled,
normal vectors specified with <ref resolved='predef::GL.glNormal'>glNormal</ref> are scaled to unit length
after transformation. See <ref resolved='predef::GL.glNormal'>glNormal</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_POINT_SMOOTH'>GL_POINT_SMOOTH</ref>
</c><c>If enabled,
draw points with proper filtering.
Otherwise,
draw aliased points.
See <ref resolved='predef::GL.glPointSize'>glPointSize</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_FILL'>GL_POLYGON_OFFSET_FILL</ref>
</c><c>If enabled, and if the polygon is rendered in
<ref resolved='predef::GL.GL_FILL'>GL_FILL</ref> mode, an offset is added to depth values of a polygon's
fragments before the depth comparison is performed. See
<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_LINE'>GL_POLYGON_OFFSET_LINE</ref>
</c><c>If enabled, and if the polygon is rendered in
<ref resolved='predef::GL.GL_LINE'>GL_LINE</ref> mode, an offset is added to depth values of a polygon's
fragments before the depth comparison is performed. See <ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_OFFSET_POINT'>GL_POLYGON_OFFSET_POINT</ref>
</c><c>If enabled, an offset is added to depth values of a polygon's fragments
before the depth comparison is performed, if the polygon is rendered in 
<ref resolved='predef::GL.GL_POINT'>GL_POINT</ref> mode. See 

<ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_SMOOTH'>GL_POLYGON_SMOOTH</ref>
</c><c>If enabled, draw polygons with proper filtering.
Otherwise, draw aliased polygons. For correct anti-aliased polygons,
an alpha buffer is needed and the polygons must be sorted front to
back. 
</c></r>
<r><c><ref resolved='predef::GL.GL_POLYGON_STIPPLE'>GL_POLYGON_STIPPLE</ref>
</c><c>If enabled,
use the current polygon stipple pattern when rendering
polygons. See <ref>glPolygonStipple</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_SCISSOR_TEST'>GL_SCISSOR_TEST</ref>
</c><c>If enabled,
discard fragments that are outside the scissor rectangle. 
See <ref resolved='predef::GL.glScissor'>glScissor</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_STENCIL_TEST'>GL_STENCIL_TEST</ref>
</c><c>If enabled,
do stencil testing and update the stencil buffer. 
See <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_1D'>GL_TEXTURE_1D</ref>
</c><c>If enabled,
one-dimensional texturing is performed
(unless two-dimensional texturing is also enabled). See <ref>glTexImage1D</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_2D'>GL_TEXTURE_2D</ref>
</c><c>If enabled,
two-dimensional texturing is performed. See <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_Q'>GL_TEXTURE_GEN_Q</ref>
</c><c>If enabled,
the <i>q</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>q</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_R'>GL_TEXTURE_GEN_R</ref>
</c><c>If enabled,
the <i>r</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>r</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_S'>GL_TEXTURE_GEN_S</ref>
</c><c>If enabled,
the <i>s</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>s</i> texture coordinate is used. 
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_GEN_T'>GL_TEXTURE_GEN_T</ref>
</c><c>If enabled,
the <i>t</i> texture coordinate is computed using
the texture generation function defined with <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
Otherwise, the current <i>t</i> texture coordinate is used.
See <ref resolved='predef::GL.glTexGen'>glTexGen</ref>.
</c></r></matrix></p>
</text><group><param name='cap'/><text><p>Specifies a symbolic constant indicating a GL capability.</p>
</text></group><group><param name='cap'/><text><p>Specifies a symbolic constant indicating a GL capability.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>cap</i> is not one of the values
listed previously.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glEnable'>glEnable</ref> or <ref resolved='predef::GL.glDisable'>glDisable</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glEnable'>
<arguments><argument name='cap'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glEnableClientState'><doc><text><p><ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>
enable or disable individual client-side capabilities. By default, all
client-side capabilities are disabled.
Both 
<ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref> take a
single argument, <i>cap</i>, which can assume one of the following
values: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref>
</c><c>If enabled, the color array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or 
<ref>glDrawElement</ref> is called. See
<ref>glColorPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_EDGE_FLAG_ARRAY'>GL_EDGE_FLAG_ARRAY</ref>
</c><c>If enabled, the edge flag array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is called. See
<ref>glEdgeFlagPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_INDEX_ARRAY'>GL_INDEX_ARRAY</ref>
</c><c>If enabled, the index array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or 
<ref>glDrawElements</ref> is called. See
<ref>glIndexPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_NORMAL_ARRAY'>GL_NORMAL_ARRAY</ref>
</c><c>If enabled, the normal array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is called. See
<ref>glNormalPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE_COORD_ARRAY'>GL_TEXTURE_COORD_ARRAY</ref>
</c><c>If enabled, the texture coordinate array is enabled for writing and
used for rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or <ref>glDrawElements</ref> is
called. See <ref>glTexCoordPointer</ref>. 
</c></r>
<r><c><ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref>
</c><c>If enabled, the vertex array is enabled for writing and used during
rendering when <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> or
<ref>glDrawElements</ref> is called. See
<ref>glVertexPointer</ref>. 
</c></r></matrix></p>
</text><group><param name='cap'/><text><p>Specifies the capability to enable.
Symbolic constants
<ref resolved='predef::GL.GL_COLOR_ARRAY'>GL_COLOR_ARRAY</ref>,
<ref resolved='predef::GL.GL_EDGE_FLAG_ARRAY'>GL_EDGE_FLAG_ARRAY</ref>,
<ref resolved='predef::GL.GL_INDEX_ARRAY'>GL_INDEX_ARRAY</ref>,
<ref resolved='predef::GL.GL_NORMAL_ARRAY'>GL_NORMAL_ARRAY</ref>,
<ref resolved='predef::GL.GL_TEXTURE_COORD_ARRAY'>GL_TEXTURE_COORD_ARRAY</ref>, and
<ref resolved='predef::GL.GL_VERTEX_ARRAY'>GL_VERTEX_ARRAY</ref>
are accepted.</p>
</text></group><group><param name='cap'/><text><p>Specifies the capability to disable.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>cap</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref> is not allowed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref> and the
corresponding <ref resolved='predef::GL.glEnd'>glEnd</ref>, but an error may or may not be generated. If
no error is generated, the behavior is undefined.</p>
</text></group></doc>
<method name='glEnableClientState'>
<arguments><argument name='cap'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glFrontFace'><doc><text><p>In a scene composed entirely of opaque closed surfaces,
back-facing polygons are never visible.
Eliminating these invisible polygons has the obvious benefit
of speeding up the rendering of the image.
To enable and disable elimination of back-facing polygons, call <ref resolved='predef::GL.glEnable'>glEnable</ref>
and <ref resolved='predef::GL.glDisable'>glDisable</ref> with argument <ref resolved='predef::GL.GL_CULL_FACE'>GL_CULL_FACE</ref>.</p>
<p>The projection of a polygon to window coordinates is said to have
clockwise winding if an imaginary object following the path
from its first vertex,
its second vertex,
and so on,
to its last vertex,
and finally back to its first vertex,
moves in a clockwise direction about the interior of the polygon.
The polygon's winding is said to be counterclockwise if the imaginary
object following the same path moves in a counterclockwise direction
about the interior of the polygon.
<ref resolved='predef::GL.glFrontFace'>glFrontFace</ref> specifies whether polygons with clockwise winding in window coordinates,
or counterclockwise winding in window coordinates,
are taken to be front-facing.
Passing <ref resolved='predef::GL.GL_CCW'>GL_CCW</ref> to <i>mode</i> selects counterclockwise polygons as
front-facing;
<ref resolved='predef::GL.GL_CW'>GL_CW</ref> selects clockwise polygons as front-facing.
By default, counterclockwise polygons are taken to be front-facing.</p>
</text><group><param name='mode'/><text><p>Specifies the orientation of front-facing polygons.
<ref resolved='predef::GL.GL_CW'>GL_CW</ref> and <ref resolved='predef::GL.GL_CCW'>GL_CCW</ref> are accepted.
The initial value is <ref resolved='predef::GL.GL_CCW'>GL_CCW</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glFrontFace'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glLogicOp'><doc><text><p><ref resolved='predef::GL.glLogicOp'>glLogicOp</ref> specifies a logical operation that,
when enabled,
is applied between the incoming color index or RGBA color
and the color index or RGBA color at the corresponding location in the
frame buffer. 
To enable or disable the logical operation, call
<ref resolved='predef::GL.glEnable'>glEnable</ref> and <ref resolved='predef::GL.glDisable'>glDisable</ref>
using the symbolic constant <ref resolved='predef::GL.GL_COLOR_LOGIC_OP'>GL_COLOR_LOGIC_OP</ref> for RGBA mode or
<ref resolved='predef::GL.GL_INDEX_LOGIC_OP'>GL_INDEX_LOGIC_OP</ref> for color index mode. The initial value is
disabled for both operations.</p>
<p>.ne
.TS
center box ;
ci | ci
c | c .
opcode	resulting value
=
<ref resolved='predef::GL.GL_CLEAR'>GL_CLEAR</ref>	0
<ref resolved='predef::GL.GL_SET'>GL_SET</ref>	1
<ref resolved='predef::GL.GL_COPY'>GL_COPY</ref>	s
<ref resolved='predef::GL.GL_COPY_INVERTED'>GL_COPY_INVERTED</ref>	~s
<ref resolved='predef::GL.GL_NOOP'>GL_NOOP</ref>	d
<ref resolved='predef::GL.GL_INVERT'>GL_INVERT</ref>	~d
<ref resolved='predef::GL.GL_AND'>GL_AND</ref>	s &amp; d
<ref resolved='predef::GL.GL_NAND'>GL_NAND</ref>	~(s &amp; d)
<ref resolved='predef::GL.GL_OR'>GL_OR</ref>	s | d
<ref resolved='predef::GL.GL_NOR'>GL_NOR</ref>	~(s | d)
<ref resolved='predef::GL.GL_XOR'>GL_XOR</ref>	s ^ d
<ref resolved='predef::GL.GL_EQUIV'>GL_EQUIV</ref>	~(s ^ d)
<ref resolved='predef::GL.GL_AND_REVERSE'>GL_AND_REVERSE</ref>	s &amp; ~d
<ref resolved='predef::GL.GL_AND_INVERTED'>GL_AND_INVERTED</ref>	~s &amp; d
<ref resolved='predef::GL.GL_OR_REVERSE'>GL_OR_REVERSE</ref>	s | ~d
<ref resolved='predef::GL.GL_OR_INVERTED'>GL_OR_INVERTED</ref>	~s | d
.TE</p>
<p><i>opcode</i> is a symbolic constant chosen from the list above.
In the explanation of the logical operations,
<i>s</i> represents the incoming color index and
<i>d</i> represents the index in the frame buffer.
Standard C-language operators are used.
As these bitwise operators suggest,
the logical operation is applied independently to each bit pair of the
source and destination indices or colors.</p>
</text><group><param name='opcode'/><text><p>Specifies a symbolic constant that selects a logical operation.
The following symbols are accepted:
<ref resolved='predef::GL.GL_CLEAR'>GL_CLEAR</ref>,
<ref resolved='predef::GL.GL_SET'>GL_SET</ref>,
<ref resolved='predef::GL.GL_COPY'>GL_COPY</ref>,
<ref resolved='predef::GL.GL_COPY_INVERTED'>GL_COPY_INVERTED</ref>,
<ref resolved='predef::GL.GL_NOOP'>GL_NOOP</ref>,
<ref resolved='predef::GL.GL_INVERT'>GL_INVERT</ref>,
<ref resolved='predef::GL.GL_AND'>GL_AND</ref>,
<ref resolved='predef::GL.GL_NAND'>GL_NAND</ref>,
<ref resolved='predef::GL.GL_OR'>GL_OR</ref>,
<ref resolved='predef::GL.GL_NOR'>GL_NOR</ref>,
<ref resolved='predef::GL.GL_XOR'>GL_XOR</ref>,
<ref resolved='predef::GL.GL_EQUIV'>GL_EQUIV</ref>,
<ref resolved='predef::GL.GL_AND_REVERSE'>GL_AND_REVERSE</ref>,
<ref resolved='predef::GL.GL_AND_INVERTED'>GL_AND_INVERTED</ref>,
<ref resolved='predef::GL.GL_OR_REVERSE'>GL_OR_REVERSE</ref>, and
<ref resolved='predef::GL.GL_OR_INVERTED'>GL_OR_INVERTED</ref>. The initial value is <ref resolved='predef::GL.GL_COPY'>GL_COPY</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>opcode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glLogicOp'>
<arguments><argument name='opcode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glMatrixMode'><doc><text><p><ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref> sets the current matrix mode.
<i>mode</i> can assume one of three values:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref>
</c><c>Applies subsequent matrix operations to the modelview matrix stack.
</c></r>
<r><c><ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>
</c><c>Applies subsequent matrix operations to the projection matrix stack.
</c></r>
<r><c><ref resolved='predef::GL.GL_TEXTURE'>GL_TEXTURE</ref>
</c><c>Applies subsequent matrix operations to the texture matrix stack.
</c></r>
</matrix></p>
<p>To find out which matrix stack is currently the target of all matrix
operations, call <ref>glGet</ref> with argument <ref resolved='predef::GL.GL_MATRIX_MODE'>GL_MATRIX_MODE</ref>. The initial
value is <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref>.</p>
</text><group><param name='mode'/><text><p>Specifies which matrix stack is the target
for subsequent matrix operations.
Three values are accepted:
<ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref>,
<ref resolved='predef::GL.GL_PROJECTION'>GL_PROJECTION</ref>, and
<ref resolved='predef::GL.GL_TEXTURE'>GL_TEXTURE</ref>.
The initial value is <ref resolved='predef::GL.GL_MODELVIEW'>GL_MODELVIEW</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not an accepted value.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glMatrixMode'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glReadBuffer'><doc><text><p><ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> specifies a color buffer as the source for subsequent
<ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>,
<ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, and
<ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> commands. 
<i>mode</i> accepts one of twelve or more predefined values.
(<ref resolved='predef::GL.GL_AUX0'>GL_AUX0</ref> through <ref resolved='predef::GL.GL_AUX3'>GL_AUX3</ref> are always defined.)
In a fully configured system,
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_LEFT'>GL_LEFT</ref>, and
<ref resolved='predef::GL.GL_FRONT_LEFT'>GL_FRONT_LEFT</ref> all name the front left buffer,
<ref resolved='predef::GL.GL_FRONT_RIGHT'>GL_FRONT_RIGHT</ref> and
<ref resolved='predef::GL.GL_RIGHT'>GL_RIGHT</ref> name the front right buffer, and
<ref resolved='predef::GL.GL_BACK_LEFT'>GL_BACK_LEFT</ref> and
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref> name the back left buffer.</p>
<p>Nonstereo double-buffered configurations have only a front left and a
back left buffer.
Single-buffered configurations have a front left and a front right 
buffer if stereo, and only a front left buffer if nonstereo.
It is an error to specify a nonexistent buffer to <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>.</p>
<p><i>mode</i> is initially <ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref> in single-buffered configurations,
and <ref resolved='predef::GL.GL_BACK'>GL_BACK</ref> in double-buffered configurations.</p>
</text><group><param name='mode'/><text><p>Specifies a color buffer.
Accepted values are
<ref resolved='predef::GL.GL_FRONT_LEFT'>GL_FRONT_LEFT</ref>,
<ref resolved='predef::GL.GL_FRONT_RIGHT'>GL_FRONT_RIGHT</ref>,
<ref resolved='predef::GL.GL_BACK_LEFT'>GL_BACK_LEFT</ref>,
<ref resolved='predef::GL.GL_BACK_RIGHT'>GL_BACK_RIGHT</ref>,
<ref resolved='predef::GL.GL_FRONT'>GL_FRONT</ref>,
<ref resolved='predef::GL.GL_BACK'>GL_BACK</ref>,
<ref resolved='predef::GL.GL_LEFT'>GL_LEFT</ref>,
<ref resolved='predef::GL.GL_RIGHT'>GL_RIGHT</ref>, and
GL_AUX<i>i</i>,
where <i>i</i> is between 0 and <ref resolved='predef::GL.GL_AUX_BUFFERS'>GL_AUX_BUFFERS</ref> -1.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not one of the twelve
(or more) accepted values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <i>mode</i> specifies a buffer
that does not exist.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glReadBuffer'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glRenderMode'><doc><text><p><ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> sets the rasterization mode.
It takes one argument,
<i>mode</i>,
which can assume one of three predefined values: </p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref>
</c><c>Render mode. Primitives are rasterized,
producing pixel fragments,
which are written into the frame buffer.
This is the normal mode
and also the default mode.
</c></r>
<r><c><ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> 
</c><c>Selection mode.
No pixel fragments are produced,
and no change to the frame buffer contents is made.
Instead,
a record of the names of primitives that would have been drawn
if the render mode had been <ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref> is returned in a select buffer,
which must be created (see <ref>glSelectBuffer</ref>) before selection mode 
is entered.
</c></r>
<r><c><ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref>
</c><c>Feedback mode.
No pixel fragments are produced,
and no change to the frame buffer contents is made.
Instead,
the coordinates and attributes of vertices that would have been drawn
if the render mode had been <ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref> is returned in a feedback buffer,
which must be created (see <ref>glFeedbackBuffer</ref>) before feedback mode
is entered.
</c></r>
</matrix></p>
<p>The return value of <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> is determined by the render mode at the time
<ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> is called,
rather than by <i>mode</i>.
The values returned for the three render modes are as follows:</p>
<p><matrix>
<r><c><ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref>
</c><c>0.
</c></r>
<r><c><ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>
</c><c>The number of hit records transferred to the select buffer.
</c></r>
<r><c><ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref>
</c><c>The number of values (not vertices) transferred to the feedback buffer.
</c></r>
</matrix></p>
<p>See the <ref>glSelectBuffer</ref> and <ref>glFeedbackBuffer</ref> reference pages for
more details concerning selection and feedback operation.</p>
</text><group><param name='mode'/><text><p>Specifies the rasterization mode.
Three values are accepted:
<ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref>,
<ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>, and
<ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref>.
The initial value is <ref resolved='predef::GL.GL_RENDER'>GL_RENDER</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is not one of the three
accepted values.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref>glSelectBuffer</ref> is called
while the render mode is <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref>,
or if <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> is called with argument <ref resolved='predef::GL.GL_SELECT'>GL_SELECT</ref> before
<ref>glSelectBuffer</ref> is called at least once.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref>glFeedbackBuffer</ref> is called
while the render mode is <ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref>,
or if <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref> is called with argument <ref resolved='predef::GL.GL_FEEDBACK'>GL_FEEDBACK</ref> before
<ref>glFeedbackBuffer</ref> is called at least once.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glRenderMode'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glShadeModel'><doc><text><p>GL primitives can have either flat or smooth shading.
Smooth shading,
the default,
causes the computed colors of vertices to be interpolated as the
primitive is rasterized,
typically assigning different colors to each resulting pixel fragment.
Flat shading selects the computed color of just one vertex
and assigns it to all the pixel fragments
generated by rasterizing a single primitive.
In either case, the computed color of a vertex is the result of
lighting if lighting is enabled,
or it is the current color at the time the vertex was specified if
lighting is disabled. </p>
<p>Flat and smooth shading are indistinguishable for points.
Starting when <ref resolved='predef::GL.glBegin'>glBegin</ref> is issued and counting vertices and
primitives from 1, the GL gives each flat-shaded line segment i the
computed color of vertex i + 1, its second vertex.
Counting similarly from 1,
the GL gives each flat-shaded polygon the computed color of the vertex listed
in the following table.
This is the last vertex to specify the polygon in all cases except single
polygons,
where the first vertex specifies the flat-shaded color.
.sp
.TS
center box;
l | c .
<i>primitive type of polygon</i> i	<i>vertex</i>
=
Single polygon ( i == 1 )	1
Triangle strip	i + 2
Triangle fan	i + 2
Independent triangle	 3 i
Quad strip	2 i + 2
Independent quad 	 4 i 
.TE
.sp
Flat and smooth shading are specified by <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref> with <i>mode</i> set to
<ref resolved='predef::GL.GL_FLAT'>GL_FLAT</ref> and <ref resolved='predef::GL.GL_SMOOTH'>GL_SMOOTH</ref>, respectively.</p>
</text><group><param name='mode'/><text><p>Specifies a symbolic value representing a shading technique.
Accepted values are <ref resolved='predef::GL.GL_FLAT'>GL_FLAT</ref> and <ref resolved='predef::GL.GL_SMOOTH'>GL_SMOOTH</ref>.
The initial value is <ref resolved='predef::GL.GL_SMOOTH'>GL_SMOOTH</ref>.</p>
</text></group><group><throws/><text><p><ref resolved='predef::GL.GL_INVALID_ENUM'>GL_INVALID_ENUM</ref> is generated if <i>mode</i> is any value other than
<ref resolved='predef::GL.GL_FLAT'>GL_FLAT</ref> or <ref resolved='predef::GL.GL_SMOOTH'>GL_SMOOTH</ref>.</p>
<p><ref resolved='predef::GL.GL_INVALID_OPERATION'>GL_INVALID_OPERATION</ref> is generated if <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref>
is executed between the execution of <ref resolved='predef::GL.glBegin'>glBegin</ref>
and the corresponding execution of <ref resolved='predef::GL.glEnd'>glEnd</ref>.</p>
</text></group></doc>
<method name='glShadeModel'>
<arguments><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_2D'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_2D'><source-position first-line='8605' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_2_BYTES'><doc><text><p>Used in <ref>glCallLists</ref></p>
</text></doc>
<constant name='GL_2_BYTES'><source-position first-line='8609' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_3D'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_3D'><source-position first-line='8613' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_3D_COLOR'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_3D_COLOR'><source-position first-line='8617' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_3D_COLOR_TEXTURE'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_3D_COLOR_TEXTURE'><source-position first-line='8621' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_3_BYTES'><doc><text><p>Used in <ref>glCallLists</ref></p>
</text></doc>
<constant name='GL_3_BYTES'><source-position first-line='8625' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_4D_COLOR_TEXTURE'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_4D_COLOR_TEXTURE'><source-position first-line='8629' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_4_BYTES'><doc><text><p>Used in <ref>glCallLists</ref></p>
</text></doc>
<constant name='GL_4_BYTES'><source-position first-line='8633' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ABGR_EXT'><doc/>
<constant name='GL_ABGR_EXT'><source-position first-line='8637' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_ACCUM'><source-position first-line='8640' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_ALPHA_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ACCUM_ALPHA_BITS'><source-position first-line='8644' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_BLUE_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ACCUM_BLUE_BITS'><source-position first-line='8648' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_BUFFER_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_ACCUM_BUFFER_BIT'><source-position first-line='8652' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_CLEAR_VALUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ACCUM_CLEAR_VALUE'><source-position first-line='8656' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_GREEN_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ACCUM_GREEN_BITS'><source-position first-line='8660' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ACCUM_RED_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ACCUM_RED_BITS'><source-position first-line='8664' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ADD'><doc><text><p>Used in <ref resolved='predef::GL.glAccum'>glAccum</ref></p>
</text></doc>
<constant name='GL_ADD'><source-position first-line='8668' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALL_ATTRIB_BITS'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_ALL_ATTRIB_BITS'><source-position first-line='8672' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_ALPHA'><source-position first-line='8676' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_ALPHA12'><source-position first-line='8680' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_ALPHA16'><source-position first-line='8684' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_ALPHA4'><source-position first-line='8688' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_ALPHA8'><source-position first-line='8692' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_BIAS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ALPHA_BIAS'><source-position first-line='8696' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ALPHA_BITS'><source-position first-line='8700' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_SCALE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ALPHA_SCALE'><source-position first-line='8704' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_TEST'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref></p>
</text></doc>
<constant name='GL_ALPHA_TEST'><source-position first-line='8708' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_TEST_FUNC'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ALPHA_TEST_FUNC'><source-position first-line='8712' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALPHA_TEST_REF'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ALPHA_TEST_REF'><source-position first-line='8716' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ALWAYS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_ALWAYS'><source-position first-line='8720' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AMBIENT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref>glGetLight</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glLight'>glLight</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_AMBIENT'><source-position first-line='8724' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AMBIENT_AND_DIFFUSE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_AMBIENT_AND_DIFFUSE'><source-position first-line='8728' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AND'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_AND'><source-position first-line='8732' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AND_INVERTED'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_AND_INVERTED'><source-position first-line='8736' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AND_REVERSE'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_AND_REVERSE'><source-position first-line='8740' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ATTRIB_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ATTRIB_STACK_DEPTH'><source-position first-line='8744' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUTO_NORMAL'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_AUTO_NORMAL'><source-position first-line='8748' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUX0'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref></p>
</text></doc>
<constant name='GL_AUX0'><source-position first-line='8752' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUX1'><doc/>
<constant name='GL_AUX1'><source-position first-line='8756' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUX2'><doc/>
<constant name='GL_AUX2'><source-position first-line='8759' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUX3'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref></p>
</text></doc>
<constant name='GL_AUX3'><source-position first-line='8762' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AUX_BUFFERS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_AUX_BUFFERS'><source-position first-line='8766' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_AVERAGE_EXT'><doc/>
<constant name='GL_AVERAGE_EXT'><source-position first-line='8770' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BACK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_BACK'><source-position first-line='8773' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BACK_LEFT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_BACK_LEFT'><source-position first-line='8777' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BACK_RIGHT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_BACK_RIGHT'><source-position first-line='8781' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BGR'><doc/>
<constant name='GL_BGR'><source-position first-line='8785' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BGRA'><doc/>
<constant name='GL_BGRA'><source-position first-line='8788' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BITMAP'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glFeedbackBuffer</ref>, <ref>glGetPolygonStipple</ref>, <ref>glBitmap</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_BITMAP'><source-position first-line='8791' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BITMAP_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_BITMAP_TOKEN'><source-position first-line='8795' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLEND'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glGetIntegerv</ref>, <ref>glBlendColorEXT</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLEND'><source-position first-line='8799' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLEND_COLOR_EXT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glBlendColorEXT</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLEND_COLOR_EXT'><source-position first-line='8803' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLEND_DST'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLEND_DST'><source-position first-line='8807' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLEND_EQUATION_EXT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLEND_EQUATION_EXT'><source-position first-line='8811' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLEND_SRC'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLEND_SRC'><source-position first-line='8815' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_BLUE'><source-position first-line='8819' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLUE_BIAS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLUE_BIAS'><source-position first-line='8823' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLUE_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLUE_BITS'><source-position first-line='8827' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BLUE_SCALE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_BLUE_SCALE'><source-position first-line='8831' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_BYTE'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_BYTE'><source-position first-line='8835' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_C3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_C3F_V3F'><source-position first-line='8839' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_C4F_N3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_C4F_N3F_V3F'><source-position first-line='8843' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_C4UB_V2F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_C4UB_V2F'><source-position first-line='8847' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_C4UB_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_C4UB_V3F'><source-position first-line='8851' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CCW'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref></p>
</text></doc>
<constant name='GL_CCW'><source-position first-line='8855' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLAMP'><doc><text><p>Used in <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_CLAMP'><source-position first-line='8859' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLEAR'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_CLEAR'><source-position first-line='8863' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIENT_ALL_ATTRIB_BITS'><doc><text><p>Used in <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> and <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref></p>
</text></doc>
<constant name='GL_CLIENT_ALL_ATTRIB_BITS'><source-position first-line='8867' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIENT_ATTRIB_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_CLIENT_ATTRIB_STACK_DEPTH'><source-position first-line='8871' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIENT_PIXEL_STORE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> and <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref></p>
</text></doc>
<constant name='GL_CLIENT_PIXEL_STORE_BIT'><source-position first-line='8875' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIENT_VERTEX_ARRAY_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref> and <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref></p>
</text></doc>
<constant name='GL_CLIENT_VERTEX_ARRAY_BIT'><source-position first-line='8879' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE0'><doc/>
<constant name='GL_CLIP_PLANE0'><source-position first-line='8883' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE1'><doc/>
<constant name='GL_CLIP_PLANE1'><source-position first-line='8886' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE2'><doc/>
<constant name='GL_CLIP_PLANE2'><source-position first-line='8889' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE3'><doc/>
<constant name='GL_CLIP_PLANE3'><source-position first-line='8892' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE4'><doc/>
<constant name='GL_CLIP_PLANE4'><source-position first-line='8895' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CLIP_PLANE5'><doc/>
<constant name='GL_CLIP_PLANE5'><source-position first-line='8898' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COEFF'><doc><text><p>Used in <ref>glGetMap</ref></p>
</text></doc>
<constant name='GL_COEFF'><source-position first-line='8901' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glPixelTransfer</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetPolygonStipple</ref>, <ref>glBitmap</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref>, <ref>glGetMaterial</ref>, <ref resolved='predef::GL.glClear'>glClear</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_COLOR'><source-position first-line='8905' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_COLOR_ARRAY'><source-position first-line='8909' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_COLOR_ARRAY_POINTER'><source-position first-line='8913' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_ARRAY_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_ARRAY_SIZE'><source-position first-line='8917' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_ARRAY_STRIDE'><source-position first-line='8921' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_ARRAY_TYPE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_ARRAY_TYPE'><source-position first-line='8925' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_BUFFER_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_COLOR_BUFFER_BIT'><source-position first-line='8929' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_CLEAR_VALUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_CLEAR_VALUE'><source-position first-line='8933' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_INDEX'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glPixelTransfer</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetPolygonStipple</ref>, <ref>glBitmap</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref>, <ref>glGetMaterial</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_COLOR_INDEX'><source-position first-line='8937' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_INDEXES'><doc><text><p>Used in <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_COLOR_INDEXES'><source-position first-line='8941' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_LOGIC_OP'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_LOGIC_OP'><source-position first-line='8945' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_MATERIAL'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_MATERIAL'><source-position first-line='8949' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_MATERIAL_FACE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_MATERIAL_FACE'><source-position first-line='8953' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_MATERIAL_PARAMETER'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_MATERIAL_PARAMETER'><source-position first-line='8957' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_ALPHA_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_ALPHA_SIZE_SGI'><source-position first-line='8961' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_BIAS_SGI'><doc/>
<constant name='GL_COLOR_TABLE_BIAS_SGI'><source-position first-line='8964' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_BLUE_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_BLUE_SIZE_SGI'><source-position first-line='8967' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_FORMAT_SGI'><doc/>
<constant name='GL_COLOR_TABLE_FORMAT_SGI'><source-position first-line='8970' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_GREEN_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_GREEN_SIZE_SGI'><source-position first-line='8973' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_INTENSITY_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_INTENSITY_SIZE_SGI'><source-position first-line='8976' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_LUMINANCE_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_LUMINANCE_SIZE_SGI'><source-position first-line='8979' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_RED_SIZE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_RED_SIZE_SGI'><source-position first-line='8982' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_SCALE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_SCALE_SGI'><source-position first-line='8985' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_SGI'><doc/>
<constant name='GL_COLOR_TABLE_SGI'><source-position first-line='8988' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_TABLE_WIDTH_SGI'><doc/>
<constant name='GL_COLOR_TABLE_WIDTH_SGI'><source-position first-line='8991' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COLOR_WRITEMASK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_COLOR_WRITEMASK'><source-position first-line='8994' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COMPILE'><doc><text><p>Used in <ref resolved='predef::GL.glNewList'>glNewList</ref> and <ref resolved='predef::GL.glEndList'>glEndList</ref></p>
</text></doc>
<constant name='GL_COMPILE'><source-position first-line='8998' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COMPILE_AND_EXECUTE'><doc><text><p>Used in <ref resolved='predef::GL.glNewList'>glNewList</ref> and <ref resolved='predef::GL.glEndList'>glEndList</ref></p>
</text></doc>
<constant name='GL_COMPILE_AND_EXECUTE'><source-position first-line='9002' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COMPRESSED_GEOM_ACCELERATED_SUNX'><doc/>
<constant name='GL_COMPRESSED_GEOM_ACCELERATED_SUNX'><source-position first-line='9006' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COMPRESSED_GEOM_VERSION_SUNX'><doc/>
<constant name='GL_COMPRESSED_GEOM_VERSION_SUNX'><source-position first-line='9009' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONSTANT_ALPHA_EXT'><doc/>
<constant name='GL_CONSTANT_ALPHA_EXT'><source-position first-line='9012' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONSTANT_ATTENUATION'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_CONSTANT_ATTENUATION'><source-position first-line='9015' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONSTANT_BORDER_HP'><doc/>
<constant name='GL_CONSTANT_BORDER_HP'><source-position first-line='9019' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONSTANT_COLOR_EXT'><doc/>
<constant name='GL_CONSTANT_COLOR_EXT'><source-position first-line='9022' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_1D_EXT'><doc/>
<constant name='GL_CONVOLUTION_1D_EXT'><source-position first-line='9025' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_2D_EXT'><doc/>
<constant name='GL_CONVOLUTION_2D_EXT'><source-position first-line='9028' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_BORDER_COLOR_HP'><doc/>
<constant name='GL_CONVOLUTION_BORDER_COLOR_HP'><source-position first-line='9031' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_BORDER_MODE_EXT'><doc/>
<constant name='GL_CONVOLUTION_BORDER_MODE_EXT'><source-position first-line='9034' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_FILTER_BIAS_EXT'><doc/>
<constant name='GL_CONVOLUTION_FILTER_BIAS_EXT'><source-position first-line='9037' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_FILTER_SCALE_EXT'><doc/>
<constant name='GL_CONVOLUTION_FILTER_SCALE_EXT'><source-position first-line='9040' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_FORMAT_EXT'><doc/>
<constant name='GL_CONVOLUTION_FORMAT_EXT'><source-position first-line='9043' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_HEIGHT_EXT'><doc/>
<constant name='GL_CONVOLUTION_HEIGHT_EXT'><source-position first-line='9046' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CONVOLUTION_WIDTH_EXT'><doc/>
<constant name='GL_CONVOLUTION_WIDTH_EXT'><source-position first-line='9049' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COPY'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_COPY'><source-position first-line='9052' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COPY_INVERTED'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_COPY_INVERTED'><source-position first-line='9056' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_COPY_PIXEL_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_COPY_PIXEL_TOKEN'><source-position first-line='9060' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CUBIC_EXT'><doc/>
<constant name='GL_CUBIC_EXT'><source-position first-line='9064' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CULL_FACE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref></p>
</text></doc>
<constant name='GL_CULL_FACE'><source-position first-line='9067' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CULL_FACE_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_CULL_FACE_MODE'><source-position first-line='9071' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_CURRENT_BIT'><source-position first-line='9075' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_COLOR'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_COLOR'><source-position first-line='9079' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_INDEX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_INDEX'><source-position first-line='9083' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_NORMAL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_CURRENT_NORMAL'><source-position first-line='9087' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_COLOR'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_COLOR'><source-position first-line='9091' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_DISTANCE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_DISTANCE'><source-position first-line='9095' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_INDEX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_INDEX'><source-position first-line='9099' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_POSITION'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_POSITION'><source-position first-line='9103' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_POSITION_VALID'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_POSITION_VALID'><source-position first-line='9107' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_RASTER_TEXTURE_COORDS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_RASTER_TEXTURE_COORDS'><source-position first-line='9111' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CURRENT_TEXTURE_COORDS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref></p>
</text></doc>
<constant name='GL_CURRENT_TEXTURE_COORDS'><source-position first-line='9115' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_CW'><doc><text><p>Used in <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref></p>
</text></doc>
<constant name='GL_CW'><source-position first-line='9119' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DECAL'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref></p>
</text></doc>
<constant name='GL_DECAL'><source-position first-line='9123' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DECR'><doc><text><p>Used in <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_DECR'><source-position first-line='9127' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>, <ref>glTexImage1D</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_DEPTH'><source-position first-line='9131' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_BIAS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_DEPTH_BIAS'><source-position first-line='9135' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DEPTH_BITS'><source-position first-line='9139' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_BUFFER_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_DEPTH_BUFFER_BIT'><source-position first-line='9143' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_CLEAR_VALUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DEPTH_CLEAR_VALUE'><source-position first-line='9147' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_COMPONENT'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetTexImage</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_DEPTH_COMPONENT'><source-position first-line='9151' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_FUNC'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DEPTH_FUNC'><source-position first-line='9155' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_RANGE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DEPTH_RANGE'><source-position first-line='9159' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_SCALE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_DEPTH_SCALE'><source-position first-line='9163' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_TEST'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref></p>
</text></doc>
<constant name='GL_DEPTH_TEST'><source-position first-line='9167' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DEPTH_WRITEMASK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DEPTH_WRITEMASK'><source-position first-line='9171' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DIFFUSE'><doc><text><p>Used in <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLight'>glLight</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_DIFFUSE'><source-position first-line='9175' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DITHER'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DITHER'><source-position first-line='9179' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DOMAIN'><doc><text><p>Used in <ref>glGetMap</ref></p>
</text></doc>
<constant name='GL_DOMAIN'><source-position first-line='9183' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DONT_CARE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_DONT_CARE'><source-position first-line='9187' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DOUBLE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glVertexPointer</ref>, <ref>glColorPointer</ref>, <ref>glNormalPointer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glTexCoordPointer</ref> and <ref>glIndexPointer</ref></p>
</text></doc>
<constant name='GL_DOUBLE'><source-position first-line='9191' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DOUBLEBUFFER'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DOUBLEBUFFER'><source-position first-line='9195' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DRAW_BUFFER'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_DRAW_BUFFER'><source-position first-line='9199' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DRAW_PIXEL_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_DRAW_PIXEL_TOKEN'><source-position first-line='9203' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DST_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_DST_ALPHA'><source-position first-line='9207' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_DST_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_DST_COLOR'><source-position first-line='9211' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EDGE_FLAG'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glEdgeFlagPointer</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_EDGE_FLAG'><source-position first-line='9215' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EDGE_FLAG_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glEdgeFlagPointer</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_EDGE_FLAG_ARRAY'><source-position first-line='9219' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EDGE_FLAG_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_EDGE_FLAG_ARRAY_POINTER'><source-position first-line='9223' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EDGE_FLAG_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_EDGE_FLAG_ARRAY_STRIDE'><source-position first-line='9227' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EMISSION'><doc><text><p>Used in <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_EMISSION'><source-position first-line='9231' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ENABLE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_ENABLE_BIT'><source-position first-line='9235' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EQUAL'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_EQUAL'><source-position first-line='9239' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EQUIV'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_EQUIV'><source-position first-line='9243' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EVAL_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_EVAL_BIT'><source-position first-line='9247' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXP'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_EXP'><source-position first-line='9251' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXP2'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref></p>
</text></doc>
<constant name='GL_EXP2'><source-position first-line='9255' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXTENSIONS'><doc><text><p>Used in <ref resolved='predef::GL.glGetString'>glGetString</ref></p>
</text></doc>
<constant name='GL_EXTENSIONS'><source-position first-line='9259' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_abgr'><doc/>
<constant name='GL_EXT_abgr'><source-position first-line='9263' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_blend_color'><doc/>
<constant name='GL_EXT_blend_color'><source-position first-line='9266' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_blend_minmax'><doc/>
<constant name='GL_EXT_blend_minmax'><source-position first-line='9269' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_blend_subtract'><doc/>
<constant name='GL_EXT_blend_subtract'><source-position first-line='9272' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_convolution'><doc/>
<constant name='GL_EXT_convolution'><source-position first-line='9275' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_histogram'><doc/>
<constant name='GL_EXT_histogram'><source-position first-line='9278' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_pixel_transform'><doc/>
<constant name='GL_EXT_pixel_transform'><source-position first-line='9281' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_rescale_normal'><doc/>
<constant name='GL_EXT_rescale_normal'><source-position first-line='9284' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EXT_texture3D'><doc/>
<constant name='GL_EXT_texture3D'><source-position first-line='9287' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EYE_LINEAR'><doc><text><p>Used in <ref>glGetTexGen</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_EYE_LINEAR'><source-position first-line='9290' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_EYE_PLANE'><doc><text><p>Used in <ref>glGetTexGen</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_EYE_PLANE'><source-position first-line='9294' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FALSE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glDepthMask'>glDepthMask</ref>, <ref resolved='predef::GL.glIsList'>glIsList</ref>, <ref>glAreTexturesResident</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glColorMask'>glColorMask</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glEdgeFlagv</ref></p>
</text></doc>
<constant name='GL_FALSE'><source-position first-line='9298' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FASTEST'><doc><text><p>Used in <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_FASTEST'><source-position first-line='9302' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FEEDBACK'><doc><text><p>Used in <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref resolved='predef::GL.glPassThrough'>glPassThrough</ref>, <ref>glGetPointerv</ref> and <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_FEEDBACK'><source-position first-line='9306' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FEEDBACK_BUFFER_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_FEEDBACK_BUFFER_POINTER'><source-position first-line='9310' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FEEDBACK_BUFFER_SIZE'><doc/>
<constant name='GL_FEEDBACK_BUFFER_SIZE'><source-position first-line='9314' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FEEDBACK_BUFFER_TYPE'><doc/>
<constant name='GL_FEEDBACK_BUFFER_TYPE'><source-position first-line='9317' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FILL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_FILL'><source-position first-line='9320' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FLAT'><doc><text><p>Used in <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref></p>
</text></doc>
<constant name='GL_FLAT'><source-position first-line='9324' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FLOAT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glVertexPointer</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexCoordPointer</ref>, <ref>glIndexPointer</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_FLOAT'><source-position first-line='9328' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_FOG'><source-position first-line='9332' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_FOG_BIT'><source-position first-line='9336' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_COLOR'><source-position first-line='9340' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_DENSITY'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_DENSITY'><source-position first-line='9344' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_END'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_END'><source-position first-line='9348' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_HINT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_FOG_HINT'><source-position first-line='9352' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_INDEX'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_INDEX'><source-position first-line='9356' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_MODE'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_MODE'><source-position first-line='9360' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FOG_START'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FOG_START'><source-position first-line='9364' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FRONT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_FRONT'><source-position first-line='9368' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FRONT_AND_BACK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_FRONT_AND_BACK'><source-position first-line='9372' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FRONT_FACE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FRONT_FACE'><source-position first-line='9376' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FRONT_LEFT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_FRONT_LEFT'><source-position first-line='9380' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FRONT_RIGHT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_FRONT_RIGHT'><source-position first-line='9384' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FUNC_ADD_EXT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_FUNC_ADD_EXT'><source-position first-line='9388' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FUNC_REVERSE_SUBTRACT_EXT'><doc/>
<constant name='GL_FUNC_REVERSE_SUBTRACT_EXT'><source-position first-line='9392' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_FUNC_SUBTRACT_EXT'><doc/>
<constant name='GL_FUNC_SUBTRACT_EXT'><source-position first-line='9395' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GEQUAL'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_GEQUAL'><source-position first-line='9398' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GREATER'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_GREATER'><source-position first-line='9402' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GREEN'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_GREEN'><source-position first-line='9406' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GREEN_BIAS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_GREEN_BIAS'><source-position first-line='9410' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GREEN_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_GREEN_BITS'><source-position first-line='9414' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_GREEN_SCALE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_GREEN_SCALE'><source-position first-line='9418' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HINT_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_HINT_BIT'><source-position first-line='9422' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_ALPHA_SIZE_EXT'><doc/>
<constant name='GL_HISTOGRAM_ALPHA_SIZE_EXT'><source-position first-line='9426' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_BLUE_SIZE_EXT'><doc/>
<constant name='GL_HISTOGRAM_BLUE_SIZE_EXT'><source-position first-line='9429' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_EXT'><doc/>
<constant name='GL_HISTOGRAM_EXT'><source-position first-line='9432' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_FORMAT_EXT'><doc/>
<constant name='GL_HISTOGRAM_FORMAT_EXT'><source-position first-line='9435' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_GREEN_SIZE_EXT'><doc/>
<constant name='GL_HISTOGRAM_GREEN_SIZE_EXT'><source-position first-line='9438' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_LUMINANCE_SIZE_EXT'><doc/>
<constant name='GL_HISTOGRAM_LUMINANCE_SIZE_EXT'><source-position first-line='9441' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_RED_SIZE_EXT'><doc/>
<constant name='GL_HISTOGRAM_RED_SIZE_EXT'><source-position first-line='9444' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_SINK_EXT'><doc/>
<constant name='GL_HISTOGRAM_SINK_EXT'><source-position first-line='9447' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HISTOGRAM_WIDTH_EXT'><doc/>
<constant name='GL_HISTOGRAM_WIDTH_EXT'><source-position first-line='9450' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HP_convolution_border_modes'><doc/>
<constant name='GL_HP_convolution_border_modes'><source-position first-line='9453' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_HP_occlusion_test'><doc/>
<constant name='GL_HP_occlusion_test'><source-position first-line='9456' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_IGNORE_BORDER_HP'><doc/>
<constant name='GL_IGNORE_BORDER_HP'><source-position first-line='9459' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INCR'><doc><text><p>Used in <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_INCR'><source-position first-line='9462' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glIndexPointer</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_INDEX_ARRAY'><source-position first-line='9466' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_INDEX_ARRAY_POINTER'><source-position first-line='9470' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_ARRAY_STRIDE'><source-position first-line='9474' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_ARRAY_TYPE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_ARRAY_TYPE'><source-position first-line='9478' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_BITS'><source-position first-line='9482' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_CLEAR_VALUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_CLEAR_VALUE'><source-position first-line='9486' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_LOGIC_OP'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_LOGIC_OP'><source-position first-line='9490' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_MODE'><source-position first-line='9494' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_OFFSET'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INDEX_OFFSET'><source-position first-line='9498' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_SHIFT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INDEX_SHIFT'><source-position first-line='9502' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INDEX_WRITEMASK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_INDEX_WRITEMASK'><source-position first-line='9506' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INT'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glVertexPointer</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexCoordPointer</ref>, <ref>glIndexPointer</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INT'><source-position first-line='9510' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INTENSITY'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INTENSITY'><source-position first-line='9514' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INTENSITY12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INTENSITY12'><source-position first-line='9518' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INTENSITY16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INTENSITY16'><source-position first-line='9522' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INTENSITY4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INTENSITY4'><source-position first-line='9526' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INTENSITY8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_INTENSITY8'><source-position first-line='9530' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INVALID_ENUM'><doc><text><p>Used in <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref>glPixelStore</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glFog'>glFog</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glMap1</ref>, <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref>glGetClipPlane</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref>glClipPlane</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref>glVertexPointer</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref>glGetPixelMap</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glPixelTransfer</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetTexParameter</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glEdgeFlagPointer</ref>, <ref>glGetDoublev</ref>, <ref>glCallLists</ref>, <ref>glInterleavedArrays</ref>, <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetTexEnv</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glEndList'>glEndList</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>, <ref>glTexCoordPointer</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref>glIndexPointer</ref>, <ref resolved='predef::GL.glGetString'>glGetString</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>, <ref>glTexSubImage1D</ref>, <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>, <ref resolved='predef::GL.glHint'>glHint</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>, <ref>glGetMaterial</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref>, <ref>glEvalMesh</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_INVALID_ENUM'><source-position first-line='9534' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INVALID_OPERATION'><doc><text><p>Used in <ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>, <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref resolved='predef::GL.glLoadName'>glLoadName</ref>, <ref>glPixelStore</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref>glGenTextures</ref>, <ref resolved='predef::GL.glFog'>glFog</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glClearColor'>glClearColor</ref>, <ref>glMap1</ref>, <ref>glPrioritizeTextures</ref>, <ref resolved='predef::GL.glDepthMask'>glDepthMask</ref>, <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref resolved='predef::GL.glMultMatrix'>glMultMatrix</ref>, <ref resolved='predef::GL.glIsList'>glIsList</ref>, <ref resolved='predef::GL.glFrustum'>glFrustum</ref>, <ref resolved='predef::GL.glDepthRange'>glDepthRange</ref>, <ref>glAreTexturesResident</ref>, <ref>glDeleteTextures</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glGenLists'>glGenLists</ref>, <ref>glBlendColorEXT</ref>, <ref resolved='predef::GL.glViewport'>glViewport</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref>glGetClipPlane</ref>, <ref resolved='predef::GL.glFinish'>glFinish</ref>, <ref resolved='predef::GL.glCullFace'>glCullFace</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glStencilMask'>glStencilMask</ref>, <ref>glClipPlane</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref>glSelectBuffer</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glInitNames'>glInitNames</ref>, <ref resolved='predef::GL.glPassThrough'>glPassThrough</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref>glGetPixelMap</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glListBase'>glListBase</ref>, <ref resolved='predef::GL.glColorMask'>glColorMask</ref>, <ref>glPixelTransfer</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetTexParameter</ref>, <ref resolved='predef::GL.glPopName'>glPopName</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref resolved='predef::GL.glIndexMask'>glIndexMask</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glPixelMap</ref>, <ref resolved='predef::GL.glTranslate'>glTranslate</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glClearDepth'>glClearDepth</ref>, <ref resolved='predef::GL.glRasterPos'>glRasterPos</ref>, <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref>glRect</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetTexEnv</ref>, <ref resolved='predef::GL.glClearIndex'>glClearIndex</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glRotate'>glRotate</ref>, <ref resolved='predef::GL.glEndList'>glEndList</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref>glGetPolygonStipple</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>, <ref resolved='predef::GL.glClearStencil'>glClearStencil</ref>, <ref>glBitmap</ref>, <ref resolved='predef::GL.glScale'>glScale</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref resolved='predef::GL.glFlush'>glFlush</ref>, <ref resolved='predef::GL.glOrtho'>glOrtho</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref>, <ref>glMapGrid</ref>, <ref resolved='predef::GL.glLightModel'>glLightModel</ref>, <ref resolved='predef::GL.glGetString'>glGetString</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref resolved='predef::GL.glScissor'>glScissor</ref>, <ref>glTexSubImage1D</ref>, <ref resolved='predef::GL.glLoadIdentity'>glLoadIdentity</ref>, <ref resolved='predef::GL.glPixelZoom'>glPixelZoom</ref>, <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>, <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>, <ref resolved='predef::GL.glHint'>glHint</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>, <ref>glGetMaterial</ref>, <ref resolved='predef::GL.glClear'>glClear</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref>, <ref resolved='predef::GL.glPointSize'>glPointSize</ref>, <ref>glPolygonStipple</ref>, <ref resolved='predef::GL.glFrontFace'>glFrontFace</ref>, <ref resolved='predef::GL.glLoadMatrix'>glLoadMatrix</ref>, <ref>glEvalMesh</ref>, <ref resolved='predef::GL.glTexGen'>glTexGen</ref>, <ref resolved='predef::GL.glClearAccum'>glClearAccum</ref> and <ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref></p>
</text></doc>
<constant name='GL_INVALID_OPERATION'><source-position first-line='9538' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INVALID_VALUE'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetTexLevelParameter</ref>, <ref>glGenTextures</ref>, <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glMap1</ref>, <ref>glPrioritizeTextures</ref>, <ref resolved='predef::GL.glFrustum'>glFrustum</ref>, <ref>glAreTexturesResident</ref>, <ref>glDeleteTextures</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glGenLists'>glGenLists</ref>, <ref resolved='predef::GL.glViewport'>glViewport</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glVertexPointer</ref>, <ref>glSelectBuffer</ref>, <ref>glMap2</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref>glGetTexImage</ref>, <ref>glPixelMap</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glCallLists</ref>, <ref>glInterleavedArrays</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glEndList'>glEndList</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref>glBitmap</ref>, <ref>glTexCoordPointer</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref>glMapGrid</ref>, <ref>glIndexPointer</ref>, <ref resolved='predef::GL.glScissor'>glScissor</ref>, <ref>glTexSubImage1D</ref>, <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glClear'>glClear</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glPointSize'>glPointSize</ref> and <ref resolved='predef::GL.glDeleteLists'>glDeleteLists</ref></p>
</text></doc>
<constant name='GL_INVALID_VALUE'><source-position first-line='9542' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_INVERT'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_INVERT'><source-position first-line='9546' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_KEEP'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_KEEP'><source-position first-line='9550' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LARGE_SUNX'><doc/>
<constant name='GL_LARGE_SUNX'><source-position first-line='9554' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LEFT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_LEFT'><source-position first-line='9557' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LEQUAL'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_LEQUAL'><source-position first-line='9561' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LESS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_LESS'><source-position first-line='9565' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT0'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_LIGHT0'><source-position first-line='9569' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT1'><doc/>
<constant name='GL_LIGHT1'><source-position first-line='9573' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT2'><doc/>
<constant name='GL_LIGHT2'><source-position first-line='9576' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT3'><doc/>
<constant name='GL_LIGHT3'><source-position first-line='9579' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT4'><doc/>
<constant name='GL_LIGHT4'><source-position first-line='9582' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT5'><doc/>
<constant name='GL_LIGHT5'><source-position first-line='9585' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT6'><doc/>
<constant name='GL_LIGHT6'><source-position first-line='9588' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT7'><doc/>
<constant name='GL_LIGHT7'><source-position first-line='9591' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHTING'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_LIGHTING'><source-position first-line='9594' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHTING_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_LIGHTING_BIT'><source-position first-line='9598' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT_MODEL_AMBIENT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLightModel'>glLightModel</ref></p>
</text></doc>
<constant name='GL_LIGHT_MODEL_AMBIENT'><source-position first-line='9602' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT_MODEL_LOCAL_VIEWER'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLightModel'>glLightModel</ref></p>
</text></doc>
<constant name='GL_LIGHT_MODEL_LOCAL_VIEWER'><source-position first-line='9606' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIGHT_MODEL_TWO_SIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLightModel'>glLightModel</ref></p>
</text></doc>
<constant name='GL_LIGHT_MODEL_TWO_SIDE'><source-position first-line='9610' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref>, <ref resolved='predef::GL.glHint'>glHint</ref>, <ref>glEdgeFlagv</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_LINE'><source-position first-line='9614' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINEAR'><doc><text><p>Used in <ref resolved='predef::GL.glFog'>glFog</ref>, <ref>glGetLight</ref>, <ref>glGetTexParameter</ref>, <ref resolved='predef::GL.glLight'>glLight</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_LINEAR'><source-position first-line='9618' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINEAR_ATTENUATION'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_LINEAR_ATTENUATION'><source-position first-line='9622' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINEAR_MIPMAP_LINEAR'><doc><text><p>Used in <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_LINEAR_MIPMAP_LINEAR'><source-position first-line='9626' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINEAR_MIPMAP_NEAREST'><doc><text><p>Used in <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_LINEAR_MIPMAP_NEAREST'><source-position first-line='9630' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINES'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_LINES'><source-position first-line='9634' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_LINE_BIT'><source-position first-line='9638' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_LOOP'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> and <ref resolved='predef::GL.glBegin'>glBegin</ref></p>
</text></doc>
<constant name='GL_LINE_LOOP'><source-position first-line='9642' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_RESET_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_LINE_RESET_TOKEN'><source-position first-line='9646' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_SMOOTH'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_LINE_SMOOTH'><source-position first-line='9650' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_SMOOTH_HINT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_LINE_SMOOTH_HINT'><source-position first-line='9654' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_STIPPLE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glLineStipple'>glLineStipple</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LINE_STIPPLE'><source-position first-line='9658' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_STIPPLE_PATTERN'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LINE_STIPPLE_PATTERN'><source-position first-line='9662' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_STIPPLE_REPEAT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LINE_STIPPLE_REPEAT'><source-position first-line='9666' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_STRIP'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_LINE_STRIP'><source-position first-line='9670' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_LINE_TOKEN'><source-position first-line='9674' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_WIDTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref></p>
</text></doc>
<constant name='GL_LINE_WIDTH'><source-position first-line='9678' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_WIDTH_GRANULARITY'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref></p>
</text></doc>
<constant name='GL_LINE_WIDTH_GRANULARITY'><source-position first-line='9682' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LINE_WIDTH_RANGE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLineWidth'>glLineWidth</ref></p>
</text></doc>
<constant name='GL_LINE_WIDTH_RANGE'><source-position first-line='9686' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIST_BASE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LIST_BASE'><source-position first-line='9690' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIST_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_LIST_BIT'><source-position first-line='9694' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIST_INDEX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LIST_INDEX'><source-position first-line='9698' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LIST_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LIST_MODE'><source-position first-line='9702' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LOAD'><doc><text><p>Used in <ref resolved='predef::GL.glAccum'>glAccum</ref></p>
</text></doc>
<constant name='GL_LOAD'><source-position first-line='9706' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LOGIC_OP'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LOGIC_OP'><source-position first-line='9710' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LOGIC_OP_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_LOGIC_OP_MODE'><source-position first-line='9714' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE'><source-position first-line='9718' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE12'><source-position first-line='9722' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE12_ALPHA12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE12_ALPHA12'><source-position first-line='9726' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE12_ALPHA4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE12_ALPHA4'><source-position first-line='9730' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE16'><source-position first-line='9734' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE16_ALPHA16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE16_ALPHA16'><source-position first-line='9738' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE4'><source-position first-line='9742' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE4_ALPHA4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE4_ALPHA4'><source-position first-line='9746' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE6_ALPHA2'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE6_ALPHA2'><source-position first-line='9750' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE8'><source-position first-line='9754' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE8_ALPHA8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE8_ALPHA8'><source-position first-line='9758' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_LUMINANCE_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_LUMINANCE_ALPHA'><source-position first-line='9762' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_COLOR_4'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_COLOR_4'><source-position first-line='9766' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_GRID_DOMAIN'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAP1_GRID_DOMAIN'><source-position first-line='9770' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_GRID_SEGMENTS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAP1_GRID_SEGMENTS'><source-position first-line='9774' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_INDEX'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_INDEX'><source-position first-line='9778' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_NORMAL'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_NORMAL'><source-position first-line='9782' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_TEXTURE_COORD_1'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_TEXTURE_COORD_1'><source-position first-line='9786' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_TEXTURE_COORD_2'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_TEXTURE_COORD_2'><source-position first-line='9790' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_TEXTURE_COORD_3'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_TEXTURE_COORD_3'><source-position first-line='9794' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_TEXTURE_COORD_4'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_TEXTURE_COORD_4'><source-position first-line='9798' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_VERTEX_3'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_VERTEX_3'><source-position first-line='9802' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP1_VERTEX_4'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP1_VERTEX_4'><source-position first-line='9806' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_COLOR_4'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_COLOR_4'><source-position first-line='9810' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_GRID_DOMAIN'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAP2_GRID_DOMAIN'><source-position first-line='9814' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_GRID_SEGMENTS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAP2_GRID_SEGMENTS'><source-position first-line='9818' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_INDEX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_INDEX'><source-position first-line='9822' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_NORMAL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_NORMAL'><source-position first-line='9826' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_TEXTURE_COORD_1'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_TEXTURE_COORD_1'><source-position first-line='9830' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_TEXTURE_COORD_2'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_TEXTURE_COORD_2'><source-position first-line='9834' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_TEXTURE_COORD_3'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_TEXTURE_COORD_3'><source-position first-line='9838' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_TEXTURE_COORD_4'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_TEXTURE_COORD_4'><source-position first-line='9842' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_VERTEX_3'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_VERTEX_3'><source-position first-line='9846' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP2_VERTEX_4'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glMap2</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetMap</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glEvalCoord'>glEvalCoord</ref></p>
</text></doc>
<constant name='GL_MAP2_VERTEX_4'><source-position first-line='9850' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP_COLOR'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_MAP_COLOR'><source-position first-line='9854' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAP_STENCIL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_MAP_STENCIL'><source-position first-line='9858' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MATRIX_MODE'><doc><text><p>Used in <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MATRIX_MODE'><source-position first-line='9862' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_3D_TEXTURE_SIZE_EXT'><doc/>
<constant name='GL_MAX_3D_TEXTURE_SIZE_EXT'><source-position first-line='9866' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_ATTRIB_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_ATTRIB_STACK_DEPTH'><source-position first-line='9869' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_CLIENT_ATTRIB_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_CLIENT_ATTRIB_STACK_DEPTH'><source-position first-line='9873' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_CLIP_PLANES'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetClipPlane</ref>, <ref>glClipPlane</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_CLIP_PLANES'><source-position first-line='9877' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_CONVOLUTION_HEIGHT_EXT'><doc/>
<constant name='GL_MAX_CONVOLUTION_HEIGHT_EXT'><source-position first-line='9881' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_CONVOLUTION_WIDTH_EXT'><doc/>
<constant name='GL_MAX_CONVOLUTION_WIDTH_EXT'><source-position first-line='9884' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_EVAL_ORDER'><doc><text><p>Used in <ref>glMap1</ref>, <ref>glGetIntegerv</ref>, <ref>glMap2</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_EVAL_ORDER'><source-position first-line='9887' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_EXT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_EXT'><source-position first-line='9891' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_LIGHTS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_MAX_LIGHTS'><source-position first-line='9895' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_LIST_NESTING'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_LIST_NESTING'><source-position first-line='9899' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_MODELVIEW_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_MODELVIEW_STACK_DEPTH'><source-position first-line='9903' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_NAME_STACK_DEPTH'><doc><text><p>Used in <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopName'>glPopName</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_NAME_STACK_DEPTH'><source-position first-line='9907' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_PIXEL_MAP_TABLE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_PIXEL_MAP_TABLE'><source-position first-line='9911' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT'><doc/>
<constant name='GL_MAX_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT'><source-position first-line='9915' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_PROJECTION_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_PROJECTION_STACK_DEPTH'><source-position first-line='9918' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_TEXTURE_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref> and <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref></p>
</text></doc>
<constant name='GL_MAX_TEXTURE_SIZE'><source-position first-line='9922' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_TEXTURE_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_TEXTURE_STACK_DEPTH'><source-position first-line='9926' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MAX_VIEWPORT_DIMS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glViewport'>glViewport</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MAX_VIEWPORT_DIMS'><source-position first-line='9930' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MINMAX_EXT'><doc/>
<constant name='GL_MINMAX_EXT'><source-position first-line='9934' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MINMAX_FORMAT_EXT'><doc/>
<constant name='GL_MINMAX_FORMAT_EXT'><source-position first-line='9937' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MINMAX_SINK_EXT'><doc/>
<constant name='GL_MINMAX_SINK_EXT'><source-position first-line='9940' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MIN_EXT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MIN_EXT'><source-position first-line='9943' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MODELVIEW'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glTranslate'>glTranslate</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glRotate'>glRotate</ref>, <ref resolved='predef::GL.glScale'>glScale</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref></p>
</text></doc>
<constant name='GL_MODELVIEW'><source-position first-line='9947' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MODELVIEW_MATRIX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MODELVIEW_MATRIX'><source-position first-line='9951' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MODELVIEW_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_MODELVIEW_STACK_DEPTH'><source-position first-line='9955' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MODULATE'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref> and <ref>glGetTexEnv</ref></p>
</text></doc>
<constant name='GL_MODULATE'><source-position first-line='9959' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_MULT'><doc><text><p>Used in <ref resolved='predef::GL.glAccum'>glAccum</ref></p>
</text></doc>
<constant name='GL_MULT'><source-position first-line='9963' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_N3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_N3F_V3F'><source-position first-line='9967' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NAME_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_NAME_STACK_DEPTH'><source-position first-line='9971' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NAND'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_NAND'><source-position first-line='9975' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NEAREST'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_NEAREST'><source-position first-line='9979' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NEAREST_MIPMAP_LINEAR'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_NEAREST_MIPMAP_LINEAR'><source-position first-line='9983' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NEAREST_MIPMAP_NEAREST'><doc><text><p>Used in <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_NEAREST_MIPMAP_NEAREST'><source-position first-line='9987' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NEVER'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_NEVER'><source-position first-line='9991' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NICEST'><doc><text><p>Used in <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_NICEST'><source-position first-line='9995' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NONE'><doc><text><p>Used in <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_NONE'><source-position first-line='9999' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NOOP'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_NOOP'><source-position first-line='10003' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NOR'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glNormalPointer</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glNormal'>glNormal</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_NOR'><source-position first-line='10007' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NORMALIZE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glNormal'>glNormal</ref></p>
</text></doc>
<constant name='GL_NORMALIZE'><source-position first-line='10011' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NORMAL_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref>glNormalPointer</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_NORMAL_ARRAY'><source-position first-line='10015' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NORMAL_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_NORMAL_ARRAY_POINTER'><source-position first-line='10019' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NORMAL_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_NORMAL_ARRAY_STRIDE'><source-position first-line='10023' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NORMAL_ARRAY_TYPE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_NORMAL_ARRAY_TYPE'><source-position first-line='10027' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NOTEQUAL'><doc><text><p>Used in <ref resolved='predef::GL.glAlphaFunc'>glAlphaFunc</ref>, <ref resolved='predef::GL.glDepthFunc'>glDepthFunc</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_NOTEQUAL'><source-position first-line='10031' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_NO_ERROR'><doc><text><p>Used in <ref resolved='predef::GL.glGetError'>glGetError</ref></p>
</text></doc>
<constant name='GL_NO_ERROR'><source-position first-line='10035' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OBJECT_LINEAR'><doc><text><p>Used in <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_OBJECT_LINEAR'><source-position first-line='10039' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OBJECT_PLANE'><doc><text><p>Used in <ref>glGetTexGen</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_OBJECT_PLANE'><source-position first-line='10043' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OCCLUSION_RESULT_HP'><doc/>
<constant name='GL_OCCLUSION_RESULT_HP'><source-position first-line='10047' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OCCLUSION_TEST_HP'><doc/>
<constant name='GL_OCCLUSION_TEST_HP'><source-position first-line='10050' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_ONE'><source-position first-line='10053' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_CONSTANT_ALPHA_EXT'><doc/>
<constant name='GL_ONE_MINUS_CONSTANT_ALPHA_EXT'><source-position first-line='10057' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_CONSTANT_COLOR_EXT'><doc/>
<constant name='GL_ONE_MINUS_CONSTANT_COLOR_EXT'><source-position first-line='10060' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_DST_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_ONE_MINUS_DST_ALPHA'><source-position first-line='10063' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_DST_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_ONE_MINUS_DST_COLOR'><source-position first-line='10067' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_SRC_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_ONE_MINUS_SRC_ALPHA'><source-position first-line='10071' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ONE_MINUS_SRC_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_ONE_MINUS_SRC_COLOR'><source-position first-line='10075' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OR'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref> and <ref>glGetMap</ref></p>
</text></doc>
<constant name='GL_OR'><source-position first-line='10079' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ORDER'><doc><text><p>Used in <ref>glGetMap</ref></p>
</text></doc>
<constant name='GL_ORDER'><source-position first-line='10083' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OR_INVERTED'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_OR_INVERTED'><source-position first-line='10087' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OR_REVERSE'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_OR_REVERSE'><source-position first-line='10091' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_OUT_OF_MEMORY'><doc><text><p>Used in <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref> and <ref resolved='predef::GL.glEndList'>glEndList</ref></p>
</text></doc>
<constant name='GL_OUT_OF_MEMORY'><source-position first-line='10095' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_ALIGNMENT'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PACK_ALIGNMENT'><source-position first-line='10099' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_IMAGE_HEIGHT_EXT'><doc/>
<constant name='GL_PACK_IMAGE_HEIGHT_EXT'><source-position first-line='10103' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_LSB_FIRST'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glReadPixels</ref></p>
</text></doc>
<constant name='GL_PACK_LSB_FIRST'><source-position first-line='10106' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_ROW_LENGTH'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PACK_ROW_LENGTH'><source-position first-line='10110' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_SKIP_IMAGES_EXT'><doc/>
<constant name='GL_PACK_SKIP_IMAGES_EXT'><source-position first-line='10114' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_SKIP_PIXELS'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PACK_SKIP_PIXELS'><source-position first-line='10117' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_SKIP_ROWS'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PACK_SKIP_ROWS'><source-position first-line='10121' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PACK_SWAP_BYTES'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glReadPixels</ref></p>
</text></doc>
<constant name='GL_PACK_SWAP_BYTES'><source-position first-line='10125' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PASS_THROUGH_TOKEN'><doc><text><p>Used in <ref resolved='predef::GL.glPassThrough'>glPassThrough</ref> and <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_PASS_THROUGH_TOKEN'><source-position first-line='10129' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PERSPECTIVE_CORRECTION_HINT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_PERSPECTIVE_CORRECTION_HINT'><source-position first-line='10133' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_CUBIC_WEIGHT_EXT'><doc/>
<constant name='GL_PIXEL_CUBIC_WEIGHT_EXT'><source-position first-line='10137' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAG_FILTER_EXT'><doc/>
<constant name='GL_PIXEL_MAG_FILTER_EXT'><source-position first-line='10140' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_A_TO_A'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_A_TO_A'><source-position first-line='10143' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_A_TO_A_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_A_TO_A_SIZE'><source-position first-line='10147' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_B_TO_B'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_B_TO_B'><source-position first-line='10151' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_B_TO_B_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_B_TO_B_SIZE'><source-position first-line='10155' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_G_TO_G'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_G_TO_G'><source-position first-line='10159' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_G_TO_G_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_G_TO_G_SIZE'><source-position first-line='10163' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_A'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_A'><source-position first-line='10167' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_A_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_A_SIZE'><source-position first-line='10171' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_B'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_B'><source-position first-line='10175' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_B_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_B_SIZE'><source-position first-line='10179' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_G'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_G'><source-position first-line='10183' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_G_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_G_SIZE'><source-position first-line='10187' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_I'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_I'><source-position first-line='10191' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_I_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_I_SIZE'><source-position first-line='10195' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_R'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_R'><source-position first-line='10199' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_I_TO_R_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_I_TO_R_SIZE'><source-position first-line='10203' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_R_TO_R'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_R_TO_R'><source-position first-line='10207' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_R_TO_R_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_R_TO_R_SIZE'><source-position first-line='10211' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_S_TO_S'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetPixelMap</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glPixelMap</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_S_TO_S'><source-position first-line='10215' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MAP_S_TO_S_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PIXEL_MAP_S_TO_S_SIZE'><source-position first-line='10219' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MIN_FILTER_EXT'><doc/>
<constant name='GL_PIXEL_MIN_FILTER_EXT'><source-position first-line='10223' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_MODE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_PIXEL_MODE_BIT'><source-position first-line='10226' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_TRANSFORM_2D_EXT'><doc/>
<constant name='GL_PIXEL_TRANSFORM_2D_EXT'><source-position first-line='10230' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_TRANSFORM_2D_MATRIX_EXT'><doc/>
<constant name='GL_PIXEL_TRANSFORM_2D_MATRIX_EXT'><source-position first-line='10233' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT'><doc/>
<constant name='GL_PIXEL_TRANSFORM_2D_STACK_DEPTH_EXT'><source-position first-line='10236' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PIXEL_TRANSFORM_COLOR_TABLE_EXT'><doc/>
<constant name='GL_PIXEL_TRANSFORM_COLOR_TABLE_EXT'><source-position first-line='10239' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glHint'>glHint</ref>, <ref>glEdgeFlagv</ref>, <ref resolved='predef::GL.glPointSize'>glPointSize</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_POINT'><source-position first-line='10242' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINTS'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_POINTS'><source-position first-line='10246' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_POINT_BIT'><source-position first-line='10250' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glPointSize'>glPointSize</ref></p>
</text></doc>
<constant name='GL_POINT_SIZE'><source-position first-line='10254' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_SIZE_GRANULARITY'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glPointSize'>glPointSize</ref></p>
</text></doc>
<constant name='GL_POINT_SIZE_GRANULARITY'><source-position first-line='10258' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_SIZE_RANGE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glPointSize'>glPointSize</ref></p>
</text></doc>
<constant name='GL_POINT_SIZE_RANGE'><source-position first-line='10262' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_SMOOTH'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glHint'>glHint</ref> and <ref resolved='predef::GL.glPointSize'>glPointSize</ref></p>
</text></doc>
<constant name='GL_POINT_SMOOTH'><source-position first-line='10266' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_SMOOTH_HINT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_POINT_SMOOTH_HINT'><source-position first-line='10270' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POINT_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_POINT_TOKEN'><source-position first-line='10274' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON'><doc><text><p>Used in <ref resolved='predef::GL.glPolygonOffset'>glPolygonOffset</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glRect</ref>, <ref>glFeedbackBuffer</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glHint'>glHint</ref>, <ref>glEdgeFlagv</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_POLYGON'><source-position first-line='10278' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_POLYGON_BIT'><source-position first-line='10282' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glEdgeFlagv</ref></p>
</text></doc>
<constant name='GL_POLYGON_MODE'><source-position first-line='10286' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_OFFSET_FACTOR'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_POLYGON_OFFSET_FACTOR'><source-position first-line='10290' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_OFFSET_FILL'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_POLYGON_OFFSET_FILL'><source-position first-line='10294' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_OFFSET_LINE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_POLYGON_OFFSET_LINE'><source-position first-line='10298' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_OFFSET_POINT'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_POLYGON_OFFSET_POINT'><source-position first-line='10302' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_OFFSET_UNITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_POLYGON_OFFSET_UNITS'><source-position first-line='10306' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_SMOOTH'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_POLYGON_SMOOTH'><source-position first-line='10310' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_SMOOTH_HINT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glHint'>glHint</ref></p>
</text></doc>
<constant name='GL_POLYGON_SMOOTH_HINT'><source-position first-line='10314' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_STIPPLE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glPolygonMode'>glPolygonMode</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_POLYGON_STIPPLE'><source-position first-line='10318' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_STIPPLE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_POLYGON_STIPPLE_BIT'><source-position first-line='10322' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POLYGON_TOKEN'><doc><text><p>Used in <ref>glFeedbackBuffer</ref></p>
</text></doc>
<constant name='GL_POLYGON_TOKEN'><source-position first-line='10326' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POSITION'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_POSITION'><source-position first-line='10330' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_ALPHA_BIAS_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_ALPHA_BIAS_EXT'><source-position first-line='10334' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_ALPHA_SCALE_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_ALPHA_SCALE_EXT'><source-position first-line='10337' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_BLUE_BIAS_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_BLUE_BIAS_EXT'><source-position first-line='10340' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_BLUE_SCALE_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_BLUE_SCALE_EXT'><source-position first-line='10343' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_COLOR_TABLE_SGI'><doc/>
<constant name='GL_POST_CONVOLUTION_COLOR_TABLE_SGI'><source-position first-line='10346' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_GREEN_BIAS_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_GREEN_BIAS_EXT'><source-position first-line='10349' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_GREEN_SCALE_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_GREEN_SCALE_EXT'><source-position first-line='10352' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_RED_BIAS_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_RED_BIAS_EXT'><source-position first-line='10355' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_POST_CONVOLUTION_RED_SCALE_EXT'><doc/>
<constant name='GL_POST_CONVOLUTION_RED_SCALE_EXT'><source-position first-line='10358' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROJECTION'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref resolved='predef::GL.glFrustum'>glFrustum</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glTranslate'>glTranslate</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glRotate'>glRotate</ref>, <ref resolved='predef::GL.glScale'>glScale</ref>, <ref resolved='predef::GL.glOrtho'>glOrtho</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref></p>
</text></doc>
<constant name='GL_PROJECTION'><source-position first-line='10361' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROJECTION_MATRIX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PROJECTION_MATRIX'><source-position first-line='10365' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROJECTION_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_PROJECTION_STACK_DEPTH'><source-position first-line='10369' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_COLOR_TABLE_SGI'><doc/>
<constant name='GL_PROXY_COLOR_TABLE_SGI'><source-position first-line='10373' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_HISTOGRAM_EXT'><doc/>
<constant name='GL_PROXY_HISTOGRAM_EXT'><source-position first-line='10376' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_PIXEL_TRANSFORM_COLOR_TABLE_EXT'><doc/>
<constant name='GL_PROXY_PIXEL_TRANSFORM_COLOR_TABLE_EXT'><source-position first-line='10379' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI'><doc/>
<constant name='GL_PROXY_POST_CONVOLUTION_COLOR_TABLE_SGI'><source-position first-line='10382' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_TEXTURE_1D'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref>, <ref resolved='predef::GL.glEndList'>glEndList</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_PROXY_TEXTURE_1D'><source-position first-line='10385' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_TEXTURE_2D'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glNewList'>glNewList</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref resolved='predef::GL.glEndList'>glEndList</ref></p>
</text></doc>
<constant name='GL_PROXY_TEXTURE_2D'><source-position first-line='10389' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_TEXTURE_3D_EXT'><doc/>
<constant name='GL_PROXY_TEXTURE_3D_EXT'><source-position first-line='10393' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_PROXY_TEXTURE_COLOR_TABLE_SGI'><doc/>
<constant name='GL_PROXY_TEXTURE_COLOR_TABLE_SGI'><source-position first-line='10396' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_Q'><doc><text><p>Used in <ref>glGetTexGen</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref>glEvalMesh</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_Q'><source-position first-line='10399' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_QUADRATIC_ATTENUATION'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_QUADRATIC_ATTENUATION'><source-position first-line='10403' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_QUADS'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> and <ref resolved='predef::GL.glBegin'>glBegin</ref></p>
</text></doc>
<constant name='GL_QUADS'><source-position first-line='10407' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_QUAD_STRIP'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref> and <ref>glEvalMesh</ref></p>
</text></doc>
<constant name='GL_QUAD_STRIP'><source-position first-line='10411' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_R'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glAccum'>glAccum</ref>, <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>, <ref resolved='predef::GL.glGetString'>glGetString</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref>glTexSubImage1D</ref>, <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_R'><source-position first-line='10415' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_R3_G3_B2'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_R3_G3_B2'><source-position first-line='10419' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_READ_BUFFER'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref> and <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref></p>
</text></doc>
<constant name='GL_READ_BUFFER'><source-position first-line='10423' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RED'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RED'><source-position first-line='10427' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_REDUCE_EXT'><doc/>
<constant name='GL_REDUCE_EXT'><source-position first-line='10431' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RED_BIAS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_RED_BIAS'><source-position first-line='10434' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RED_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_RED_BITS'><source-position first-line='10438' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RED_SCALE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glPixelTransfer</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_RED_SCALE'><source-position first-line='10442' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RENDER'><doc><text><p>Used in <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glGetString'>glGetString</ref></p>
</text></doc>
<constant name='GL_RENDER'><source-position first-line='10446' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RENDERER'><doc><text><p>Used in <ref resolved='predef::GL.glGetString'>glGetString</ref></p>
</text></doc>
<constant name='GL_RENDERER'><source-position first-line='10450' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RENDER_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_RENDER_MODE'><source-position first-line='10454' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_REPEAT'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_REPEAT'><source-position first-line='10458' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_REPLACE'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_REPLACE'><source-position first-line='10462' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_REPLICATE_BORDER_HP'><doc/>
<constant name='GL_REPLICATE_BORDER_HP'><source-position first-line='10466' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RESCALE_NORMAL_EXT'><doc/>
<constant name='GL_RESCALE_NORMAL_EXT'><source-position first-line='10469' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RETURN'><doc><text><p>Used in <ref resolved='predef::GL.glAccum'>glAccum</ref></p>
</text></doc>
<constant name='GL_RETURN'><source-position first-line='10472' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB'><source-position first-line='10476' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB10'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB10'><source-position first-line='10480' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB10_A2'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB10_A2'><source-position first-line='10484' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB12'><source-position first-line='10488' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB16'><source-position first-line='10492' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB4'><source-position first-line='10496' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB5'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB5'><source-position first-line='10500' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB5_A1'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB5_A1'><source-position first-line='10504' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGB8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGB8'><source-position first-line='10508' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA'><source-position first-line='10512' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA12'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA12'><source-position first-line='10516' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA16'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA16'><source-position first-line='10520' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA2'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA2'><source-position first-line='10524' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA4'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA4'><source-position first-line='10528' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA8'><doc><text><p>Used in <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_RGBA8'><source-position first-line='10532' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RGBA_MODE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_RGBA_MODE'><source-position first-line='10536' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_RIGHT'><doc><text><p>Used in <ref resolved='predef::GL.glReadBuffer'>glReadBuffer</ref> and <ref resolved='predef::GL.glDrawBuffer'>glDrawBuffer</ref></p>
</text></doc>
<constant name='GL_RIGHT'><source-position first-line='10540' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_S'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glLoadName'>glLoadName</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref>glVertexPointer</ref>, <ref>glSelectBuffer</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glInitNames'>glInitNames</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetPointerv</ref>, <ref resolved='predef::GL.glPopName'>glPopName</ref>, <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref>glGetDoublev</ref>, <ref>glCallLists</ref>, <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glLight'>glLight</ref>, <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>, <ref>glTexCoordPointer</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref>glIndexPointer</ref>, <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref>, <ref resolved='predef::GL.glScissor'>glScissor</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref>, <ref>glGetMaterial</ref>, <ref resolved='predef::GL.glClear'>glClear</ref>, <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_S'><source-position first-line='10544' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SCISSOR_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_SCISSOR_BIT'><source-position first-line='10548' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SCISSOR_BOX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_SCISSOR_BOX'><source-position first-line='10552' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SCISSOR_TEST'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glScissor'>glScissor</ref></p>
</text></doc>
<constant name='GL_SCISSOR_TEST'><source-position first-line='10556' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SELECT'><doc><text><p>Used in <ref resolved='predef::GL.glLoadName'>glLoadName</ref>, <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref resolved='predef::GL.glRenderMode'>glRenderMode</ref>, <ref>glSelectBuffer</ref>, <ref resolved='predef::GL.glInitNames'>glInitNames</ref>, <ref>glGetPointerv</ref> and <ref resolved='predef::GL.glPopName'>glPopName</ref></p>
</text></doc>
<constant name='GL_SELECT'><source-position first-line='10560' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SELECTION_BUFFER_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_SELECTION_BUFFER_POINTER'><source-position first-line='10564' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SELECTION_BUFFER_SIZE'><doc/>
<constant name='GL_SELECTION_BUFFER_SIZE'><source-position first-line='10568' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SEPARABLE_2D_EXT'><doc/>
<constant name='GL_SEPARABLE_2D_EXT'><source-position first-line='10571' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SET'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_SET'><source-position first-line='10574' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SGI_color_table'><doc/>
<constant name='GL_SGI_color_table'><source-position first-line='10578' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SGI_texture_color_table'><doc/>
<constant name='GL_SGI_texture_color_table'><source-position first-line='10581' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SHADE_MODEL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_SHADE_MODEL'><source-position first-line='10584' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SHININESS'><doc><text><p>Used in <ref resolved='predef::GL.glMaterial'>glMaterial</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_SHININESS'><source-position first-line='10588' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SHORT'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glVertexPointer</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glNormalPointer</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexCoordPointer</ref>, <ref>glIndexPointer</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_SHORT'><source-position first-line='10592' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SMOOTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glShadeModel'>glShadeModel</ref></p>
</text></doc>
<constant name='GL_SMOOTH'><source-position first-line='10596' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SPECULAR'><doc><text><p>Used in <ref resolved='predef::GL.glColorMaterial'>glColorMaterial</ref>, <ref>glGetLight</ref>, <ref resolved='predef::GL.glMaterial'>glMaterial</ref>, <ref resolved='predef::GL.glLight'>glLight</ref> and <ref>glGetMaterial</ref></p>
</text></doc>
<constant name='GL_SPECULAR'><source-position first-line='10600' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SPHERE_MAP'><doc><text><p>Used in <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_SPHERE_MAP'><source-position first-line='10604' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SPOT_CUTOFF'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_SPOT_CUTOFF'><source-position first-line='10608' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SPOT_DIRECTION'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_SPOT_DIRECTION'><source-position first-line='10612' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SPOT_EXPONENT'><doc><text><p>Used in <ref>glGetLight</ref> and <ref resolved='predef::GL.glLight'>glLight</ref></p>
</text></doc>
<constant name='GL_SPOT_EXPONENT'><source-position first-line='10616' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SRC_ALPHA'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_SRC_ALPHA'><source-position first-line='10620' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SRC_ALPHA_SATURATE'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_SRC_ALPHA_SATURATE'><source-position first-line='10624' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SRC_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref></p>
</text></doc>
<constant name='GL_SRC_COLOR'><source-position first-line='10628' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STACK_OVERFLOW'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPopName'>glPopName</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref>, <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref></p>
</text></doc>
<constant name='GL_STACK_OVERFLOW'><source-position first-line='10632' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STACK_UNDERFLOW'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glPushName'>glPushName</ref>, <ref resolved='predef::GL.glGetError'>glGetError</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPopName'>glPopName</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref resolved='predef::GL.glPopClientAttrib'>glPopClientAttrib</ref>, <ref resolved='predef::GL.glPushClientAttrib'>glPushClientAttrib</ref> and <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref></p>
</text></doc>
<constant name='GL_STACK_UNDERFLOW'><source-position first-line='10636' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref>, <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_STENCIL'><source-position first-line='10640' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_STENCIL_BITS'><source-position first-line='10644' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_BUFFER_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> and <ref resolved='predef::GL.glClear'>glClear</ref></p>
</text></doc>
<constant name='GL_STENCIL_BUFFER_BIT'><source-position first-line='10648' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_CLEAR_VALUE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_CLEAR_VALUE'><source-position first-line='10652' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_FAIL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_FAIL'><source-position first-line='10656' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_FUNC'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_FUNC'><source-position first-line='10660' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_INDEX'><doc><text><p>Used in <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetTexImage</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_STENCIL_INDEX'><source-position first-line='10664' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_PASS_DEPTH_FAIL'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_PASS_DEPTH_FAIL'><source-position first-line='10668' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_PASS_DEPTH_PASS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_PASS_DEPTH_PASS'><source-position first-line='10672' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_REF'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_REF'><source-position first-line='10676' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_TEST'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref> and <ref resolved='predef::GL.glStencilFunc'>glStencilFunc</ref></p>
</text></doc>
<constant name='GL_STENCIL_TEST'><source-position first-line='10680' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_VALUE_MASK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_VALUE_MASK'><source-position first-line='10684' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STENCIL_WRITEMASK'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STENCIL_WRITEMASK'><source-position first-line='10688' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_STEREO'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_STEREO'><source-position first-line='10692' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SUBPIXEL_BITS'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_SUBPIXEL_BITS'><source-position first-line='10696' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SUNX_geometry_compression'><doc/>
<constant name='GL_SUNX_geometry_compression'><source-position first-line='10700' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SUNX_surface_hint'><doc/>
<constant name='GL_SUNX_surface_hint'><source-position first-line='10703' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SUN_convolution_border_modes'><doc/>
<constant name='GL_SUN_convolution_border_modes'><source-position first-line='10706' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SUN_multi_draw_arrays'><doc/>
<constant name='GL_SUN_multi_draw_arrays'><source-position first-line='10709' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_SURFACE_SIZE_HINT_SUNX'><doc/>
<constant name='GL_SURFACE_SIZE_HINT_SUNX'><source-position first-line='10712' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref resolved='predef::GL.glIsList'>glIsList</ref>, <ref>glAreTexturesResident</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glColorMask'>glColorMask</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glInterleavedArrays</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetTexEnv</ref>, <ref resolved='predef::GL.glBegin'>glBegin</ref>, <ref>glTexCoordPointer</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>, <ref>glTexSubImage1D</ref>, <ref>glEdgeFlagv</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_T'><source-position first-line='10715' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T2F_C3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T2F_C3F_V3F'><source-position first-line='10719' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T2F_C4F_N3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T2F_C4F_N3F_V3F'><source-position first-line='10723' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T2F_C4UB_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T2F_C4UB_V3F'><source-position first-line='10727' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T2F_N3F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T2F_N3F_V3F'><source-position first-line='10731' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T2F_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T2F_V3F'><source-position first-line='10735' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T4F_C4F_N3F_V4F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T4F_C4F_N3F_V4F'><source-position first-line='10739' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_T4F_V4F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_T4F_V4F'><source-position first-line='10743' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TABLE_TOO_LARGE_EXT'><doc/>
<constant name='GL_TABLE_TOO_LARGE_EXT'><source-position first-line='10747' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE'><doc><text><p>Used in <ref resolved='predef::GL.glPushMatrix'>glPushMatrix</ref>, <ref resolved='predef::GL.glMatrixMode'>glMatrixMode</ref>, <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref>, <ref>glAreTexturesResident</ref>, <ref>glGetTexGen</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glGetTexEnv</ref>, <ref>glTexCoordPointer</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref>, <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref>, <ref resolved='predef::GL.glPopMatrix'>glPopMatrix</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE'><source-position first-line='10750' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_1D'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glCopyTexImage1D'>glCopyTexImage1D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref>glTexSubImage1D</ref>, <ref>glTexImage1D</ref> and <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref></p>
</text></doc>
<constant name='GL_TEXTURE_1D'><source-position first-line='10754' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_2D'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetTexLevelParameter</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glBindTexture'>glBindTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetTexImage</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glCopyTexImage2D'>glCopyTexImage2D</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_2D'><source-position first-line='10758' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_3D_EXT'><doc/>
<constant name='GL_TEXTURE_3D_EXT'><source-position first-line='10762' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_ALPHA_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_ALPHA_SIZE'><source-position first-line='10765' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BINDING_1D'><doc/>
<constant name='GL_TEXTURE_BINDING_1D'><source-position first-line='10769' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BINDING_2D'><doc/>
<constant name='GL_TEXTURE_BINDING_2D'><source-position first-line='10772' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_TEXTURE_BIT'><source-position first-line='10775' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BLUE_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_BLUE_SIZE'><source-position first-line='10779' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BORDER'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref>glGetTexParameter</ref>, <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref>, <ref>glTexSubImage1D</ref> and <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref></p>
</text></doc>
<constant name='GL_TEXTURE_BORDER'><source-position first-line='10783' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_BORDER_COLOR'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_BORDER_COLOR'><source-position first-line='10787' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COLOR_TABLE_SGI'><doc/>
<constant name='GL_TEXTURE_COLOR_TABLE_SGI'><source-position first-line='10791' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COMPONENTS'><doc/>
<constant name='GL_TEXTURE_COMPONENTS'><source-position first-line='10794' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COORD_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glTexCoordPointer</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_TEXTURE_COORD_ARRAY'><source-position first-line='10797' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COORD_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_TEXTURE_COORD_ARRAY_POINTER'><source-position first-line='10801' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COORD_ARRAY_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_TEXTURE_COORD_ARRAY_SIZE'><source-position first-line='10805' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COORD_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_TEXTURE_COORD_ARRAY_STRIDE'><source-position first-line='10809' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_COORD_ARRAY_TYPE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_TEXTURE_COORD_ARRAY_TYPE'><source-position first-line='10813' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_DEPTH_EXT'><doc/>
<constant name='GL_TEXTURE_DEPTH_EXT'><source-position first-line='10817' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_ENV'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref> and <ref>glGetTexEnv</ref></p>
</text></doc>
<constant name='GL_TEXTURE_ENV'><source-position first-line='10820' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_ENV_COLOR'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref> and <ref>glGetTexEnv</ref></p>
</text></doc>
<constant name='GL_TEXTURE_ENV_COLOR'><source-position first-line='10824' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_ENV_MODE'><doc><text><p>Used in <ref resolved='predef::GL.glTexEnv'>glTexEnv</ref> and <ref>glGetTexEnv</ref></p>
</text></doc>
<constant name='GL_TEXTURE_ENV_MODE'><source-position first-line='10828' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GEN_MODE'><doc><text><p>Used in <ref>glGetTexGen</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GEN_MODE'><source-position first-line='10832' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GEN_Q'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GEN_Q'><source-position first-line='10836' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GEN_R'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GEN_R'><source-position first-line='10840' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GEN_S'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GEN_S'><source-position first-line='10844' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GEN_T'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glTexGen'>glTexGen</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GEN_T'><source-position first-line='10848' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_GREEN_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_GREEN_SIZE'><source-position first-line='10852' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_HEIGHT'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref> and <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref></p>
</text></doc>
<constant name='GL_TEXTURE_HEIGHT'><source-position first-line='10856' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_INTENSITY_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_INTENSITY_SIZE'><source-position first-line='10860' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_INTERNAL_FORMAT'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_INTERNAL_FORMAT'><source-position first-line='10864' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_LUMINANCE_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_LUMINANCE_SIZE'><source-position first-line='10868' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_MAG_FILTER'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_MAG_FILTER'><source-position first-line='10872' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_MATRIX'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_TEXTURE_MATRIX'><source-position first-line='10876' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_MIN_FILTER'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_MIN_FILTER'><source-position first-line='10880' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_PRIORITY'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_PRIORITY'><source-position first-line='10884' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_RED_SIZE'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_RED_SIZE'><source-position first-line='10888' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_RESIDENT'><doc><text><p>Used in <ref>glAreTexturesResident</ref> and <ref>glGetTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_RESIDENT'><source-position first-line='10892' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_STACK_DEPTH'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_TEXTURE_STACK_DEPTH'><source-position first-line='10896' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_WIDTH'><doc><text><p>Used in <ref>glGetTexLevelParameter</ref>, <ref resolved='predef::GL.glCopyTexSubImage2D'>glCopyTexSubImage2D</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref resolved='predef::GL.glCopyTexSubImage1D'>glCopyTexSubImage1D</ref></p>
</text></doc>
<constant name='GL_TEXTURE_WIDTH'><source-position first-line='10900' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_WRAP_R_EXT'><doc/>
<constant name='GL_TEXTURE_WRAP_R_EXT'><source-position first-line='10904' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_WRAP_S'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_WRAP_S'><source-position first-line='10907' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TEXTURE_WRAP_T'><doc><text><p>Used in <ref>glGetTexParameter</ref> and <ref resolved='predef::GL.glTexParameter'>glTexParameter</ref></p>
</text></doc>
<constant name='GL_TEXTURE_WRAP_T'><source-position first-line='10911' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TRANSFORM_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_TRANSFORM_BIT'><source-position first-line='10915' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TRIANGLES'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> and <ref resolved='predef::GL.glBegin'>glBegin</ref></p>
</text></doc>
<constant name='GL_TRIANGLES'><source-position first-line='10919' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TRIANGLE_FAN'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> and <ref resolved='predef::GL.glBegin'>glBegin</ref></p>
</text></doc>
<constant name='GL_TRIANGLE_FAN'><source-position first-line='10923' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TRIANGLE_STRIP'><doc><text><p>Used in <ref resolved='predef::GL.glEnd'>glEnd</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref> and <ref resolved='predef::GL.glBegin'>glBegin</ref></p>
</text></doc>
<constant name='GL_TRIANGLE_STRIP'><source-position first-line='10927' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_TRUE'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glIsList'>glIsList</ref>, <ref>glAreTexturesResident</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glIsTexture'>glIsTexture</ref>, <ref resolved='predef::GL.glDisable'>glDisable</ref>, <ref resolved='predef::GL.glEdgeFlag'>glEdgeFlag</ref>, <ref resolved='predef::GL.glEnable'>glEnable</ref>, <ref resolved='predef::GL.glColorMask'>glColorMask</ref>, <ref>glGetTexParameter</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref>glReadPixels</ref> and <ref>glEdgeFlagv</ref></p>
</text></doc>
<constant name='GL_TRUE'><source-position first-line='10931' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_ALIGNMENT'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_UNPACK_ALIGNMENT'><source-position first-line='10935' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_IMAGE_HEIGHT_EXT'><doc/>
<constant name='GL_UNPACK_IMAGE_HEIGHT_EXT'><source-position first-line='10939' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_LSB_FIRST'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexImage1D</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_UNPACK_LSB_FIRST'><source-position first-line='10942' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_ROW_LENGTH'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_UNPACK_ROW_LENGTH'><source-position first-line='10946' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_SKIP_IMAGES_EXT'><doc/>
<constant name='GL_UNPACK_SKIP_IMAGES_EXT'><source-position first-line='10950' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_SKIP_PIXELS'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_UNPACK_SKIP_PIXELS'><source-position first-line='10953' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_SKIP_ROWS'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_UNPACK_SKIP_ROWS'><source-position first-line='10957' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNPACK_SWAP_BYTES'><doc><text><p>Used in <ref>glPixelStore</ref>, <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref>glPolygonStipple</ref></p>
</text></doc>
<constant name='GL_UNPACK_SWAP_BYTES'><source-position first-line='10961' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNSIGNED_BYTE'><doc><text><p>Used in <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glIndexPointer</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_UNSIGNED_BYTE'><source-position first-line='10965' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNSIGNED_INT'><doc><text><p>Used in <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_UNSIGNED_INT'><source-position first-line='10969' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNSIGNED_INT_8_8_8_8'><doc/>
<constant name='GL_UNSIGNED_INT_8_8_8_8'><source-position first-line='10973' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNSIGNED_INT_8_8_8_8_REV'><doc/>
<constant name='GL_UNSIGNED_INT_8_8_8_8_REV'><source-position first-line='10976' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_UNSIGNED_SHORT'><doc><text><p>Used in <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref>glColorPointer</ref>, <ref resolved='predef::GL.glTexSubImage2D'>glTexSubImage2D</ref>, <ref>glGetTexImage</ref>, <ref>glCallLists</ref>, <ref>glReadPixels</ref>, <ref resolved='predef::GL.glTexImage2D'>glTexImage2D</ref>, <ref>glTexSubImage1D</ref> and <ref>glTexImage1D</ref></p>
</text></doc>
<constant name='GL_UNSIGNED_SHORT'><source-position first-line='10979' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_V2F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_V2F'><source-position first-line='10983' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_V3F'><doc><text><p>Used in <ref>glInterleavedArrays</ref></p>
</text></doc>
<constant name='GL_V3F'><source-position first-line='10987' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VENDOR'><doc><text><p>Used in <ref resolved='predef::GL.glGetString'>glGetString</ref></p>
</text></doc>
<constant name='GL_VENDOR'><source-position first-line='10991' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERSION'><doc><text><p>Used in <ref resolved='predef::GL.glGetString'>glGetString</ref></p>
</text></doc>
<constant name='GL_VERSION'><source-position first-line='10995' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERSION_1_1'><doc/>
<constant name='GL_VERSION_1_1'><source-position first-line='10999' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERTEX_ARRAY'><doc><text><p>Used in <ref resolved='predef::GL.glIsEnabled'>glIsEnabled</ref>, <ref resolved='predef::GL.glArrayElement'>glArrayElement</ref>, <ref>glGetIntegerv</ref>, <ref>glDrawElements</ref>, <ref resolved='predef::GL.glDrawArrays'>glDrawArrays</ref>, <ref>glVertexPointer</ref>, <ref resolved='predef::GL.glEnableClientState'>glEnableClientState</ref>, <ref>glGetPointerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glDisableClientState'>glDisableClientState</ref></p>
</text></doc>
<constant name='GL_VERTEX_ARRAY'><source-position first-line='11002' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERTEX_ARRAY_POINTER'><doc><text><p>Used in <ref>glGetPointerv</ref></p>
</text></doc>
<constant name='GL_VERTEX_ARRAY_POINTER'><source-position first-line='11006' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERTEX_ARRAY_SIZE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_VERTEX_ARRAY_SIZE'><source-position first-line='11010' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERTEX_ARRAY_STRIDE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_VERTEX_ARRAY_STRIDE'><source-position first-line='11014' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VERTEX_ARRAY_TYPE'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_VERTEX_ARRAY_TYPE'><source-position first-line='11018' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VIEWPORT'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref> and <ref>glGetDoublev</ref></p>
</text></doc>
<constant name='GL_VIEWPORT'><source-position first-line='11022' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_VIEWPORT_BIT'><doc><text><p>Used in <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref> and <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref></p>
</text></doc>
<constant name='GL_VIEWPORT_BIT'><source-position first-line='11026' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_WRAP_BORDER_SUN'><doc/>
<constant name='GL_WRAP_BORDER_SUN'><source-position first-line='11030' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_XOR'><doc><text><p>Used in <ref resolved='predef::GL.glLogicOp'>glLogicOp</ref></p>
</text></doc>
<constant name='GL_XOR'><source-position first-line='11033' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ZERO'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glBlendFunc'>glBlendFunc</ref>, <ref>glGetBooleanv</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glStencilOp'>glStencilOp</ref></p>
</text></doc>
<constant name='GL_ZERO'><source-position first-line='11037' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ZOOM_X'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_ZOOM_X'><source-position first-line='11041' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='GL_ZOOM_Y'><doc><text><p>Used in <ref>glGetIntegerv</ref>, <ref resolved='predef::GL.glDrawPixels'>glDrawPixels</ref>, <ref resolved='predef::GL.glPopAttrib'>glPopAttrib</ref>, <ref>glGetBooleanv</ref>, <ref resolved='predef::GL.glPushAttrib'>glPushAttrib</ref>, <ref>glGetFloatv</ref>, <ref>glGetDoublev</ref> and <ref resolved='predef::GL.glCopyPixels'>glCopyPixels</ref></p>
</text></doc>
<constant name='GL_ZOOM_Y'><source-position first-line='11045' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/GL/autodoc.c'/></constant>
</docgroup>
</module>

<module name='Bz2'><doc><text><p>The Bz2 module contains functions to compress and uncompress strings using
 the same algorithm as the program <tt>bzip2</tt>. Compressing and decompressing
 can be done in streaming mode feeding the compress and decompress objects 
 with arbitrarily large pieces of data.
 The Bz2 module consists of three classes; Bz2.Deflate,Bz2.Inflate. and Bz2.File
 Bz2.Deflate is used to compress data
 and Bz2.Inflate is used to uncompress data. (Think "inflatable boat")
 Bz2.File is used to handle Bzip2 files.</p>
</text><group><note/><text><p>Note that this module is only available if libbzip2 was
   available when Pike was compiled.</p>
<p>   Note that although the functions in Inflate and Deflate use the same <i>algorithm</i> as
   <tt>bzip2</tt>, they do not use the exact same format, so you can not directly
   zip files or unzip zip-files using those functions. That is why there exists a third 
   class for files.</p>
</text></group></doc>

<class name='Deflate'><doc><text><p>Bz2.Deflate is a builtin program written in C. It interfaces the
 packing routines in the bzlib 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::Bz2.Inflate'>Bz2.Inflate()</ref></p>
</text></group></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>If given, <ref resolved='predef::Bz2.Deflate.create.compression'>compression</ref> should be a number from 1 to 9 indicating the
 block size used when doing compression. The actual block size will
 be a 100000 times this number. Low numbers are considered 'fast',
 higher numbers are considered 'slow' but give better packing.
 The parameter is set to <tt>9</tt> if it is omitted.</p>
<p> This function can also be used to re-initialize a Bz2.Deflate object
 so it can be re-used.</p>
</text></doc>
<method name='create'>
<arguments><argument name='compression'><type><or><int><min>1</min><max>9</max></int><void/></or></type></argument><argument name='work'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='feed'><doc><text><p>This function feeds the data to the internal buffers of 
 the Deflate object. All data is buffered until a read or
 a finish is done.</p>
</text><group><seealso/><text><p><ref resolved='predef::Bz2.Deflate.read'>Bz2.Deflate-&gt;read()</ref>
 <ref resolved='predef::Bz2.Deflate.finish'>Bz2.Deflate-&gt;finish()</ref></p>
</text></group></doc>
<method name='feed'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read'><doc><text><p>This function feeds the data to the internal buffers of 
 the Deflate object. Then it compresses all buffered data
 and returns the compressed data as a string</p>
</text><group><seealso/><text><p><ref resolved='predef::Bz2.Deflate.feed'>Bz2.Deflate-&gt;feed()</ref>
 <ref resolved='predef::Bz2.Deflate.finish'>Bz2.Deflate-&gt;finish()</ref></p>
</text></group></doc>
<method name='read'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='finish'><doc><text><p>This method feeds the data to the internal buffers of 
 the Deflate object. Then it compresses all buffered data
 adds a end of data marker ot it, returns the compressed 
 data as a string, and reinitializes the deflate object.</p>
</text><group><seealso/><text><p><ref resolved='predef::Bz2.Deflate.feed'>Bz2.Deflate-&gt;feed()</ref>
 <ref resolved='predef::Bz2.Deflate.read'>Bz2.Deflate-&gt;read()</ref></p>
</text></group></doc>
<method name='finish'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='deflate'><doc><text><p>This function performs bzip2 style compression on a string <ref resolved='predef::Bz2.Deflate.deflate.data'>data</ref> and
 returns the packed data. Streaming can be done by calling this
 function several times and concatenating the returned data.</p>
<p> The optional argument <ref resolved='predef::Bz2.Deflate.deflate.flush_mode'>flush_mode</ref> should be one of the following:</p>
<int><group><value>Bz2.BZ_RUN</value><text><p>Runs Bz2.Deflate-&gt;feed()</p>
</text></group><group><value>Bz2.BZ_FLUSH</value><text><p>Runs Bz2.Deflate-&gt;read()</p>
</text></group><group><value>Bz2.BZ_FINISH</value><text><p>Runs Bz2.Deflate-&gt;finish()</p>
</text></group></int>
</text><group><seealso/><text><p><ref resolved='predef::Bz2.Inflate.inflate'>Bz2.Inflate-&gt;inflate()</ref></p>
</text></group></doc>
<method name='deflate'>
<arguments><argument name='data'><type><string/></type></argument><argument name='flush_mode'><type><or><int><min>0</min><max>2</max></int><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='Inflate'><doc><text><p>Bz2.Inflate is a builtin program written in C. It interfaces the
 unpacking routines in the libz library.</p>
</text><group><note/><text><p>This program is only available if bzlib was available and found when
 Pike was compiled.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Bz2.Deflate'>Deflate</ref></p>
</text></group></doc><docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='inflate'><doc><text><p>This function performs bzip2 style decompression. It can do
 decompression with arbitrarily large pieces of data. When fed with 
 data, it decompresses as much as it can and buffers the rest.</p>
</text><group><example/><text><p>while(..){
   foo = compressed_data[i..i+9]; 
   uncompressed_concatenated_data += inflate_object-&gt;inflate(foo);
   i = i+10;
 }</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Bz2.Deflate.deflate'>Bz2.Deflate-&gt;deflate()</ref></p>
</text></group></doc>
<method name='inflate'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='File'><doc><text><p>Low-level implementation of read/write support for Bzip2 files</p>
</text></doc><docgroup homogen-type='method' homogen-name='close'><doc><text><p>closes the file</p>
</text></doc>
<method name='close'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>Creates a Bz2.File object</p>
</text></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read_open'><doc><text><p>Opens a file for reading.</p>
</text><group><param name='file'/><text><p>The name of the file to be opened</p>
</text></group></doc>
<method name='read_open'>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='write_open'><doc><text><p>Opens a file for writing.</p>
</text><group><param name='file'/><text><p>The name of the file to be opened</p>
</text></group></doc>
<method name='write_open'>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='open'><doc><text><p>Opens a file for I/O.</p>
</text><group><param name='file'/><text><p>The name of the file to be opened</p>
</text></group><group><param name='mode'/><text><p>Mode for the file operations. Can be either <expr>"r"</expr> (read)
   or <expr>"w"</expr>. Read is default.</p>
</text></group></doc>
<method name='open'>
<arguments><argument name='file'><type><string/></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='write'><doc><text><p>Writes the data to the file.</p>
</text><group><returns/><text><p>the number of bytes written to the file.</p>
</text></group></doc>
<method name='write'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read'><doc><text><p>Reads len (uncompressed) bytes from the file.
 If len is omitted the whole file is read.
 If read is unsuccessful, 0 is returned.</p>
</text></doc>
<method name='read'>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><or><int/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='eof'><doc><group><returns/><text><p>1 if EOF has been reached,
  0 otherwise</p>
</text></group></doc>
<method name='eof'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class></module>

<module name='Shuffler'>

<class name='Throttler'><doc><group><note/><text><p>This is an interface that all <ref resolved='predef::Shuffler.Throttler'>Throttler</ref>s must implement.
  It's not an actual class in this module.</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='request'><doc><text><p>This function is called when the <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> wants to send some
 data to a client.</p>
<p> When data can be sent, the <ref resolved='predef::Shuffler.Throttler.request.callback'>callback</ref> function should be called
 with the amount of data that can be sent as the argument.</p>
</text></doc>
<method name='request'>
<arguments><argument name='shuffle'><type><object resolved='predef::Shuffler.Shuffle'>Shuffle</object></type></argument><argument name='amount'><type><int/></type></argument><argument name='callback'><type><function><argtype><int/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='give_back'><doc><text><p>This function will be called by the <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object to report
 that some data assigned to it by this throttler was unusued, and
 can be given to another <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object instead.</p>
</text></doc>
<method name='give_back'>
<arguments><argument name='shuffle'><type><object resolved='predef::Shuffler.Shuffle'>Shuffle</object></type></argument><argument name='amount'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Shuffle'><doc><text><p>This class contains the state for one ongoing data
 shuffling operation. To create a <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> instance, use the
 <ref resolved='predef::Shuffler.Shuffler.shuffle'>Shuffler()-&gt;shuffle</ref> method.</p>
</text></doc><docgroup homogen-type='variable' homogen-name='shuffler'><doc><text><p>The <ref resolved='predef::Shuffler.Shuffler'>Shuffler</ref> that owns this <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object</p>
</text></doc>
<variable name='shuffler'><type><object resolved='predef::Shuffler.Shuffler'>Shuffler</object></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='throttler'><doc><text><p>The <ref resolved='predef::Shuffler.Throttler'>Throttler</ref> that is associated with this <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object,
 if any.</p>
</text></doc>
<variable name='throttler'><type><object resolved='predef::Shuffler.Throttler'>Throttler</object></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_throttler'><doc><text><p>Calling this function overrides the <ref resolved='predef::Shuffler.Shuffler'>Shuffler</ref> global throttler.</p>
</text></doc>
<method name='set_throttler'>
<arguments><argument name='t'><type><object resolved='predef::Shuffler.Throttler'>Throttler</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sent_data'><doc><text><p>Returns the amount of data that has been sent so far.</p>
</text></doc>
<method name='sent_data'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='state'><doc><text><p>Returns the current state of the shuffler.
 This is one of the following:
   <ref resolved='predef::Shuffler.INITIAL'>INITIAL</ref>, 
   <ref resolved='predef::Shuffler.RUNNING'>RUNNING</ref>, 
   <ref resolved='predef::Shuffler.PAUSED'>PAUSED</ref>, 
   <ref resolved='predef::Shuffler.DONE'>DONE</ref>, 
   <ref resolved='predef::Shuffler.WRITE_ERROR'>WRITE_ERROR</ref>, 
   <ref resolved='predef::Shuffler.READ_ERROR'>READ_ERROR</ref> and
   <ref resolved='predef::Shuffler.USER_ABORT'>USER_ABORT</ref></p>
</text></doc>
<method name='state'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_done_callback'><doc><text><p>Sets the done callback. This function will be called when all
 sources have been processed, or if an error occurs.</p>
</text></doc>
<method name='set_done_callback'>
<arguments><argument name='cb'><type><function><argtype><object resolved='predef::Shuffler.Shuffle'>Shuffle</object></argtype><argtype><int/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_request_arg'><doc><text><p>Sets the extra argument sent to <ref resolved='predef::Shuffler.Throttler.request'>Throttler()-&gt;request()</ref> and
 <ref resolved='predef::Shuffler.Throttler.give_back'>Throttler()-&gt;give_back</ref>.</p>
</text></doc>
<method name='set_request_arg'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='send_more_callback'><doc/>
<method name='send_more_callback'>
<arguments><argument name='amount'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='write_callback'><doc/>
<method name='write_callback'>
<arguments><argument name='x'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments><argument name='fd'><type><object resolved='predef::Shuffler.Shuffle.create'/></type></argument><argument name='shuffler'><type><object resolved='predef::Shuffler.Shuffle.create'/></type></argument><argument name='throttler'><type><mixed/></type></argument><argument name='backend'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='start'><doc><text><p>Start sending data from the sources.</p>
</text></doc>
<method name='start'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pause'><doc><text><p>Temporarily pause all data transmission</p>
</text></doc>
<method name='pause'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='stop'><doc><text><p>Stop all data transmission, and then call the done callback</p>
</text></doc>
<method name='stop'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_source'><doc><text><p>Add a new source to the list of data sources.
 The data from the sources will be sent in order.</p>
<p> If start and length are not specified, the whole source will be
 sent, if start but not length is specified, the whole source,
 excluding the first <ref resolved='predef::Shuffler.Shuffle.add_source.start'>start</ref> bytes will be sent.</p>
<p> Currently supported sources</p>
<dl><group><item name='String'/><text><p>An ordinary 8-bit wide pike string.</p>
</text></group><group><item name='Memory'/><text><p>An initialized instance of the System.Memory class.</p>
</text></group><group><item name='NormalFile'/><text><p>Stdio.File instance pointing to a normal file.</p>
</text></group><group><item name='Stream'/><text><p>Stdio.File instance pointing to a stream of some kind
     (network socket, named pipe, stdin etc).</p>
</text></group><group><item name='Pike-stream'/><text><p>Stdio.File lookalike with read callback support
     (set_read_callback and set_close_callback).</p>
</text></group></dl></text></doc>
<method name='add_source'>
<arguments><argument name='source'><type><mixed/></type></argument><argument name='start'><type><or><int/><void/></or></type></argument><argument name='length'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Shuffler'><doc><text><p>A data shuffler. An instance of this class handles a list of
 <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects. Each <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object can send data from one
 or more sources to a destination in the background.</p>
</text></doc><docgroup homogen-type='method' homogen-name='set_backend'><doc><text><p>Set the backend that will be used by all <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects created
 from this shuffler.</p>
</text></doc>
<method name='set_backend'>
<arguments><argument name='b'><type><object resolved='predef::Pike.Backend'>Pike.Backend</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_throttler'><doc><text><p>Set the throttler that will be used in all <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects
 created from this shuffler, unless overridden in the
 <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects.</p>
</text></doc>
<method name='set_throttler'>
<arguments><argument name='t'><type><object resolved='predef::Shuffler.Throttler'>Throttler</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pause'><doc><text><p>Pause all <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects associated with this <ref resolved='predef::Shuffler.Shuffler'>Shuffler</ref></p>
</text></doc>
<method name='pause'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='start'><doc><text><p>Unpause all <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> objects associated with this <ref resolved='predef::Shuffler.Shuffler'>Shuffler</ref></p>
</text></doc>
<method name='start'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='shuffle'><doc><text><p>Create a new <ref resolved='predef::Shuffler.Shuffle'>Shuffle</ref> object.</p>
</text></doc>
<method name='shuffle'>
<arguments><argument name='destination'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><object resolved='predef::Shuffler.Shuffle'>Shuffle</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant'><doc/>
<constant name='INITIAL'><source-position first-line='1266' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='RUNNING'><source-position first-line='1267' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='PAUSED'><source-position first-line='1268' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='DONE'><source-position first-line='1269' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='WRITE_ERROR'><source-position first-line='1270' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='READ_ERROR'><source-position first-line='1271' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
<constant name='USER_ABORT'><source-position first-line='1272' file='/home/peter/hack/Pike/7.6-distmaker/src/post_modules/Shuffler/Shuffler.c'/></constant>
</docgroup>
</module>

<module name='Image'>

<module name='SVG'><doc><text><p>This is a glue against the librsvg-2.0 library,
 providing Scalable Vector Graphics (SVG) for Pike.</p>
</text></doc><docgroup homogen-type='method' homogen-name='decode_header'><doc><text><p>Data is the SVG data, the charset must be unicode.</p>
<p>  If <ref resolved='predef::Image.SVG.decode_header.options'>options</ref> is specified, it contains one or more of the
  following options</p>
<mapping><group><member><type><int/></type><index>xsize</index></member><text><p>If specified, gives the exact width in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>If specified, gives the exact height in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><float/></type><index>scale</index></member><text><p>If specified, gives the scale the image will be drawn with.
   A scale of 2.0 will give an image that is twice as large.</p>
</text></group></mapping><p>The result is a mapping with the following members:</p>
<mapping><group><member><type><string/></type><index>type</index></member><text><p>Always image/svg</p>
</text></group><group><member><type><int/></type><index>xsize</index></member><text><p>The width of the image, in pixels</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>The height of the image, in pixels</p>
</text></group></mapping></text></doc>
<method name='decode_header'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_decode'><doc><text><p>Data is the SVG data, the charset must be unicode.</p>
<p>  If <ref resolved='predef::Image.SVG._decode.options'>options</ref> is specified, it contains one or more of the
  following options</p>
<mapping><group><member><type><int/></type><index>xsize</index></member><text><p>If specified, gives the exact width in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>If specified, gives the exact height in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><float/></type><index>scale</index></member><text><p>If specified, gives the scale the image will be drawn with.
   A scale of 2.0 will give an image that is twice as large.</p>
</text></group></mapping><p>The result is a mapping with the following members:</p>
<mapping><group><member><type><string/></type><index>type</index></member><text><p>Always image/svg</p>
</text></group><group><member><type><int/></type><index>xsize</index></member><text><p>The width of the image, in pixels</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>The height of the image, in pixels</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>image</index></member><text><p>The image data</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>alpha</index></member><text><p>The alpha channel data</p>
</text></group></mapping></text></doc>
<method name='_decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode_layers'><doc><text><p>Data is the SVG data, the charset must be unicode.</p>
<p>  If <ref resolved='predef::Image.SVG.decode_layers.options'>options</ref> is specified, it contains one or more of the
  following options</p>
<mapping><group><member><type><int/></type><index>xsize</index></member><text><p>If specified, gives the exact width in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>If specified, gives the exact height in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><float/></type><index>scale</index></member><text><p>If specified, gives the scale the image will be drawn with.
   A scale of 2.0 will give an image that is twice as large.</p>
</text></group></mapping><p>The result is an array of Image.Layer objects.
  For now there is always at most one member in the array.</p>
</text></doc>
<method name='decode_layers'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Image.Layer'>Image.Layer</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode'><doc><text><p>Data is the SVG data, the charset must be unicode.</p>
<p>  If <ref resolved='predef::Image.SVG.decode.options'>options</ref> is specified, it contains one or more of the
  following options</p>
<mapping><group><member><type><int/></type><index>xsize</index></member><text><p>If specified, gives the exact width in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><int/></type><index>ysize</index></member><text><p>If specified, gives the exact height in pixels the image will
   have. If only one of xsize or ysize is specified, the other
   is calculated.</p>
</text></group><group><member><type><float/></type><index>scale</index></member><text><p>If specified, gives the scale the image will be drawn with.
   A scale of 2.0 will give an image that is twice as large.</p>
</text></group></mapping><p>Returns the image member of the mapping returned by _decode</p>
</text></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</module>

<module name='FreeType'><doc><text><p>Pike glue for the FreeType2 library, http://www.freetype.org/</p>
</text></doc>

<class name='Face'><doc><text><p>A FreeType font face. We recommend using the more generic font handling
 interfaces in <ref resolved='predef::Image.Fonts'>Image.Fonts</ref> instead.</p>
</text></doc><docgroup homogen-type='method' homogen-name='write_char'><doc><group><fixme/></group></doc>
<method name='write_char'>
<arguments><argument name='char'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_kerning'><doc><group><fixme/></group></doc>
<method name='get_kerning'>
<arguments><argument name='l'><type><int/></type></argument><argument name='r'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='attach_file'><doc><group><fixme/></group></doc>
<method name='attach_file'>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_size'><doc/>
<method name='set_size'>
<arguments><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.FreeType.Face'>Face</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_encodings'><doc/>
<method name='list_encodings'>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='select_encoding'><doc/>
<method name='select_encoding'>
<arguments><argument name='encoding'><type><or><string/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='info'><doc><group><returns/><text><mapping><group><member><type><string/></type><index>"family"</index></member><text><p>The font family, or the string "unknown"</p>
</text></group><group><member><type><string/></type><index>"style_name"</index></member><text><p>The name of the font style, or "unknown"</p>
</text></group><group><member><type><int/></type><index>"face_flags"</index></member><member><type><int/></type><index>"style_flags"</index></member><text><p>The sum of all face/style flags respectively.</p>
</text></group></mapping></text></group></doc>
<method name='info'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><group><param name='font'/><text><p>The path of the font file to use</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='font'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant'><doc><group><fixme/></group></doc>
<constant name='FACE_FLAG_SCALABLE'><source-position first-line='362' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_FIXED_WIDTH'><source-position first-line='363' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_SFNT'><source-position first-line='364' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_HORIZONTAL'><source-position first-line='365' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_VERTICAL'><source-position first-line='366' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_KERNING'><source-position first-line='367' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_FAST_GLYPHS'><source-position first-line='368' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_MULTIPLE_MASTERS'><source-position first-line='369' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='FACE_FLAG_GLYPH_NAMES'><source-position first-line='370' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><group><fixme/></group></doc>
<constant name='STYLE_FLAG_ITALIC'><source-position first-line='374' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
<constant name='STYLE_FLAG_BOLD'><source-position first-line='375' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_FreeType/freetype.c'/></constant>
</docgroup>
</module>

<module name='TIFF'><docgroup homogen-type='method' homogen-name='decode'><doc><text><p>Decodes a TIFF image.</p>
</text><group><throws/><text><p>Throws upon error in data.</p>
</text></group></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.TIFF.decode'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_decode'><doc><text><p>Decodes a TIFF image to a mapping with at least the members image
 and alpha.</p>
<mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The actual image.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>Image alpha channel.</p>
</text></group><group><member><type><float/></type><index>"xres"</index></member><member><type><float/></type><index>"yres"</index></member><text><p>Resolution</p>
</text></group><group><member><type><string/></type><index>"unit"</index></member><text><string><group><value>"unitless"</value><value>"pixels/inch"</value><value>"pixels/cm"</value></group></string></text></group><group><member><type><float/></type><index>"xdpy"</index></member><member><type><float/></type><index>"ydpy"</index></member><text><p>Resolution</p>
</text></group><group><member><type><int/></type><index>"xposition"</index></member><member><type><int/></type><index>"yposition"</index></member></group><group><member><type><string/></type><index>"photometric"</index></member><text><p>Type of photometric. Can be <expr>"unknown"</expr>.</p>
</text></group><group><member><type><array><valuetype><or><int/><string/></or></valuetype></array></type><index>"extra_samples"</index></member><text><p>Array elements are either integers or any of</p>
<string><group><value>"unspecified"</value><value>"assoc-alpha"</value><value>"unassoc-alpha"</value></group></string></text></group><group><member><type><string/></type><index>"threshholding"</index></member></group><group><member><type><array><valuetype><int/></valuetype></array></type><index>"halftone_hints"</index></member><text><p>Array is always two elements.</p>
</text></group><group><member><type><string/></type><index>"artist"</index></member><member><type><string/></type><index>"datetime"</index></member><member><type><string/></type><index>"hostcomputer"</index></member><member><type><string/></type><index>"software"</index></member><member><type><string/></type><index>"name"</index></member><member><type><string/></type><index>"comment"</index></member><member><type><string/></type><index>"make"</index></member><member><type><string/></type><index>"model"</index></member><member><type><string/></type><index>"page_name"</index></member></group><group><member><type><array><valuetype><int/></valuetype></array></type><index>"page_number"</index></member><text><p>Array is always two elements.</p>
</text></group><group><member><type><array><valuetype><array><valuetype><int/></valuetype></array></valuetype></array></type><index>"colormap"</index></member><text><p>Array of array of RGB values.</p>
</text></group><group><member><type><array><valuetype><int/></valuetype></array></type><index>"whitepoint"</index></member><text><p>Array is always two elements.</p>
</text></group><group><member><type><array><valuetype><float/></valuetype></array></type><index>"primary_chromaticities"</index></member><text><p>Array is always six elements.</p>
</text></group><group><member><type><array><valuetype><array><valuetype><float/></valuetype></array></valuetype></array></type><index>"reference_black_white"</index></member><text><p>Array of array of two elements.</p>
</text></group></mapping>
</text><group><throws/><text><p>Throws upon error in data.</p>
</text></group></doc>
<method name='_decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Encode an image object into a TIFF file. [encode] and <ref resolved='predef::Image.TIFF.encode'>_encode</ref>
 are identical.</p>
<p> The <ref resolved='predef::Image.TIFF.encode.options'>options</ref> argument may be a mapping containing zero or more
 encoding options. See <ref resolved='predef::Image.TIFF._decode'>_decode</ref>.</p>
</text><group><example/><text><p>Image.TIFF.encode(img, ([
	    "compression":Image.TIFF.COMPRESSION_LZW,
	    "name":"an image name",
	    "comment":"an image comment",
	    "alpha":An alpha channel,
	    "dpy":Dots per inch (as a float),
	    "xdpy":Horizontal dots per inch (as a float),
	    "ydpy":Vertical dots per inch (as a float),
   ]));</p>
</text></group></doc>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.TIFF.encode'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.TIFF.encode'/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='_encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.TIFF.encode'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='_encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.TIFF.encode'/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_NONE'><doc/>
<constant name='COMPRESSION_NONE'><source-position first-line='961' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_CCITTRLE'><doc/>
<constant name='COMPRESSION_CCITTRLE'><source-position first-line='964' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_CCITTFAX3'><doc/>
<constant name='COMPRESSION_CCITTFAX3'><source-position first-line='967' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_CCITTFAX4'><doc/>
<constant name='COMPRESSION_CCITTFAX4'><source-position first-line='970' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_CCITTRLEW'><doc/>
<constant name='COMPRESSION_CCITTRLEW'><source-position first-line='973' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_LZW'><doc/>
<constant name='COMPRESSION_LZW'><source-position first-line='976' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_JPEG'><doc/>
<constant name='COMPRESSION_JPEG'><source-position first-line='979' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_NEXT'><doc/>
<constant name='COMPRESSION_NEXT'><source-position first-line='982' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_PACKBITS'><doc/>
<constant name='COMPRESSION_PACKBITS'><source-position first-line='985' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COMPRESSION_THUNDERSCAN'><doc/>
<constant name='COMPRESSION_THUNDERSCAN'><source-position first-line='988' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TIFF/image_tiff.c'/></constant>
</docgroup>
</module>
<source-position first-line='65' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<module name='TTF'>
<source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>
This module adds TTF (Truetype font) capability
to the Image module.
</p>
</text>
<group><note/><text>
<source-position first-line='66' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>This module needs the <tt>libttf</tt> "Freetype" library
</p>
</text></group>

</doc>
<docgroup homogen-name='`()' homogen-type='method'>
<method name='`()'>
   <returntype><object resolved='predef::Image.TTF.`()'/></returntype>
   <arguments><argument name='filename'><type><string/></type></argument>

   </arguments>
</method><method name='`()'>
   <returntype><object resolved='predef::Image.TTF.`()'/></returntype>
   <arguments><argument name='filename'><type><string/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><source-position first-line='205' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='205' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>Makes a new TTF Face object.
</p>
</text>
<group>
   <param name='filename'/>
<text><source-position first-line='212' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>The filename of the <tt>TTF</tt> font or the <tt>TTC</tt>
font collection.
</p></text></group>
<group>
   <param name='options'/>
<text><source-position first-line='216' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p><pre>
advanced options:
    "face":int
        If opening a font collection,  '<tt>.TTC</tt>',
        this is used to get other fonts than the first.
</pre>
</p></text></group>
<group><returns/><text>
<source-position first-line='205' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>0 if failed.</p>
</text></group>

</doc>
</docgroup>

<class name='Face'>
<source-position first-line='266' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='266' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>
This represents instances of TTF Faces.</p>
</text>

</doc>
<docgroup homogen-name='flush' homogen-type='method'>
<method name='flush'>
   <returntype><object resolved='predef::Image.TTF.Face.flush'/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='458' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='458' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>This flushes all cached information.
Might be used to save memory - the face
information is read back from disk upon need.
</p>
</text>
<group><returns/><text>
<source-position first-line='458' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>the object being called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='names'>
   <returntype><mapping/></returntype>
   <arguments>
   </arguments>
</method><method name='_names'>
   <returntype>
        <array><valuetype><array/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>Gives back the names or the complete name-list
of this face.</p>

<p>The result from <ref resolved='predef::Image.TTF.Face.names'>names</ref>() is a mapping,
which has any or all of these indices:
<pre>
"copyright":   ("Copyright the Foo Corporation...bla bla")
"family":      ("My Little Font")
"style":       ("Bold")
"full":        ("Foo: My Little Font: 1998")
"expose":      ("My Little Font Bold")
"version":     ("June 1, 1998; 1.00, ...")
"postscript":  ("MyLittleFont-Bold")
"trademark":   ("MyLittleFont is a registered...bla bla")
</pre></p>

<p>This is extracted from the information from _names(),
and fit into pike-strings using unicode or iso-8859-1,
if possible.</p>

<p>The result from <ref resolved='predef::Image.TTF.Face.names'>_names</ref>() is a
matrix, on this form: <pre>
     ({ ({ int platform, encoding, language, id, string name }),
        ({ int platform, encoding, language, id, string name }),
        ...
     })
</pre>
</p>
</text>
<group><returns/><text>
<source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>the name as a mapping to string or the names as a matrix</p>
</text></group>
<group><note/><text>
<source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>To use the values from <ref resolved='predef::Image.TTF.Face.names'>_names</ref>(),
check the TrueType standard documentation.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='properties' homogen-type='method'>
<method name='properties'>
   <returntype><mapping/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='292' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='292' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>This gives back a structure of the face's properties.
Most of this stuff is information you can skip.</p>

<p>The most interesting item to look at may be
<tt>-&gt;num_Faces</tt>, which describes the number of faces
in a <tt>.TTC</tt> font collection.
</p>
</text>
<group><returns/><text>
<source-position first-line='292' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>a mapping of a lot of properties</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='`()' homogen-type='method'>
<method name='`()'>
   <returntype><object resolved='predef::Image.TTF.Face.`()'/></returntype>
   <arguments>
   </arguments>
</method><source-position first-line='608' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='608' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>This instantiates the face for normal usage -
to convert font data to images.
</p>
</text>
<group><returns/><text>
<source-position first-line='608' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>a <ref resolved='predef::Image.TTF.FaceInstance'>Image.TTF.FaceInstance</ref> object.</p>
</text></group>

</doc>
</docgroup>

</class>

<class name='FaceInstance'>
<source-position first-line='624' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='624' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>This is the instance of a face, with geometrics,
encodings and stuff.
</p>
</text>

</doc>
<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='face'><type><object resolved='predef::Image.TTF.FaceInstance.create'/></type></argument>

   </arguments>
</method><source-position first-line='628' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<doc>
<text>
<source-position first-line='628' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_TTF/image_ttf.c'/>
<p>creates a new Instance from a face.</p>
</text>

</doc>
</docgroup>

</class>

</module>



<module name='JPEG'><doc><group><note/><text><p>This module uses <tt>libjpeg</tt>, a software from
	Independent JPEG Group.</p>
</text></group></doc>

<class name='Marker'><docgroup homogen-type='constant' homogen-name='EOI'><doc/>
<constant name='EOI'><source-position first-line='1416' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='RST0'><doc/>
<constant name='RST0'><source-position first-line='1419' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='COM'><doc/>
<constant name='COM'><source-position first-line='1422' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP0'><doc/>
<constant name='APP0'><source-position first-line='1425' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP1'><doc/>
<constant name='APP1'><source-position first-line='1428' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP2'><doc/>
<constant name='APP2'><source-position first-line='1431' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP3'><doc/>
<constant name='APP3'><source-position first-line='1434' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP4'><doc/>
<constant name='APP4'><source-position first-line='1437' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP5'><doc/>
<constant name='APP5'><source-position first-line='1440' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP6'><doc/>
<constant name='APP6'><source-position first-line='1443' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP7'><doc/>
<constant name='APP7'><source-position first-line='1446' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP8'><doc/>
<constant name='APP8'><source-position first-line='1449' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP9'><doc/>
<constant name='APP9'><source-position first-line='1452' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP10'><doc/>
<constant name='APP10'><source-position first-line='1455' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP11'><doc/>
<constant name='APP11'><source-position first-line='1458' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP12'><doc/>
<constant name='APP12'><source-position first-line='1461' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP13'><doc/>
<constant name='APP13'><source-position first-line='1464' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP14'><doc/>
<constant name='APP14'><source-position first-line='1467' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='APP15'><doc/>
<constant name='APP15'><source-position first-line='1470' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='encode'><doc><text><p>Encodes an <ref resolved='predef::Image.JPEG.encode.image'>image</ref> object with JPEG compression. The image
 may also be a string containing a raw JPEG image. In the
 The <ref resolved='predef::Image.JPEG.encode.options'>options</ref> argument may be a mapping containing zero or more
 encoding options:</p>
<mapping><group><member><type><int><min>0</min><max>100</max></int></type><index>"quality"</index></member><text><p>Set quality of result. Default is 75.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"optimize"</index></member><text><p>Optimize Huffman table. Default is on (1) for
     images smaller than 50kpixels.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"progressive"</index></member><text><p>Make a progressive JPEG. Default is off (0).</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"grayscale"</index></member><text><p>Make a grayscale JPEG instead of color (YCbCr).</p>
</text></group><group><member><type><int><min>1</min><max>100</max></int></type><index>"smooth"</index></member><text><p>Smooth input. Value is strength.</p>
</text></group><group><member><type><int/></type><index>"method"</index></member><text><p>DCT method to use. Any of
     <ref resolved='predef::Image.JPEG.IFAST'>IFAST</ref>, <ref resolved='predef::Image.JPEG.ISLOW'>ISLOW</ref>, <ref resolved='predef::Image.JPEG.FLOAT'>FLOAT</ref>, <ref resolved='predef::Image.JPEG.DEFAULT'>DEFAULT</ref> or <ref resolved='predef::Image.JPEG.FASTEST'>FASTEST</ref>.
     <ref resolved='predef::Image.JPEG.DEFAULT'>DEFAULT</ref> and <ref resolved='predef::Image.JPEG.FASTEST'>FASTEST</ref> is from the jpeg library,
     probably <ref resolved='predef::Image.JPEG.ISLOW'>ISLOW</ref> and <ref resolved='predef::Image.JPEG.IFAST'>IFAST</ref> respectively.</p>
</text></group><group><member><type><int><min>0</min><max>2</max></int></type><index>"density_unit"</index></member><text><p>The unit used for x_density and y_density.</p>
<int><group><value>0</value><text><p>No unit</p>
</text></group><group><value>1</value><text><p>dpi</p>
</text></group><group><value>2</value><text><p>dpcm</p>
</text></group></int></text></group><group><member><type><int/></type><index>"x_density"</index></member><member><type><int/></type><index>"y_density"</index></member><text><p>Density of image.</p>
</text></group><group><member><type><string/></type><index>"comment"</index></member><text><p>Comment to be written in the JPEG file. Must not be a wide string.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"baseline"</index></member><text><p>Force baseline output. Useful for quality&lt;25.
     Default is off for quality&lt;25.</p>
</text></group><group><member><type><mapping><indextype><int/></indextype><valuetype><array><valuetype><array><valuetype><int/></valuetype></array></valuetype></array></valuetype></mapping></type><index>"quant_tables"</index></member><text><p>Tune quantisation tables manually.</p>
</text></group><group><member><type><mapping><indextype><int/></indextype><valuetype><string/></valuetype></mapping></type><index>"marker"</index></member><text><p>Application and comment markers;
     the integer should be one of <ref resolved='predef::Image.JPEG.Marker.COM'>Marker.COM</ref>, <ref resolved='predef::Image.JPEG.Marker.APP0'>Marker.APP0</ref>,
     <ref resolved='predef::Image.JPEG.Marker.APP1'>Marker.APP1</ref>, ..., <ref resolved='predef::Image.JPEG.Marker.APP15'>Marker.APP15</ref>. The string is up to the application;
     most notable are Adobe and Photoshop markers.</p>
</text></group><group><member><type><int/></type><index>"transform"</index></member><text><p>Lossless image transformation. Has only effect when supplying a
     JPEG file as indata.</p>
<int><group><value>FLIP_H</value><text><p>Flip image horizontally</p>
</text></group><group><value>FLIP_V</value><text><p>Flip image vertically</p>
</text></group><group><value>ROT_90</value><text><p>Rotate image 90 degrees clockwise</p>
</text></group><group><value>ROT_180</value><text><p>Rotate image 180 degrees clockwise</p>
</text></group><group><value>ROT_270</value><text><p>Rotate image 270 degrees clockwise</p>
</text></group><group><value>TRANSPOSE</value><text><p>Transpose image</p>
</text></group><group><value>TRANSVERSE</value><text><p>Transverse image</p>
</text></group></int></text></group></mapping>
</text><group><note/><text><p>Please read some about JPEG files. A quality
   setting of 100 does not mean the result is lossless.</p>
</text></group></doc>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.JPEG.encode'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='encode'>
<arguments><argument name='image'><type><or><string/><object resolved='predef::Image.JPEG.encode'/></or></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Decodes a JPEG image. The simple <ref resolved='predef::Image.JPEG.decode'>decode</ref> function
 simply gives the image object, the other functions gives
 a mapping of information (see below).</p>
<p> The <ref resolved='predef::Image.JPEG.decode.options'>options</ref> argument may be a mapping
 containing zero or more decoding options:</p>
<mapping><group><member><type><int><min>0</min><max>1</max></int></type><index>"block_smoothing"</index></member><text><p>Do interblock smoothing. Default is on (1).</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"fancy_upsampling"</index></member><text><p>Do fancy upsampling of chroma components.
     Default is on (1).</p>
</text></group><group><member><type><int/></type><index>"method"</index></member><text><p>DCT method to use. Any of
     <ref resolved='predef::Image.JPEG.IFAST'>IFAST</ref>, <ref resolved='predef::Image.JPEG.ISLOW'>ISLOW</ref>, <ref resolved='predef::Image.JPEG.FLOAT'>FLOAT</ref>, <ref resolved='predef::Image.JPEG.DEFAULT'>DEFAULT</ref> or <ref resolved='predef::Image.JPEG.FASTEST'>FASTEST</ref>.
     <ref resolved='predef::Image.JPEG.DEFAULT'>DEFAULT</ref> and <ref resolved='predef::Image.JPEG.FASTEST'>FASTEST</ref> is from the jpeg library,
     probably <ref resolved='predef::Image.JPEG.ISLOW'>ISLOW</ref> and <ref resolved='predef::Image.JPEG.IFAST'>IFAST</ref> respective.</p>
</text></group><group><member><type><int><min>1</min><max/></int></type><index>"scale_num"</index></member><member><type><int><min>1</min><max/></int></type><index>"scale_denom"</index></member><text><p>Rescale the image when read from JPEG data.
     My (Mirar) version (6a) of jpeglib can only handle
     1/1, 1/2, 1/4 and 1/8.</p>
</text></group></mapping><p><ref resolved='predef::Image.JPEG.decode'>_decode</ref> and <ref resolved='predef::Image.JPEG.decode'>decode_header</ref> gives
 a mapping as result, with this content:</p>
<mapping><group><member><type><string/></type><index>"comment"</index></member><text><p>Comment marker of JPEG file, if present.</p>
</text></group><group><member><type><int/></type><index>"xsize"</index></member><member><type><int/></type><index>"ysize"</index></member><text><p>Size of image</p>
</text></group><group><member><type><float/></type><index>"xdpi"</index></member><member><type><float/></type><index>"ydpi"</index></member><text><p>Image dpi, if known.</p>
</text></group><group><member><type><string/></type><index>"type"</index></member><text><p>File type information as MIME type. Always "image/jpeg".</p>
</text></group><group><member><type><int/></type><index>"num_compontents"</index></member><text><p>Number of channels in JPEG image.</p>
</text></group><group><member><type><string/></type><index>"color_space"</index></member><text><p>Color space of JPEG image. Any of "GRAYSCALE", "RGB", "YUV",
     "CMYK", "YCCK" or "UNKNOWN".</p>
</text></group><group><member><type><int><min>0</min><max>2</max></int></type><index>"density_unit"</index></member><text><p>The unit used for x_density and y_density.</p>
<int><group><value>0</value><text><p>No unit</p>
</text></group><group><value>1</value><text><p>dpi</p>
</text></group><group><value>2</value><text><p>dpcm</p>
</text></group></int></text></group><group><member><type><int/></type><index>"x_density"</index></member><member><type><int/></type><index>"y_density"</index></member><text><p>Density of image.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"adobe_marker"</index></member><text><p>If the file has an Adobe marker.</p>
</text></group><group><member><type><mapping><indextype><int/></indextype><valuetype><array><valuetype><array><valuetype><int/></valuetype></array></valuetype></array></valuetype></mapping></type><index>"quant_tables"</index></member><text><p>JPEG quant tables.</p>
</text></group><group><member><type><int><min>0</min><max>100</max></int></type><index>"quality"</index></member><text><p>JPEG quality guess.</p>
</text></group></mapping></text></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.JPEG.decode'/></returntype>
</method>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><object resolved='predef::Image.JPEG.decode'/></returntype>
</method>
<method name='_decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='_decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='decode_header'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='quant_tables'><doc><group><fixme/><text><p>Document this function</p>
</text></group></doc>
<method name='quant_tables'>
<arguments><argument name='a'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping><indextype><int/></indextype><valuetype><array><valuetype><array><valuetype><int/></valuetype></array></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='IFAST'><doc/>
<constant name='IFAST'><source-position first-line='1377' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='FLOAT'><doc/>
<constant name='FLOAT'><source-position first-line='1380' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='DEFAULT'><doc/>
<constant name='DEFAULT'><source-position first-line='1383' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ISLOW'><doc/>
<constant name='ISLOW'><source-position first-line='1386' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='FASTEST'><doc/>
<constant name='FASTEST'><source-position first-line='1389' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='FLIP_H'><doc/>
<constant name='FLIP_H'><source-position first-line='1392' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='FLIP_V'><doc/>
<constant name='FLIP_V'><source-position first-line='1395' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ROT_90'><doc/>
<constant name='ROT_90'><source-position first-line='1398' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ROT_180'><doc/>
<constant name='ROT_180'><source-position first-line='1401' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='ROT_270'><doc/>
<constant name='ROT_270'><source-position first-line='1404' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TRANSPOSE'><doc/>
<constant name='TRANSPOSE'><source-position first-line='1407' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='TRANSVERSE'><doc/>
<constant name='TRANSVERSE'><source-position first-line='1410' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_JPEG/image_jpeg.c'/></constant>
</docgroup>
</module>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/gif_lzw.c' first-line='9'/>

<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='9'/>
<module name='GIF'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='10'/>
<p>
This submodule keep the GIF encode/decode capabilities
of the <ref resolved='predef::Image.Image'>Image</ref> module.</p>

<p>GIF is a common image storage format,
usable for a limited color palette - a GIF image can
only contain as most 256 colors - and animations.</p>

<p>Simple encoding:
<ref resolved='predef::Image.GIF.encode'>encode</ref>, <ref resolved='predef::Image.GIF.encode'>encode_trans</ref></p>

<p>Advanced stuff:
<ref resolved='predef::Image.GIF.render_block'>render_block</ref>, <ref resolved='predef::Image.GIF.header_block'>header_block</ref>,
<ref resolved='predef::Image.GIF.end_block'>end_block</ref>, <ref resolved='predef::Image.GIF.netscape_loop_block'>netscape_loop_block</ref></p>

<p>Very advanced stuff:
<ref resolved='predef::Image.GIF._render_block'>_render_block</ref>, <ref resolved='predef::Image.GIF._gce_block'>_gce_block</ref>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-name='decode' homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.GIF.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.GIF.decode'/></returntype>
   <arguments><argument name='_decoded'><type><array/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.GIF.decode'/></returntype>
   <arguments><argument name='__decoded'><type><array/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2029'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2029'/>
<p>Decodes GIF data and creates an image object.</p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2029'/>
<p>the decoded image as an image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2029'/>
<p>This function may throw errors upon illegal GIF data.
This function uses <ref resolved='predef::Image.GIF.__decode'>__decode</ref>, <ref resolved='predef::Image.GIF._decode'>_decode</ref>,
<ref resolved='predef::Image.Image.paste'>Image.Image-&gt;paste</ref> and
<ref resolved='predef::Image.Image.paste_alpha'>Image.Image-&gt;paste_alpha</ref> internally.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.encode'>encode</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='decode_layers'>
   <returntype><object resolved='predef::Image.GIF.decode_layers'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_layers'>
   <returntype><object resolved='predef::Image.GIF.decode_layers'/></returntype>
   <arguments><argument name='_decoded'><type><array/></type></argument>

   </arguments>
</method><method name='decode_layer'>
   <returntype><object resolved='predef::Image.GIF.decode_layers'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_layer'>
   <returntype><object resolved='predef::Image.GIF.decode_layers'/></returntype>
   <arguments><argument name='_decoded'><type><array/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2120'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2120'/>
<p>Decodes GIF data and creates an array of layers
or the resulting layer.</p>

<p/>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2120'/>
<p>The resulting layer may not have the same size
as the gif image, but the resulting bounding box
of all render chunks in the gif file.
The offset should be correct, though.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.encode'>encode</ref>, <ref resolved='predef::Image.GIF.decode_map'>decode_map</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='decode_map' homogen-type='method'>
<method name='decode_map'>
   <returntype><mapping/></returntype>
   <arguments><argument name='layers'><type>
   <or><string/><array/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2222'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2222'/>
<p>Returns a mapping similar to other decoders
<tt>_decode</tt> function.</p>

<p><pre>
    "image":the image
    "alpha":the alpha channel
 
    "xsize":int
    "ysize":int
        size of image
    "type":"image/gif"
        file type information as MIME type
</pre>
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2222'/>
<p>The weird name of this function (not <tt>_decode</tt>
as the other decoders) is because gif was the first
decoder and was written before the API was finally
defined. Sorry about that. /Mirar</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colors'><type><int/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.encode'/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.encode'/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='tr_r'><type><int/></type></argument>
<argument name='tr_g'><type><int/></type></argument>
<argument name='tr_b'><type><int/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colors'><type><int/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.encode'/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colors'><type><int/></type></argument>
<argument name='tr_r'><type><int/></type></argument>
<argument name='tr_g'><type><int/></type></argument>
<argument name='tr_b'><type><int/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colors'><type><int/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='tr_r'><type><int/></type></argument>
<argument name='tr_g'><type><int/></type></argument>
<argument name='tr_b'><type><int/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.encode'/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='tr_r'><type><int/></type></argument>
<argument name='tr_g'><type><int/></type></argument>
<argument name='tr_b'><type><int/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='a_r'><type><int/></type></argument>
<argument name='a_g'><type><int/></type></argument>
<argument name='a_b'><type><int/></type></argument>

   </arguments>
</method><method name='encode_trans'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.encode'/></type></argument>
<argument name='transp_index'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='950'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='950'/>
<p>Create a complete GIF file.</p>

<p>The latter (<ref resolved='predef::Image.GIF.encode'>encode_trans</ref>) functions
add transparency capabilities.</p>

<p>Example:
<pre>
img=<ref resolved='predef::Image.Image'>Image.Image</ref>([...]);
[...] // make your very-nice image
write(<ref resolved='predef::Image.GIF.encode'>Image.GIF.encode</ref>(img)); // write it as GIF on stdout
</pre>
</p>
</text>
<group>
   <param name='img'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='974'/>
<p>The image which to encode.</p></text></group>
<group>
   <param name='colors'/>
   <param name='colortable'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='977'/>
<p>These arguments decides what colors the image should
be encoded with. If a number is given, a colortable
with be created with (at most) that amount of colors.
Default is '256' (GIF maximum amount of colors).</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='982'/>
<p>Alpha channel image (defining what is transparent); black
color indicates transparency. GIF has only transparent
or nontransparent (no real alpha channel).
You can always dither a transparency channel:
<tt>Image.Colortable(my_alpha, ({({0,0,0}),({255,255,255})}))<br/>
    -&gt;full()<br/>-&gt;floyd_steinberg()<br/>-&gt;map(my_alpha)</tt></p></text></group>
<group>
   <param name='tr_r'/>
   <param name='tr_g'/>
   <param name='tr_b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='991'/>
<p>Use this (or the color closest to this) color as transparent
pixels.</p></text></group>
<group>
   <param name='a_r'/>
   <param name='a_g'/>
   <param name='a_b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='996'/>
<p>Encode transparent pixels (given by alpha channel image)
to have this color. This option is for making GIFs for
the decoders that doesn't support transparency.</p></text></group>
<group>
   <param name='transp_index'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1000'/>
<p>Use this color no in the colortable as transparent color.
</p></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='950'/>
<p>For advanced users:
<pre>Image.GIF.encode_trans(img,colortable,alpha);</pre>
is equivalent of using
<pre>Image.GIF.header_block(img-&gt;xsize(),img-&gt;ysize(),colortable)+
Image.GIF.render_block(img,colortable,0,0,0,alpha)+
Image.GIF.end_block();</pre>
and is actually implemented that way.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='end_block' homogen-type='method'>
<method name='end_block'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='307'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='307'/>
<p>This function gives back a GIF end (trailer) block.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='307'/>
<p>the end block as a string.</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='307'/>
<p>This is in the advanced sector of the GIF support;
please read some about how GIFs are packed.</p>

<p>The result of this function is always ";" or "\x3b",
but I recommend using this function anyway for code clearity.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.header_block'>header_block</ref>, <ref resolved='predef::Image.GIF.end_block'>end_block</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='header_block' homogen-type='method'>
<method name='header_block'>
   <returntype><string/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='numcolors'><type><int/></type></argument>

   </arguments>
</method><method name='header_block'>
   <returntype><string/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.header_block'/></type></argument>

   </arguments>
</method><method name='header_block'>
   <returntype><string/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.header_block'/></type></argument>
<argument name='background_color_index'><type><int/></type></argument>
<argument name='gif87a'><type><int/></type></argument>
<argument name='aspectx'><type><int/></type></argument>
<argument name='aspecty'><type><int/></type></argument>

   </arguments>
</method><method name='header_block'>
   <returntype><string/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.header_block'/></type></argument>
<argument name='background_color_index'><type><int/></type></argument>
<argument name='gif87a'><type><int/></type></argument>
<argument name='aspectx'><type><int/></type></argument>
<argument name='aspecty'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='141'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='141'/>
<p>This function gives back a GIF header block.</p>

<p>Giving a colortable to this function includes a
global palette in the header block.
</p>
</text>
<group>
   <param name='xsize'/>
   <param name='ysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='153'/>
<p>Size of drawing area. Usually same size as in
the first (or only) render block(s).</p></text></group>
<group>
   <param name='background_color_index'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='156'/>
<p>This color in the palette is the background color.
Background is visible if the following render block(s)
doesn't fill the drawing area or are transparent.
Most decoders doesn't use this value, though.</p></text></group>
<group>
   <param name='gif87a'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='161'/>
<p>If set, write 'GIF87a' instead of 'GIF89a' (default 0 == 89a).</p></text></group>
<group>
   <param name='aspectx'/>
   <param name='aspecty'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='164'/>
<p>Aspect ratio of pixels,
ranging from 4:1 to 1:4 in increments
of 1/16th. Ignored by most decoders.
If any of <tt>aspectx</tt> or <tt>aspecty</tt> is zero,
aspectratio information is skipped.</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='172'/>
<p>Add this color as the transparent color.
This is the color used as transparency color in
case of alpha-channel given as image object.
This increases (!) the number of colors by one.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='141'/>
<p>the created header block as a string</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='141'/>
<p>This is in the advanced sector of the GIF support;
please read some about how GIFs are packed.</p>

<p>This GIF encoder doesn't support different size
of colors in global palette and color resolution.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.header_block'>header_block</ref>, <ref resolved='predef::Image.GIF.end_block'>end_block</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='netscape_loop_block' homogen-type='method'>
<method name='netscape_loop_block'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='netscape_loop_block'>
   <returntype><string/></returntype>
   <arguments><argument name='number_of_loops'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1225'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1225'/>
<p>Creates a application-specific extention block;
this block makes netscape and compatible browsers
loop the animation a certain amount of times.</p>
</text>
<group>
   <param name='number_of_loops'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1230'/>
<p>Number of loops. Max and default is 65535.</p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='render_block' homogen-type='method'>
<method name='render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='localpalette'><type><int/></type></argument>

   </arguments>
</method><method name='render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='localpalette'><type><int/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>

   </arguments>
</method><method name='render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='localpalette'><type><int/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='localpalette'><type><int/></type></argument>
<argument name='delay'><type><int/></type></argument>
<argument name='transp_index'><type><int/></type></argument>
<argument name='interlace'><type><int/></type></argument>
<argument name='user_input'><type><int/></type></argument>
<argument name='disposal'><type><int/></type></argument>

   </arguments>
</method><method name='render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='localpalette'><type><int/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.GIF.render_block'/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='delay'><type><int/></type></argument>
<argument name='interlace'><type><int/></type></argument>
<argument name='user_input'><type><int/></type></argument>
<argument name='disposal'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='592'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='592'/>
<p>This function gives a image block for placement in a GIF file,
with or without transparency.
The some options actually gives two blocks,
the first with graphic control extensions for such things
as delay or transparency.</p>

<p>Example:
<pre>
img1=<ref resolved='predef::Image.Image'>Image.Image</ref>([...]);
img2=<ref resolved='predef::Image.Image'>Image.Image</ref>([...]);
[...] // make your very-nice images
nct=<ref resolved='predef::Image.Colortable'>Image.Colortable</ref>([...]); // make a nice colortable
write(<ref resolved='predef::Image.GIF.header_block'>Image.GIF.header_block</ref>(xsize,ysize,nct)); // write a GIF header
write(<ref resolved='predef::Image.GIF.render_block'>Image.GIF.render_block</ref>(img1,nct,0,0,0,10)); // write a render block
write(<ref resolved='predef::Image.GIF.render_block'>Image.GIF.render_block</ref>(img2,nct,0,0,0,10)); // write a render block
[...]
write(<ref resolved='predef::Image.GIF.end_block'>Image.GIF.end_block</ref>()); // write end block
// voila! A GIF animation on stdout.
</pre></p>

<p><image file='predef.Image.GIF.render_block.1.gif' width='80' height='115'>image_gif.c0.gif</image>The above animation is thus created:
<pre>
object nct=Image.colortable(lena,32,({({0,0,0})}));
string s=GIF.header_block(lena-&gt;xsize(),lena-&gt;ysize(),nct);
foreach ( ({lena-&gt;xsize(),
            (int)(lena-&gt;xsize()*0.75),
            (int)(lena-&gt;xsize()*0.5),
            (int)(lena-&gt;xsize()*0.25),
            (int)(1),
            (int)(lena-&gt;xsize()*0.25),
            (int)(lena-&gt;xsize()*0.5),
            (int)(lena-&gt;xsize()*0.75)}),int xsize)
{
   object o=lena-&gt;scale(xsize,lena-&gt;ysize());
   object p=lena-&gt;clear(0,0,0);
   p-&gt;paste(o,(lena-&gt;xsize()-o-&gt;xsize())/2,0);
   s+=Image.GIF.render_block(p,nct,0,0,0,25);
}
s+=Image.GIF.netscape_loop_block(200);
s+=Image.GIF.end_block();
write(s);
</pre>
</p>
</text>
<group>
   <param name='img'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='661'/>
<p>The image.</p></text></group>
<group>
   <param name='colortable'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='663'/>
<p>Colortable with colors to use and to write as palette.</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='666'/>
<p>Position of this image.</p></text></group>
<group>
   <param name='localpalette'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='668'/>
<p>If set, writes a local palette.</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='670'/>
<p>Alpha channel image; black is transparent.</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='674'/>
<p>Color of transparent pixels. Not all decoders understands
transparency. This is ignored if localpalette isn't set.</p></text></group>
<group>
   <param name='delay'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='677'/>
<p>View this image for this many centiseconds. Default is zero.</p></text></group>
<group>
   <param name='transp_index'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='679'/>
<p>Index of the transparent color in the colortable.
<tt>-1</tt> indicates no transparency.</p></text></group>
<group>
   <param name='user_input'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='682'/>
<p>If set: wait the delay or until user input. If delay is zero,
wait indefinitely for user input. May sound the bell
upon decoding. Default is non-set.</p></text></group>
<group>
   <param name='disposal'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='686'/>
<p>Disposal method number;
<dl compact='compact'>
<dt>0</dt><dd>No disposal specified. The decoder is
         not required to take any action. (default)</dd>
<dt>1</dt><dd>Do not dispose. The graphic is to be left
         in place.</dd>
<dt>2</dt><dd>Restore to background color. The area used by the
         graphic must be restored to the background color.</dd>
<dt>3</dt><dd>Restore to previous. The decoder is required to
         restore the area overwritten by the graphic with
         what was there prior to rendering the graphic.</dd>
<dt compact='compact'>4-7</dt><dd>To be defined.</dd>
</dl></p>

<p/></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='592'/>
<p>This is in the advanced sector of the GIF support;
please read some about how GIFs are packed.</p>

<p>The user_input and disposal method are unsupported
in most decoders.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.encode'>encode</ref>, <ref resolved='predef::Image.GIF.header_block'>header_block</ref>, <ref resolved='predef::Image.GIF.end_block'>end_block</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='_decode' homogen-type='method'>
<method name='_decode'>
   <returntype><array/></returntype>
   <arguments><argument name='gifdata'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><array/></returntype>
   <arguments><argument name='__decoded'><type><array/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1567'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1567'/>
<p>Decodes a GIF image structure down to chunks, and
also decode the images in the render chunks.</p>

<p><pre>
({int xsize,int ysize,    // 0: size of image drawing area
  void|object colortable, // 2: opt. global colortable
  ({ int aspx, int aspy,  // 3 0: aspect ratio or 0, 0 if not set
     int background }),   //   2: index of background color
</pre>
followed by any number these blocks in any order (gce chunks
are decoded and incorporated in the render chunks):
<pre>
  ({ GIF.RENDER,          //   0: block identifier
    int x, int y,         //   1: position of render
    object image,         //   3: render image
    void|object alpha,    //   4: 0 or render alpha channel
    object colortable,    //   5: colortable (may be same as global)
 
    int interlace,        //   6: interlace flag
    int trans_index,      //   7: 0 or transparent color index
    int delay,            //   8: 0 or delay in centiseconds
    int user_input,       //   9: user input flag
    int disposal})        //  10: disposal method number (0..7)
 
  ({ GIF.EXTENSION,       //   0: block identifier
     int extension,       //   1: extension number
     string data })       //   2: extension data
 
</pre>
and possibly ended with one of these:
<pre>
  ({ GIF.ERROR_PREMATURE_EOD })   // premature end-of-data
 
  ({ GIF.ERROR_TOO_MUCH_DATA,     // data following end marker
     string data })               // (rest of file)
 
  ({ GIF.ERROR_UNKNOWN_DATA,      // unknown data
     string data })               // (rest of file)
</pre></p>

<p>The <ref resolved='predef::Image.GIF.decode'>decode</ref> method uses this data in a way similar
to this program:</p>

<p><pre>
import Image;
 
object my_decode_gif(string data)
{
   array a=GIF._decode(data);
   object img=image(a[0],a[1]);
   foreach (a[4..],array b)
      if (b[0]==GIF.RENDER)
         if (b[4]) img-&gt;paste_alpha(b[3],b[4],b[1],b[2]);
         else img-&gt;paste(b[3],b[1],b[2]);
   return img;
}
</pre></p>

<p/>
</text>
<group>
   <param name='gifdata'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1628'/>
<p>GIF data (with header and all)</p></text></group>
<group>
   <param name='__decoded'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1630'/>
<p>GIF data as from <ref resolved='predef::Image.GIF.__decode'>__decode</ref>
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1567'/>
<p>the above array</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1567'/>
<p>May throw errors if the GIF header is incomplete or illegal.</p>

<p>This is in the very advanced sector of the GIF support;
please read about how GIF files works.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='_encode' homogen-type='method'>
<method name='_encode'>
   <returntype><string/></returntype>
   <arguments><argument name='data'><type><array/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2266'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2266'/>
<p>Encodes GIF data; reverses _decode.
</p>
</text>
<group>
   <param name='data'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2269'/>
<p>data as returned from _encode
</p></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='2266'/>
<p>Some given values in the array are ignored.
This function does not give the _exact_ data back!</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='_gce_block' homogen-type='method'>
<method name='_gce_block'>
   <returntype><string/></returntype>
   <arguments><argument name='transparency'><type><int/></type></argument>
<argument name='transparency_index'><type><int/></type></argument>
<argument name='delay'><type><int/></type></argument>
<argument name='user_input'><type><int/></type></argument>
<argument name='disposal'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='329'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='329'/>
<p>This function gives back a Graphic Control Extension block.
A GCE block has the scope of the following render block.
</p>
</text>
<group>
   <param name='transparency'/>
   <param name='transparency_index'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='335'/>
<p>The following image has transparency, marked with this index.</p></text></group>
<group>
   <param name='delay'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='337'/>
<p>View the following rendering for this many centiseconds (0..65535).</p></text></group>
<group>
   <param name='user_input'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='339'/>
<p>Wait the delay or until user input. If delay is zero,
wait indefinitely for user input. May sound the bell
upon decoding.</p></text></group>
<group>
   <param name='disposal'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='343'/>
<p>Disposal method number;
<dl compact='compact'>
<dt>0</dt><dd>No disposal specified. The decoder is
         not required to take any action.</dd>
<dt>1</dt><dd>Do not dispose. The graphic is to be left
         in place.</dd>
<dt>2</dt><dd>Restore to background color. The area used by the
         graphic must be restored to the background color.</dd>
<dt>3</dt><dd>Restore to previous. The decoder is required to
         restore the area overwritten by the graphic with
         what was there prior to rendering the graphic.</dd>
<dt compact='compact'>4-7</dt><dd>To be defined.</dd>
</dl></p>

<p/></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='329'/>
<p>This is in the very advanced sector of the GIF support;
please read about how GIF files works.</p>

<p>Most decoders just ignore some or all of these parameters.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF._render_block'>_render_block</ref>, <ref resolved='predef::Image.GIF.render_block'>render_block</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='_render_block' homogen-type='method'>
<method name='_render_block'>
   <returntype><string/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='indices'><type><string/></type></argument>
<argument name='colortable'><type>
   <or>
     <object resolved='predef::Image.GIF._render_block'>0</object><string/></or></type></argument>
<argument name='interlace'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='397'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='397'/>
<p>Advanced (!) method for writing renderblocks for placement
in a GIF file. This method only applies LZW encoding on the
indices and makes the correct headers.
</p>
</text>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='403'/>
<p>Position of this image.</p></text></group>
<group>
   <param name='xsize'/>
   <param name='ysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='406'/>
<p>Size of the image. Length if the <tt>indices</tt> string
must be xsize*ysize.</p></text></group>
<group>
   <param name='bpp'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='409'/>
<p>Bits per pixels in the indices. Valid range 1..8.</p></text></group>
<group>
   <param name='indices'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='411'/>
<p>The image indices as an 8bit indices.</p></text></group>
<group>
   <param name='colortable'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='413'/>
<p>Colortable with colors to write as palette.
If this argument is zero, no local colortable is written.
Colortable string len must be 1&lt;&lt;bpp.</p></text></group>
<group>
   <param name='interlace'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='417'/>
<p>Interlace index data and set interlace bit. The given string
should _not_ be pre-interlaced.</p>

<p/></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='397'/>
<p>This is in the very advanced sector of the GIF support;
please read about how GIF files works.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.GIF.encode'>encode</ref>, <ref resolved='predef::Image.GIF._encode'>_encode</ref>, <ref resolved='predef::Image.GIF.header_block'>header_block</ref>, <ref resolved='predef::Image.GIF.end_block'>end_block</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='__decode' homogen-type='method'>
<method name='__decode'>
   <returntype><array/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1256'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1256'/>
<p>Decodes a GIF image structure down to chunks and</p>

<p><pre>
({int xsize,int ysize,      // 0: size of image drawing area
  int numcol,               // 2: suggested number of colors
  void|string colortable,   // 3: opt. global colortable
  ({ int aspx, int aspy,    // 4,0: aspect ratio or 0, 0 if not set
     int background }),     //   1: index of background color
</pre>
followed by any number these blocks in any order:
<pre>
  ({ GIF.EXTENSION,         //   0: block identifier
     int extension,         //   1: extension number
     string data })         //   2: extension data
 
  ({ GIF.RENDER,            //   0: block identifier
     int x, int y,          //   1: position of render
     int xsize, int ysize,  //   3: size of render
     int interlace,         //   5: interlace flag
     void|string colortbl,  //   6: opt. local colortable
     int lzwsize,           //   7: lzw code size
     string lzwdata })      //   8: packed lzw data
</pre>
and possibly ended with one of these:
<pre>
  ({ GIF.ERROR_PREMATURE_EOD })   // premature end-of-data
 
  ({ GIF.ERROR_TOO_MUCH_DATA,     // data following end marker
     string data })               // (rest of file)
 
  ({ GIF.ERROR_UNKNOWN_DATA,      // unknown data
     string data })               // (rest of file)
</pre>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1256'/>
<p>the above array</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_GIF/image_gif.c' first-line='1256'/>
<p>May throw errors if the GIF header is incomplete or illegal.</p>

<p>This is in the very advanced sector of the GIF support;
please read about how GIF files works.</p>
</text></group>

</doc>
</docgroup>

</module>


<source-position first-line='75' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<module name='XFace'>
<source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<doc>
<text>
<source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p/>
</text>
<group><note/><text>
<source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p>This module uses <tt>libgmp</tt>.</p>
</text></group>

</doc>
<docgroup homogen-name='decode' homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.XFace.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.XFace.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XFace.decode'/></type></argument>

   </arguments>
</method><source-position first-line='389' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<doc>
<text>
<source-position first-line='389' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p>Decodes an X-Face image.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero options.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='decode_header' homogen-type='method'>
<method name='decode_header'>
   <returntype><object resolved='predef::Image.XFace.decode_header'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><object resolved='predef::Image.XFace.decode_header'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XFace.decode_header'/></type></argument>

   </arguments>
</method><source-position first-line='465' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<doc>
<text>
<source-position first-line='465' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p>Decodes an X-Face image header.</p>

<p><pre>
    "xsize":int
    "ysize":int
        size of image
    "type":"image/x-xface"
        file type information
</pre></p>

<p>The <tt>options</tt> argument may be a mapping
containing zero options.
</p>
</text>
<group><note/><text>
<source-position first-line='465' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p>There aint no such thing as a X-Face image header.
This stuff tells the characteristics of an X-Face image.
</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='encode' homogen-type='method'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.XFace.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='img'><type><object resolved='predef::Image.XFace.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XFace.encode'/></type></argument>

   </arguments>
</method><source-position first-line='423' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<doc>
<text>
<source-position first-line='423' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Image_XFace/image_xface.c'/>
<p>Encodes an X-Face image.</p>

<p>The <tt>img</tt> argument must be an image of the dimensions
48 by 48 pixels.  All non-black pixels will be considered white.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero options.
</p>
</text>

</doc>
</docgroup>

</module>



<module name='NEO'><doc><text><p>Decodes images from the Atari image editor Neochrome.</p>
</text></doc><docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Low level decoding of the NEO file contents in <ref resolved='predef::Image.NEO._decode.data'>data</ref>.</p>
</text><group><returns/><text><mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The decoded bitmap</p>
</text></group><group><member><type><array><valuetype><object resolved='predef::Image.Image'>Image.Image</object></valuetype></array></type><index>"images"</index></member><text><p>Coler cycled images.</p>
</text></group><group><member><type><string/></type><index>"filename"</index></member><text><p>The filename stored into the file.</p>
</text></group><group><member><type><int><min>0</min><max>15</max></int></type><index>"right_limit"</index></member><member><type><int><min>0</min><max>15</max></int></type><index>"left_limit"</index></member><text><p>The palette color range to be color cycled.</p>
</text></group><group><member><type><int><min>0</min><max>255</max></int></type><index>"speed"</index></member><text><p>The animation speed, expressed as the number of VBLs
       per animation frame.</p>
</text></group><group><member><type><string/></type><index>"direction"</index></member><text><p>Color cycling direction. Can be either <expr>"left"</expr>
       or <expr>"right"</expr>.</p>
</text></group><group><member><type><array><valuetype><array><valuetype><int><min>0</min><max>255</max></int></valuetype></array></valuetype></array></type><index>"palette"</index></member><text><p>The palette to be used for color cycling.</p>
</text></group></mapping></text></group></doc>
<method name='_decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes the image <ref resolved='predef::Image.NEO.decode.data'>data</ref> into an <ref resolved='predef::Image.Image'>Image.Image</ref> object.</p>
</text></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</module>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='39'/>
<module name='XCF'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='40'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='40'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.XCF.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='948'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='948'/>
<p>Decodes a XCF image to a single image object.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='948'/>
<p>Throws upon error in data, you will loose quite a lot of
information by doing this. See Image.XCF._decode and Image.XCF.__decode</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='decode_layers'>
<method name='decode_layers'>
   <returntype>
        <array><valuetype><object resolved='predef::Image.XCF.decode_layers'/></valuetype></array></returntype>
   <arguments><argument name='stringdata'><type>
   <object resolved='predef::Image.XCF.decode_layers'/></type></argument>

   </arguments>
</method><method name='decode_layers'>
   <returntype>
        <array><valuetype><object resolved='predef::Image.XCF.decode_layers'/></valuetype></array></returntype>
   <arguments><argument name='stringdata'><type>
   <object resolved='predef::Image.XCF.decode_layers'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XCF.decode_layers'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='933'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='933'/>
<p>Decodes a XCF image to an array of Image.Layer objects</p>

<p>The layer object have the following extra variables (to be queried
using get_misc_value):</p>

<p> image_xres, image_yres, image_colormap, image_guides, image_parasites,
 name, parasites, visible, active</p>

<p>Takes the same argument mapping as <ref resolved='predef::Image.XCF._decode'>_decode</ref>,</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_decode'>
<method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type>
   <or><string/><object resolved='predef::Image.XCF._decode'/></or></type></argument>
<argument name='options'><type>
   <or><mapping/><void/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='958'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='958'/>
<p>  Decodes a XCF image to a mapping, with at least an
'image' and possibly an 'alpha' object. Data is either a XCF image, or
 a XCF.GimpImage object structure (as received from __decode)</p>

<p><pre> Supported options
 ([
    "background":({r,g,b})||Image.Color object
    "draw_all_layers":1,
         Draw invisible layers as well
 
    "draw_guides":1,
         Draw the guides
 
    "draw_selection":1,
          Mark the selection using an overlay
 
    "ignore_unknown_layer_modes":1
          Do not asume 'Normal' for unknown layer modes.
 
    "mark_layers":1,
         Draw an outline around all (drawn) layers
 
    "mark_layer_names":Image.Font object,
         Write the name of all layers using the font object,
 
    "mark_active_layer":1,
         Draw an outline around the active layer
  ])</pre>
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='958'/>
<p>Throws upon error in data. For more information, see Image.XCF.__decode</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='__decode'>
<method name='__decode'>
   <returntype><object resolved='predef::Image.XCF.__decode'/></returntype>
   <arguments><argument name='data'><type>
   <or><string/><mapping/></or></type></argument>
<argument name='mapping|voidoptions'><type>
   <object resolved='predef::Image.XCF.__decode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='993'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='993'/>
<p>    Decodes a XCF image to a Image.XCF.GimpImage object.</p>

<p>    <pre>Returned structure reference
 
   !class GimpImage
   {
     int width;
     int height;
     int compression;
     int type;
     int tattoo_state;
     float xres = 72.0;
     float yres = 72.0;
     int res_unit;
     Image.Colortable colormap;
     Image.Colortable meta_colormap;
     array(Layer) layers = ({});
     array(Channel) channels = ({});
     array(Guide) guides = ({});
     array(Parasite) parasites = ({});
     array(Path) paths = ({});
 
     Layer active_layer;
     Channel active_channel;
     Channel selection;
   }
 
   !class Layer
   {
     string name;
     int opacity;
     int type;
     int mode;
     int tattoo;
     mapping flags = ([]);
     int width, height;
     int xoffset, yoffset;
     array (Parasite) parasites;
     LayerMask mask;
     Hierarchy image;
   }
 
   !class Channel
   {
     string name;
     int width;
     int height;
     int opacity;
     int r, g, b;
     int tattoo;
     Hierarchy image_data;
     object parent;
     mapping flags = ([]);
     array (Parasite) parasites;
   }
 
   !class Hierarchy
   {
     Image.Image img;
     Image.Image alpha;
     int width;
     int height;
     int bpp;
   }
 
   !class Parasite
   {
     string name;
     int flags;
     string data;
   }
 
 
   !class Guide
   {
     int pos;
     int vertical;
   }
 
   !class Path
   {
     string name;
     int ptype;
     int tattoo;
     int closed;
     int state;
     int locked;
     array (PathPoint) points = ({});
   }
 
   !class PathPoint
   {
     int type;
     float x;
     float y;
   }
 
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='___decode'>
<method name='___decode'>
   <returntype><object resolved='predef::Image.XCF.___decode'/></returntype>
   <arguments><argument name='data'><type>
   <or><string/><mapping/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='1095'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xcf.c' first-line='1095'/>
<p>     Decodes a XCF image to a mapping.</p>

<p>     <pre>Structure reference
 
    ([
      "width":int,
      "height":int,
      "type":int,
      "properties":({
        ([
          "type":int,
          "data":string,
        ]),
        ...
      }),
      "layers":({
        ([
          "name":string,
          "width":int,
          "height":int,
          "type":type,
          "properties":({
            ([
              "type":int,
              "data":string,
            ]),
            ...
          }),
          "mask":0 || ([
            "name":string,
            "width":int,
            "height":int,
            "properties":({
              ([
                "type":int,
                "data":string,
              ]),
              ...
            }),
            "image_data":([
              "bpp":int,
              "width":int,
              "height":int,
              "tiles":({
                string,
                ...
              }),
            ]),
          ]),
          "image_data":([
            "bpp":int,
            "width":int,
            "height":int,
            "tiles":({
              string,
              ...
            }),
          ]),
        ]),
        ...
      }),
      "channels":({
        "name":string,
        "width":int,
        "height":int,
        "properties":({
          ([
            "type":int,
            "data":string,
          ]),
          ...
        }),
        "image_data":([
          "bpp":int,
          "width":int,
          "height":int,
          "tiles":({
            string,
            ...
          }),
        ]),
      }),
    ])
</pre></p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='36'/>
<module name='XBM'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='37'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='37'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.XBM.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='203'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='203'/>
<p>Decodes a XBM image.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='203'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.XBM.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.XBM.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XBM.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='360'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='360'/>
<p>Encodes a XBM image.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero or more encoding options.</p>

<p><pre>
normal options:
    "name":"xbm_image_name"
        The name of the XBM. Defaults to 'image'
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_decode'>
<method name='_decode'>
   <returntype><object resolved='predef::Image.XBM._decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><object resolved='predef::Image.XBM._decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.XBM._decode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='221'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='221'/>
<p>Decodes a XBM image to a mapping.</p>

<p><pre>
    Supported options:
   ([
      "fg":({fgcolor}),    // Foreground color. Default black
      "bg":({bgcolor}),    // Background color. Default white
      "invert":1,          // Invert the mask
    ])
</pre>
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xbm.c' first-line='221'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

</module>



<module name='PNG'><doc><text><p>Support for encoding and decoding the Portable Network Graphics
   format, PNG.</p>
</text><group><note/><text><p>This module uses zlib.</p>
</text></group></doc><docgroup homogen-name='_chunk' homogen-type='method'><doc><text><p>Encodes a PNG chunk.</p>
</text><group><note/><text><p>Please read about the PNG file format.</p>
</text></group></doc>
<method name='_chunk'>
<arguments><argument name='type'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='__decode' homogen-type='method'><doc><text><p>Splits a PNG file into chunks.</p>
</text><group><returns/><text><p>Result is an array of arrays, or 0 if data isn't a PNG file.
   Each element in the array is constructed as follows.</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>The type of the chunk, e.g. "IHDR" or "IDAT".</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>The actual chunk data.</p>
</text></group><group><elem><type><int><min>0</min><max>1</max></int></type><index>2</index></elem><text><p>Set to 1 if the checksum is ok and <ref resolved='predef::Image.PNG.__decode.dontcheckcrc'>dontcheckcrc</ref>
       isn't set.</p>
</text></group></array>
</text></group><group><note/><text><p>Please read about the PNG file format.
   Support for decoding cHRM, gAMA, sBIT, hIST, pHYs, tIME,
   tEXt and zTXt chunks are missing.</p>
</text></group></doc>
<method name='__decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='__decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='dontcheckcrc'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Decode a PNG image file.</p>
</text><group><param name='options'/><text><mapping><group><member><type><or><string/><array/><object resolved='predef::Image.Colortable'>Image.Colortable</object></or></type><index>"colortable"</index></member><text><p>A replacement color table to be used instead of the one
        in the PNG file, if any.</p>
</text></group></mapping>
</text></group><group><returns/><text><mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The decoded image.</p>
</text></group><group><member><type><int/></type><index>"bpp"</index></member><text><p>Number of bitplanes in the image. One of 1, 2, 4, 8 and 16.</p>
</text></group><group><member><type><int/></type><index>"type"</index></member><text><p>Image color type. Bit values are:</p>
<int><group><value>1</value><text><p>Palette used.</p>
</text></group><group><value>2</value><text><p>Color used.</p>
</text></group><group><value>4</value><text><p>Alpha channel used.</p>
</text></group></int><p>Valid values are 0, 2, 3, 4 and 6.</p>
</text></group><group><member><type><int/></type><index>"xsize"</index></member><member><type><int/></type><index>"ysize"</index></member><text><p>Image dimensions.</p>
</text></group><group><member><type><array><valuetype><int/></valuetype></array></type><index>"background"</index></member><text><p>The background color, if any. An array of size three with
       the RGB values.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>The alpha channel, if any.</p>
</text></group></mapping>
</text></group><group><throws/><text><p>Throws an error if the image data is erroneous.</p>
</text></group><group><note/><text><p>Please read about the PNG file format.
	This function ignores any checksum errors in the file.
	A PNG of higher color resolution than the Image module
	supports (8 bit) will lose that information in the conversion.</p>
</text></group></doc>
<method name='_decode'>
<arguments><argument name='data'><type><or><string/><array/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='_decode'>
<arguments><argument name='data'><type><or><string/><array/></or></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encodes a PNG image.</p>
</text><group><param name='options'/><text><mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>Use this image as alpha channel (Note: PNG alpha
       channel is grey. The values are calculated by (r+2g+b)/4.)</p>
</text></group><group><member><type><object resolved='predef::Image.Colortable'>Image.Colortable</object></type><index>"palette"</index></member><text><p>Use this as palette for pseudocolor encoding
       (Note: encoding with alpha channel and pseudocolor
       at the same time are not supported)</p>
</text></group></mapping>
</text></group><group><seealso/><text><p><ref resolved='predef::Image.PNG.__decode'>__decode</ref></p>
</text></group><group><note/><text><p>Please read some about PNG files.</p>
</text></group></doc>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='options'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_header' homogen-type='method'><doc><text><p>Decodes only the PNG headers.</p>
</text><group><seealso/><text><p><ref resolved='predef::Image.PNG._decode'>_decode</ref></p>
</text></group></doc>
<method name='decode_header'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes a PNG image. The <ref resolved='predef::Image.PNG.decode.options'>options</ref> mapping is the
   as for <ref resolved='predef::Image.PNG._decode'>_decode</ref>.</p>
</text><group><throws/><text><p>Throws upon error in data.</p>
</text></group></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_alpha' homogen-type='method'><doc><text><p>Decodes the alpha channel in a PNG file. The
   <ref resolved='predef::Image.PNG.decode_alpha.options'>options</ref> mapping is the same as for <ref resolved='predef::Image.PNG._decode'>_decode</ref>.</p>
</text><group><throws/><text><p>Throws upon error in data.</p>
</text></group></doc>
<method name='decode_alpha'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><void/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</module>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='36'/>
<module name='PVR'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='37'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='37'/>
<p>
Handle encoding and decoding of PVR images.</p>

<p>PVR is the texture format of the NEC PowerVR system
It is a rather simple, uncompressed, truecolor
format.</p>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.PVR.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_alpha'>
   <returntype><object resolved='predef::Image.PVR.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='47'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='47'/>
<p>decodes a PVR image</p>

<p>The <ref resolved='predef::Image.PVR.decode'>decode_header</ref> and <ref resolved='predef::Image.PVR.decode'>_decode</ref>
has these elements:</p>

<p><pre>
   "image":object            - image object    \- not decode_header
   "alpha":object            - decoded alpha   /
 
   "type":"image/x-pvr"      - image type
   "xsize":int               - horisontal size in pixels
   "ysize":int               - vertical size in pixels
   "attr":int                - texture attributes
   "global_index":int        - global index (if present)
</pre></p>

<p/>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PVR.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PVR.encode'/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='68'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pvr.c' first-line='68'/>
<p>encode a PVR image</p>

<p>options is a mapping with optional values:
<pre>
   "alpha":object            - alpha channel
   "global_index":int        - global index
   "vq":int(0..1)            - Vector Quantification compression
</pre></p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tim.c' first-line='33'/>
<module name='TIM'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tim.c' first-line='34'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tim.c' first-line='34'/>
<p>
Handle decoding of TIM images.</p>

<p>TIM is the framebuffer format of the PSX game system.
It is a simple, uncompressed, truecolor or CLUT format
with a one bit alpha channel.</p>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.TIM.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_alpha'>
   <returntype><object resolved='predef::Image.TIM.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tim.c' first-line='44'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tim.c' first-line='44'/>
<p>decodes a TIM image</p>

<p>The <ref resolved='predef::Image.TIM.decode'>decode_header</ref> and <ref resolved='predef::Image.TIM.decode'>_decode</ref>
has these elements:</p>

<p><pre>
   "image":object            - image object    \- not decode_header
   "alpha":object            - decoded alpha   /
 
   "type":"image/x-tim"      - image type
   "xsize":int               - horisontal size in pixels
   "ysize":int               - vertical size in pixels
   "attr":int                - texture attributes
</pre></p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='9'/>
<module name='ILBM'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='10'/>
<p>
This submodule keep the ILBM encode/decode capabilities
of the <ref resolved='predef::Image.Image'>Image</ref> module.
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.ILBM.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.ILBM.decode'/></returntype>
   <arguments><argument name='_decoded'><type><array/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.ILBM.decode'/></returntype>
   <arguments><argument name='__decoded'><type><array/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='541'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='541'/>
<p>Decodes ILBM data and creates an image object.</p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='541'/>
<p>the decoded image as an image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='541'/>
<p>This function may throw errors upon illegal ILBM data.
This function uses <ref resolved='predef::Image.ILBM.__decode'>__decode</ref> and
<ref resolved='predef::Image.ILBM._decode'>_decode</ref> internally.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.ILBM.encode'>encode</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.ILBM.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.ILBM.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.ILBM.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='589'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='589'/>
<p>Encodes an ILBM image.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero or more encoding options:</p>

<p><pre>
normal options:
    "alpha":image object
        Use this image as mask
        (Note: ILBM mask is boolean.
         The values are calculated by (r+2g+b)/4&gt;=128.)
 
    "palette":colortable object
        Use this as palette for pseudocolor encoding
 
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_decode'>
<method name='_decode'>
   <returntype><array/></returntype>
   <arguments><argument name='data'><type>
   <or><string/><array/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='150'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='150'/>
<p>Decode an ILBM image file.</p>

<p>Result is a mapping,
<pre>
([
   "image": object image,
 
   ... more ...
])
</pre></p>

<p><tt>image</tt> is the stored image.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='__decode'>
<method name='__decode'>
   <returntype><array/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='73'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='73'/>
<p>Decodes an ILBM image structure down to chunks and</p>

<p><pre>
({int xsize,int ysize,      // 0: size of image drawing area
  string bitmapheader,      // 2: BMHD chunk
  void|string colortable,   // 3: opt. colortable chunk (CMAP)
  void|string colortable,   // 4: opt. colormode chunk (CAMG)
  string body,              // 5: BODY chunk
  mapping more_chunks})     // 6: mapping with other chunks
</pre>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='73'/>
<p>the above array</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ilbm.c' first-line='73'/>
<p>May throw errors if the ILBM header is incomplete or illegal.</p>
</text></group>

</doc>
</docgroup>

</module>



<module name='WBMP'><doc><text><p>WAP bitmap format - WBMP.</p>
</text></doc><docgroup homogen-name='decode' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='decode'>
<arguments><argument name='image'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.WBMP.decode'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_decode' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='_decode'>
<arguments><argument name='image'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_header' homogen-type='method'><doc><group><returns/><text><mapping><group><member><type><string/></type><index>"format"</index></member><text><p>The MIME type and encoding for the image, e.g. "image/x-wap.wbmp; type=0".</p>
</text></group><group><member><type><int/></type><index>"xsize"</index></member><member><type><int/></type><index>"ysize"</index></member><member><type><int/></type><index>"fix_header_field"</index></member><member><type><int/></type><index>"ext_header_field"</index></member></group></mapping></text></group></doc>
<method name='decode_header'>
<arguments><argument name='image'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.WBMP.encode'/></type></argument><argument name='args'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='_encode'>
<arguments><argument name='image'><type><object resolved='predef::Image.WBMP.encode'/></type></argument><argument name='args'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='9'/>
<module name='X'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='10'/>
<p>
This submodule handles encoding and decoding of
the binary formats of X11.</p>

<p>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-type='method' homogen-name='decode_pseudocolor'>
<method name='decode_pseudocolor'>
   <returntype><object resolved='predef::Image.X.decode_pseudocolor'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='width'><type><int/></type></argument>
<argument name='height'><type><int/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.X.decode_pseudocolor'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='1025'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='1025'/>
<p>lazy support for pseudocolor ZPixmaps
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='1025'/>
<p>currently, only byte-aligned pixmaps are supported</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='decode_truecolor'>
   <returntype><object resolved='predef::Image.X.decode_truecolor'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='width'><type><int/></type></argument>
<argument name='height'><type><int/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rbits'><type><int/></type></argument>
<argument name='rshift'><type><int/></type></argument>
<argument name='gbits'><type><int/></type></argument>
<argument name='gshift'><type><int/></type></argument>
<argument name='bbits'><type><int/></type></argument>
<argument name='bshift'><type><int/></type></argument>

   </arguments>
</method><method name='decode_truecolor_masks'>
   <returntype><object resolved='predef::Image.X.decode_truecolor'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='width'><type><int/></type></argument>
<argument name='height'><type><int/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rmask'><type><int/></type></argument>
<argument name='gmask'><type><int/></type></argument>
<argument name='bmask'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='786'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='786'/>
<p>lazy support for truecolor ZPixmaps
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='786'/>
<p>currently, only byte-aligned masks are supported</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode_pseudocolor'>
<method name='encode_pseudocolor'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_pseudocolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='vbpp'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.X.encode_pseudocolor'/></type></argument>

   </arguments>
</method><method name='encode_pseudocolor'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_pseudocolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='vbpp'><type><int/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.X.encode_pseudocolor'/></type></argument>
<argument name='translate'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='455'/>
<doc>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='458'/>
<p>the image object to encode</p></text></group>
<group>
   <param name='bpp'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='460'/>
<p>bits per pixel, how many bits each pixel should take</p></text></group>
<group>
   <param name='vbpp'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='462'/>
<p>value bits per pixel; how many bits per pixel that really
contains information</p></text></group>
<group>
   <param name='alignbits'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='465'/>
<p>the number of even bits each line should be padded to</p></text></group>
<group>
   <param name='colortable'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='467'/>
<p>colortable to get indices for pseudocolor</p></text></group>
<group>
   <param name='translate'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='469'/>
<p>translate table for colors. Length of this string should be
1&lt;&lt;vbpp (or 2&lt;&lt;vbpp if vbpp are greater than 8).
</p></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='455'/>
<p>currently, only upto 16 bits pseudocolor are supported.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='encode_truecolor'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rbits'><type><int/></type></argument>
<argument name='rshift'><type><int/></type></argument>
<argument name='gbits'><type><int/></type></argument>
<argument name='gshift'><type><int/></type></argument>
<argument name='bbits'><type><int/></type></argument>
<argument name='bshift'><type><int/></type></argument>

   </arguments>
</method><method name='encode_truecolor_masks'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rmask'><type><int/></type></argument>
<argument name='gmask'><type><int/></type></argument>
<argument name='bmask'><type><int/></type></argument>

   </arguments>
</method><method name='encode_truecolor'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rbits'><type><int/></type></argument>
<argument name='rshift'><type><int/></type></argument>
<argument name='gbits'><type><int/></type></argument>
<argument name='gshift'><type><int/></type></argument>
<argument name='bbits'><type><int/></type></argument>
<argument name='bshift'><type><int/></type></argument>
<argument name='ct'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>

   </arguments>
</method><method name='encode_truecolor_masks'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>
<argument name='bpp'><type><int/></type></argument>
<argument name='alignbits'><type><int/></type></argument>
<argument name='swapbytes'><type><int/></type></argument>
<argument name='rmask'><type><int/></type></argument>
<argument name='gmask'><type><int/></type></argument>
<argument name='bmask'><type><int/></type></argument>
<argument name='ct'><type><object resolved='predef::Image.X.encode_truecolor'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='61'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='61'/>
<p>Pack an image into a truecolor string. You will get a string
of packed red, green and blue bits;
ie:</p>

<p><tt>encode_truecolor(img, 12,32, 0, 3,5, 4,0, 3,8)</tt>
will give (aligned to even 32 bits for each row):<br/>
<tt>0bbbrrr0 gggg0bbb rrr0gggg 0bbb</tt>...<br/>
<tt>&lt;--pixel 1--&gt;&lt;--pixel 2--&gt; &lt;--3--&gt;</tt><br/>
<tt>10987654 32101098 76543210 1098</tt>... &lt;- bit position
<tt> &lt;-&gt;&lt;-&gt;  &lt;--&gt;</tt>
<tt>  |  |    +--- 4,0</tt>: 4 bits green shifted 0 bits
<tt>  |  +-------- 3,5</tt>: 3 bits red shifted 5 bits
<tt>  +----------- 3,8</tt>: 3 bits blue shifted 8 bits</p>

<p>The above call is equal to
<br/><tt>encode_truecolor_masks(img, 12,32, 0, 224, 15, 768)</tt>
and
<br/><tt>encode_truecolor(img, 12,32, 0, 3,5,4,0,3,8, colortable(1&lt;&lt;3,1&lt;&lt;4,1&lt;&lt;3))</tt>.
<br/>The latter gives possibility to use dither algorithms,
but is slightly slower.
</p>
</text>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='86'/>
<p>the image object to encode</p></text></group>
<group>
   <param name='bpp'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='88'/>
<p>bits per pixel, how many bits each pixel should take</p></text></group>
<group>
   <param name='alignbits'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='90'/>
<p>the number of even bits each line should be padded to</p></text></group>
<group>
   <param name='rbits'/>
   <param name='gbits'/>
   <param name='bbits'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='94'/>
<p>bits for each basecolor</p></text></group>
<group>
   <param name='rshift'/>
   <param name='gshift'/>
   <param name='bshift'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='98'/>
<p>leftshifts for each basecolor</p></text></group>
<group>
   <param name='rmask'/>
   <param name='gmask'/>
   <param name='bmask'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='102'/>
<p>masks for each basecolor (xbits and gbits are calculated from this),
needs to be massive (no zeroes among the ones in the mask).</p></text></group>
<group>
   <param name='ct'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='105'/>
<p>colortable object (for dithering, or whatever)</p></text></group>
<group>
   <param name='swapbytes'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/x.c' first-line='107'/>
<p>swap bytes for bpp==16,24,32,
swaps bits in the bytes if bpp==1,
for change of byte/bitorder between client and server.
</p></text></group>

</doc>
</docgroup>

</module>



<module name='_XPM'><docgroup homogen-name='_xpm_write_rows' homogen-type='method'><doc><text><p>Fills in <ref resolved='predef::Image._XPM._xpm_write_rows.img'>img</ref> and <ref resolved='predef::Image._XPM._xpm_write_rows.alpha'>alpha</ref> according to xpm data in <ref resolved='predef::Image._XPM._xpm_write_rows.bpc'>bpc</ref>, <ref resolved='predef::Image._XPM._xpm_write_rows.colors'>colors</ref>
 and <ref resolved='predef::Image._XPM._xpm_write_rows.pixels'>pixels</ref>.</p>
</text><group><param name='bpc'/><text><p>Bytes per color. Number of bytes used to encode each color in <ref resolved='predef::Image._XPM._xpm_write_rows.pixels'>pixels</ref>.</p>
</text></group><group><param name='colors'/><text><p>Array of color definitions.</p>
<p>   A color definition is on the format <tt>"ee c #RRGGBB"</tt>,
   where <tt>ee</tt> is a <ref resolved='predef::Image._XPM._xpm_write_rows.bpc'>bpc</ref> long string used to encode the color,
   <tt>c</tt> is a literal <tt>"c"</tt>, and <tt>RRGGBB</tt> is a hexadecimal
   RGB code.</p>
</text></group><group><param name='pixels'/><text><p>Raw picture information.</p>
<array name='pixels'><group><elem><type><string/></type><index>0</index></elem><text><p>Size information on the format
         (<expr>sprintf("%d %d %d %d", h, w, ncolors, bpn)</expr>).</p>
</text></group><group><elem><type><string/></type><minindex>1</minindex><maxindex>ncolors</maxindex></elem><text><p>Same as <ref resolved='predef::Image._XPM._xpm_write_rows.colors'>colors</ref>.</p>
</text></group><group><elem><type><string/></type><minindex>ncolors_plus_one</minindex><maxindex>ncolors_plus_h</maxindex></elem><text><p>Line information. Strings of length <ref>bpn</ref>*w with encoded
       pixels for each line.</p>
</text></group></array></text></group></doc>
<method name='_xpm_write_rows'>
<arguments><argument name='img'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='alpha'><type><object resolved='predef::Image.Image'>Image.Image</object></type></argument><argument name='bpc'><type><int/></type></argument><argument name='colors'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='pixels'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='_xpm_trim_rows' homogen-type='method'><doc/>
<method name='_xpm_trim_rows'>
<arguments><argument name='rows'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</module>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='9'/>
<module name='BMP'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='10'/>
<p>
This submodule keeps the BMP (Windows Bitmap)
encode/decode capabilities of the <ref resolved='predef::Image.Image'>Image</ref> module.</p>

<p>BMP is common in the Windows environment.</p>

<p>Simple encoding:<br/>
<ref resolved='predef::Image.BMP.encode'>encode</ref>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.BMP.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.BMP.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='512'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='512'/>
<p>Decode a BMP.</p>

<p><ref resolved='predef::Image.BMP.decode'>decode</ref> gives an image object,
<ref resolved='predef::Image.BMP.decode'>_decode</ref> gives a mapping in the format
<pre>
        "type":"image/x-MS-bmp",
        "image":image object,
        "colortable":colortable object (if applicable)
 
        "xsize":int,
        "ysize":int,
        "compression":int,
        "bpp":int,
        "windows":int,
</pre></p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='512'/>
<p>the encoded image as a string</p>
</text></group>
<group><bugs/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='512'/>
<p>Doesn't support all BMP modes. At all.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.BMP.encode'>encode</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.BMP.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.BMP.encode'/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.BMP.encode'/></type></argument>
<argument name='colortable'><type><object resolved='predef::Image.BMP.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.BMP.encode'/></type></argument>
<argument name='bpp'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='142'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='142'/>
<p>Make a BMP. It default to a 24 bpp BMP file,
but if a colortable is given, it will be 8bpp
with a palette entry.</p>

<p><tt>option</tt> is a mapping that may contain:
<pre>
"colortable": Image.Colortable   - palette
"bpp":        1|4|8|24           - force this many bits per pixel
"rle":        0|1                - run-length encode (default is 0)
 
</pre>
</p>
</text>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='161'/>
<p>Source image.</p></text></group>
<group>
   <param name='colortable'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='163'/>
<p>Colortable object, shortcut for "colortable" in options.</p>

<p/></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='142'/>
<p>the encoded image as a string</p>
</text></group>
<group><bugs/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/bmp.c' first-line='142'/>
<p>Doesn't support old BMP mode, only "windows" mode.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.BMP.decode'>decode</ref></p></text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/avs.c' first-line='36'/>
<module name='AVS'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/avs.c' first-line='37'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/avs.c' first-line='37'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.AVS.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.AVS.decode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/avs.c' first-line='42'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/avs.c' first-line='42'/>
<p>Handle encoding and decoding of AVS-X images.
AVS is rather trivial, and not really useful, but:</p>

<p>An AVS file is a raw (uncompressed) 24 bit image file with alpha.
The alpha channel is 8 bit, and there is no separate alpha for r,
g and b.</p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='9'/>
<module name='ANY'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='10'/>
<p>
This method calls the other decoding methods
and has some heuristics for what type of image
this is.</p>

<p>Methods:
<ref resolved='predef::Image.ANY._decode'>decode</ref>, <ref resolved='predef::Image.ANY._decode'>decode_alpha</ref>,
<ref resolved='predef::Image.ANY._decode'>_decode</ref></p>

<p/>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref></p></text></group>

</doc>
<docgroup homogen-type='method'>
<method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode'>
   <returntype><object resolved='predef::Image.ANY._decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_alpha'>
   <returntype><object resolved='predef::Image.ANY._decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='63'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='63'/>
<p>Tries heuristics to find the correct method
of decoding the data, then calls that method.</p>

<p>The result of _decode() is a mapping that contains
<pre>
        "type":image data type (ie, "image/jpeg" or similar)
        "image":the image object,
        "alpha":the alpha channel or 0 if N/A
</pre>
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/any.c' first-line='63'/>
<p>Throws upon failure.</p>
</text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='32'/>
<module name='TGA'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='33'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='33'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.TGA.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='888'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='888'/>
<p>Decodes a Targa image.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='888'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.TGA.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.TGA.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.TGA.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='907'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='907'/>
<p>Encodes a Targa image.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero or more encoding options:</p>

<p><pre>
normal options:
    "alpha":image object
        Use this image as alpha channel
        (Note: Targa alpha channel is grey.
         The values are calculated by (r+2g+b)/4.)
 
    "raw":1
        Do not RLE encode the image
 
</pre>
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_decode'>
<method name='_decode'>
   <returntype><object resolved='predef::Image.TGA._decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='854'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='854'/>
<p>Decodes a Targa image to a mapping.
  The mapping follows this format:
      ([ "image":img_object, "alpha":alpha_channel ])
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/tga.c' first-line='854'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='9'/>
<module name='XWD'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='10'/>
<p>
This submodule keeps the XWD (X Windows Dump)
decode capabilities of the <ref resolved='predef::Image.Image'>Image</ref> module.</p>

<p>XWD is the output format for the xwd program.</p>

<p>Simple decoding:<br/>
<ref resolved='predef::Image.XWD.decode'>decode</ref></p>

<p>Advanced decoding:<br/>
<ref resolved='predef::Image.XWD._decode'>_decode</ref>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.PNM'>Image.PNM</ref>, <ref resolved='predef::Image.X'>Image.X</ref></p></text></group>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.XWD.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='385'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='385'/>
<p>Simple decodes a XWD image file.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='decode_header'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='53'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='53'/>
<p>Decodes XWD data and returns the result.</p>

<p>Supported XWD visual classes and encoding formats are
        TrueColor / ZPixmap
        DirectColor / ZPixmap
        PseudoColor / ZPixmap</p>

<p>If someone sends me files of other formats, these formats
may be implemented. <tt>:)</tt> /<tt>mirar+pike@mirar.org</tt></p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='53'/>
<p>the decoded image as an image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/xwd.c' first-line='53'/>
<p>This function may throw errors upon illegal or unknown XWD data.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.XWD.decode'>decode</ref></p></text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='9'/>
<module name='RAS'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='10'/>
<p>
This submodule keep the RAS encode/decode capabilities
of the <ref resolved='predef::Image.Image'>Image</ref> module.
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.RAS.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='71'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='71'/>
<p>Decodes RAS data and creates an image object.</p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='71'/>
<p>the decoded image as an image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='71'/>
<p>This function may throw errors upon illegal RAS data.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.RAS.encode'>encode</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='encode'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.RAS.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.RAS.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.RAS.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='358'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/ras.c' first-line='358'/>
<p>Encodes a RAS image.</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero or more encoding options:</p>

<p><pre>
normal options:
 
    "palette":colortable object
        Use this as palette for pseudocolor encoding
 
</pre></p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='38'/>
<module name='PCX'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='39'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='39'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.PCX.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='330'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='330'/>
<p>Decodes a PCX image.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='330'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PCX.encode'/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PCX.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.PCX.encode'/></type></argument>

   </arguments>
</method><method name='_encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PCX.encode'/></type></argument>

   </arguments>
</method><method name='_encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PCX.encode'/></type></argument>
<argument name='mappingoptions'><type>
   <object resolved='predef::Image.PCX.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='367'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='367'/>
<p>Encodes a PCX image.  The _encode and the encode functions are identical</p>

<p>The <tt>options</tt> argument may be a mapping
containing zero or more encoding options:</p>

<p><pre>
normal options:
    "raw":1
        Do not RLE encode the image
    "dpy":int
    "xdpy":int
    "ydpy":int
        Image resolution (in pixels/inch, integer numbers)
    "xoffset":int
    "yoffset":int
        Image offset (not used by most programs, but gimp uses it)
</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_decode'>
<method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='348'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='348'/>
<p>Decodes a PCX image to a mapping.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pcx.c' first-line='348'/>
<p>Throws upon error in data.</p>
</text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='9'/>
<module name='PNM'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='10'/>
<p>
This submodule keeps the PNM encode/decode capabilities
of the <ref resolved='predef::Image.Image'>Image</ref> module.</p>

<p>PNM is a common image storage format on unix systems,
and is a very simple format.</p>

<p>This format doesn't use any color palette.</p>

<p>The format is divided into seven subformats;</p>

<p><pre>
P1(PBM) - ascii bitmap (only two colors)
P2(PGM) - ascii greymap (only grey levels)
P3(PPM) - ascii truecolor
P4(PBM) - binary bitmap
P5(PGM) - binary greymap
P6(PPM) - binary truecolor
</pre></p>

<p>Simple encoding:<br/>
<ref resolved='predef::Image.PNM.encode'>encode</ref>,<br/> <ref resolved='predef::Image.PNM.encode'>encode_binary</ref>,<br/>
<ref resolved='predef::Image.PNM.encode'>encode_ascii</ref></p>

<p>Simple decoding:<br/>
<ref resolved='predef::Image.PNM.decode'>decode</ref></p>

<p>Advanced encoding:<br/>
<ref resolved='predef::Image.PNM.encode'>encode_P1</ref>, <br/>
<ref resolved='predef::Image.PNM.encode'>encode_P2</ref>, <br/>
<ref resolved='predef::Image.PNM.encode'>encode_P3</ref>, <br/>
<ref resolved='predef::Image.PNM.encode'>encode_P4</ref>, <br/>
<ref resolved='predef::Image.PNM.encode'>encode_P5</ref>, <br/>
<ref resolved='predef::Image.PNM.encode'>encode_P6</ref>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.GIF'>Image.GIF</ref></p></text></group>

</doc>
<docgroup homogen-type='method' homogen-name='decode'>
<method name='decode'>
   <returntype><object resolved='predef::Image.PNM.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='120'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='120'/>
<p>Decodes PNM (PBM/PGM/PPM) data and creates an image object.</p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='120'/>
<p>the decoded image as an image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='120'/>
<p>This function may throw errors upon illegal PNM data.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.PNM.encode'>encode</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_binary'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_ascii'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P1'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P2'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P3'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P4'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P5'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><method name='encode_P6'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.PNM.encode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='241'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='241'/>
<p>Make a complete PNM file from an image.</p>

<p><ref resolved='predef::Image.PNM.encode'>encode_binary</ref>() and <ref resolved='predef::Image.PNM.encode'>encode_ascii</ref>()
uses the most optimized encoding for this image (bitmap, grey
or truecolor) - P4, P5 or P6 respective P1, P2 or P3.</p>

<p><ref resolved='predef::Image.PNM.encode'>encode_P1</ref>/<ref resolved='predef::Image.PNM.encode'>encode_P4</ref>
assumes the image is black and white. Use
<ref resolved='predef::Image.Image.threshold'>Image.Image-&gt;threshold</ref>() or something like
<tt><ref resolved='predef::Image.Colortable'>Image.Colortable</ref>( ({({0,0,0}),({255,255,255})}) )<br/>-&gt;floyd_steinberg()<br/>-&gt;map(my_image)</tt>
to get a black and white image.</p>

<p><ref resolved='predef::Image.PNM.encode'>encode_P2</ref>/<ref resolved='predef::Image.PNM.encode'>encode_P5</ref> assumes the image is greyscale. Use
<ref resolved='predef::Image.Image.grey'>Image.Image-&gt;grey</ref>() to get a greyscale image.</p>

<p/>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='241'/>
<p>the encoded image as a string</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/pnm.c' first-line='241'/>
<p><ref resolved='predef::Image.PNM.encode'>encode</ref>() is equal to <ref resolved='predef::Image.PNM.encode'>encode_binary</ref>(),
but may change in a future release.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.PNM.decode'>decode</ref></p></text></group>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/hrz.c' first-line='28'/>
<module name='HRZ'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/hrz.c' first-line='29'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/hrz.c' first-line='29'/>
<p/>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='decode'>
   <returntype><object resolved='predef::Image.HRZ.decode'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='_decode'>
   <returntype><mapping/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='encode'>
   <returntype><string/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.HRZ.decode'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/hrz.c' first-line='34'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/encodings/hrz.c' first-line='34'/>
<p>Handle encoding and decoding of HRZ images.
HRZ is rather trivial, and not really useful, but:</p>

<p>The HRZ file is always 256x240 with RGB values from 0 to 63.
No compression, no header, just the raw RGB data.
HRZ is (was?) used for amatuer radio slow-scan TV.</p>
</text>

</doc>
</docgroup>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='9'/>
<class name='Image'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='10'/>
<docgroup homogen-name='apply_max' homogen-type='method'>
<method name='apply_max'>
   <returntype><object resolved='predef::Image.Image.apply_max'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='apply_max'>
   <returntype><object resolved='predef::Image.Image.apply_max'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='apply_max'>
   <returntype><object resolved='predef::Image.Image.apply_max'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='div'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='419'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='419'/>
<p>This is the same as apply_matrix, but it uses the maximum
instead.</p>

<p>This function is not very fast.
</p>
</text>
<group>
   <param name='array'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='429'/>
<p>the matrix; innermost is a value or an array with red, green, blue
values for red, green, blue separation.</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='434'/>
<p>base level of result, default is zero</p></text></group>
<group>
   <param name='div'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='436'/>
<p>division factor, default is 1.0.</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='419'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='419'/>
<p><b>experimental status</b>; may not be exact the same
output in later versions</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='make_ascii' homogen-type='method'>
<method name='make_ascii'>
   <returntype><string/></returntype>
   <arguments><argument name='orient1'><type><object resolved='predef::Image.Image.make_ascii'/></type></argument>
<argument name='objectorient2'><type>
   <object resolved='predef::Image.Image.make_ascii'/></type></argument>
<argument name='objectorient3'><type>
   <object resolved='predef::Image.Image.make_ascii'/></type></argument>
<argument name='objectorient4'><type>
   <object resolved='predef::Image.Image.make_ascii'/></type></argument>
<argument name='int|voidxsize'><type>
   <object resolved='predef::Image.Image.make_ascii'/></type></argument>
<argument name='int|voidysize'><type>
   <object resolved='predef::Image.Image.make_ascii'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='234'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='234'/>
<p>This method creates a string that looks like
the image. Example:
<pre>
   //Stina is an image with a cat.
   array(object) Stina4=Stina-&gt;orient4();
   Stina4[1]*=215;
   Stina4[3]*=215;
   string foo=Stina-&gt;make_ascii(@Stina4,40,4,8);
</pre>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='234'/>
<p>some nice acsii-art.</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='234'/>
<p><b>experimental status</b>; may not be exact the same
output in later versions
<pre>      |      /    -    \
     hue=  0     64   128  192  (=red in an hsv image)
</pre></p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.orient'>orient</ref>, <ref resolved='predef::Image.Image.orient'>orient4</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='match' homogen-type='method'>
<method name='match'>
   <returntype><object resolved='predef::Image.Image.match'/></returntype>
   <arguments><argument name='scale'><type>
   <or><int/><float/></or></type></argument>
<argument name='objectneedle'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>

   </arguments>
</method><method name='match'>
   <returntype><object resolved='predef::Image.Image.match'/></returntype>
   <arguments><argument name='scale'><type>
   <or><int/><float/></or></type></argument>
<argument name='objectneedle'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objecthaystack_cert'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objectneedle_cert'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>

   </arguments>
</method><method name='match'>
   <returntype><object resolved='predef::Image.Image.match'/></returntype>
   <arguments><argument name='scale'><type>
   <or><int/><float/></or></type></argument>
<argument name='objectneedle'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objecthaystack_avoid'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='intfoo'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>

   </arguments>
</method><method name='match'>
   <returntype><object resolved='predef::Image.Image.match'/></returntype>
   <arguments><argument name='scale'><type>
   <or><int/><float/></or></type></argument>
<argument name='objectneedle'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objecthaystack_cert'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objectneedle_cert'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='objecthaystack_avoid'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>
<argument name='intfoo'><type>
   <object resolved='predef::Image.Image.match'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='150'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='150'/>
<p>This method creates an image that describes the
match in every pixel in the image and the
needle-Image.</p>

<p><pre>
   new pixel value =
     sum( my_abs(needle_pixel-haystack_pixel))
</pre></p>

<p>The new image only have the red rgb-part set.</p>

<p/>
</text>
<group>
   <param name='scale'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='167'/>
<p>Every pixel is divided with this value.
Note that a proper value here depends on
the size of the neadle.
</p></text></group>
<group>
   <param name='needle'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='172'/>
<p>The image to use for the matching.
</p></text></group>
<group>
   <param name='haystack_cert'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='175'/>
<p>This image should be the same size as
the image itselves. A non-white-part of the
haystack_cert-image modifies the output
by lowering it.
</p></text></group>
<group>
   <param name='needle_cert'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='181'/>
<p>The same, but for the needle-image.
</p></text></group>
<group>
   <param name='foo'/>
   <param name='haystack_avoid'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='185'/>
<p>This image should be the same size as
the image itselves. If foo is less than the red
value in haystack_avoid the corresponding
matching-calculating is not calculated. The avoided parts
are drawn in the color 0,100,0.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='150'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='150'/>
<p><b>experimental status</b>; may not be exact the same
output in later versions</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.phaseh'>phasev</ref>, <ref resolved='predef::Image.Image.phaseh'>phaseh</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='phaseh'>
   <returntype><object resolved='predef::Image.Image.phaseh'/></returntype>
   <arguments>
   </arguments>
</method><method name='phasev'>
   <returntype><object resolved='predef::Image.Image.phaseh'/></returntype>
   <arguments>
   </arguments>
</method><method name='phasevh'>
   <returntype><object resolved='predef::Image.Image.phaseh'/></returntype>
   <arguments>
   </arguments>
</method><method name='phasehv'>
   <returntype><object resolved='predef::Image.Image.phaseh'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='68'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='68'/>
<p>Draws images describing the phase
of the current image. phaseh gives the
horizontal phase and phasev the vertical
phase.</p>

<p><tt>phaseh</tt> gives an image
where
<pre>
       max  falling   min  rising
value=  0     64      128   192
</pre></p>

<p>0 is set if there is no way to determine
if it is rising or falling. This is done
for the every red, green and blue part of
the image.</p>

<p>Phase images can be used to create ugly
effects or to find meta-information
in the orginal image.</p>

<p><table border='0'>
<tr>
<td><image file='predef.Image.Image.phaseh.1.png' width='80' height='115'>search.c0.png</image></td>
<td><image file='predef.Image.Image.phaseh.2.png' width='80' height='115'>search.c1.png</image></td>
<td><image file='predef.Image.Image.phaseh.3.png' width='80' height='115'>search.c2.png</image></td>
<td><image file='predef.Image.Image.phaseh.4.png' width='80' height='115'>search.c3.png</image></td>
<td><image file='predef.Image.Image.phaseh.5.png' width='80' height='115'>search.c4.png</image></td>
</tr>
<tr>
<td>original </td>
<td>phaseh() </td>
<td>phasev() </td>
<td>phasevh()</td>
<td>phasehv()</td>
</tr>
</table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='68'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='68'/>
<p><b>experimental status</b>; may not be exact the same
output in later versions</p>
</text></group>
<group><bugs/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/search.c' first-line='68'/>
<p>0 should not be set as explained above.</p>
</text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='12'/>
<docgroup homogen-type='method' homogen-name='paste'>
<method name='paste'>
   <returntype><object resolved='predef::Image.Image.paste'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste'/></type></argument>

   </arguments>
</method><method name='paste'>
   <returntype><object resolved='predef::Image.Image.paste'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='278'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='278'/>
<p>Pastes a given image over the current image.
</p>
</text>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='284'/>
<p>image to paste (may be empty, needs to be an image object)</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='287'/>
<p>where to paste the image; default is 0,0
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='278'/>
<p>the object called</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.paste_mask'>paste_mask</ref>, <ref resolved='predef::Image.Image.paste_alpha'>paste_alpha</ref>, <ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='paste_alpha'>
<method name='paste_alpha'>
   <returntype><object resolved='predef::Image.Image.paste_alpha'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste_alpha'/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><method name='paste_alpha'>
   <returntype><object resolved='predef::Image.Image.paste_alpha'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste_alpha'/></type></argument>
<argument name='alpha'><type><int/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='349'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='349'/>
<p>Pastes a given image over the current image, with
the specified alpha channel value.</p>

<p>An alpha channel value of 0 leaves nothing of the original
image in the paste area, 255 is meaningless and makes the
given image invisible.
</p>
</text>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='360'/>
<p>image to paste</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='362'/>
<p>alpha channel value</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='365'/>
<p>where to paste the image; default is 0,0
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='349'/>
<p>the object called</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.paste_mask'>paste_mask</ref>, <ref resolved='predef::Image.Image.paste'>paste</ref>, <ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='paste_alpha_color'>
<method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>

   </arguments>
</method><method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>
<argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='paste_alpha_color'>
   <returntype><object resolved='predef::Image.Image.paste_alpha_color'/></returntype>
   <arguments><argument name='mask'><type><object resolved='predef::Image.Image.paste_alpha_color'/></type></argument>
<argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='531'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='531'/>
<p>Pastes a given color over the current image,
using the given mask as opaque channel.</p>

<p>A pixel value of 255 makes the result become the color given,
0 doesn't change anything.</p>

<p>The masks red, green and blue values are used separately.
If no color are given, the current is used.
</p>
</text>
<group>
   <param name='mask'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='548'/>
<p>mask image</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='552'/>
<p>what color to paint with; default is current</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='555'/>
<p>where to paste the image; default is 0,0
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='531'/>
<p>the object called</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.paste_mask'>paste_mask</ref>, <ref resolved='predef::Image.Image.paste_alpha'>paste_alpha</ref>, <ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='paste_mask'>
<method name='paste_mask'>
   <returntype><object resolved='predef::Image.Image.paste_mask'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste_mask'/></type></argument>
<argument name='mask'><type><object resolved='predef::Image.Image.paste_mask'/></type></argument>

   </arguments>
</method><method name='paste_mask'>
   <returntype><object resolved='predef::Image.Image.paste_mask'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Image.paste_mask'/></type></argument>
<argument name='mask'><type><object resolved='predef::Image.Image.paste_mask'/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='433'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='433'/>
<p>Pastes a given image over the current image,
using the given mask as opaque channel.</p>

<p>A pixel value of 255 makes the result become a pixel
from the given image, 0 doesn't change anything.</p>

<p>The masks red, green and blue values are used separately.
</p>
</text>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='445'/>
<p>image to paste</p></text></group>
<group>
   <param name='mask'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='447'/>
<p>mask image</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='450'/>
<p>where to paste the image; default is 0,0
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='433'/>
<p>the object called</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.paste'>paste</ref>, <ref resolved='predef::Image.Image.paste_alpha'>paste_alpha</ref>, <ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref></p></text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='10'/>
<docgroup homogen-type='method'>
<method name='orient'>
   <returntype><object resolved='predef::Image.Image.orient'/></returntype>
   <arguments><argument name='something'><type>
   <or><void/><array><valuetype><object resolved='predef::Image.Image.orient'/></valuetype></array></or></type></argument>

   </arguments>
</method><method name='orient4'>
   <returntype>
        <array><valuetype><object resolved='predef::Image.Image.orient'/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='69'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='69'/>
<p>Draws images describing the orientation
of the current image.</p>

<p><tt>orient</tt> gives an HSV image
(run a <ref resolved='predef::Image.Image.rgb_to_hsv'>hsv_to_rgb</ref> pass on it
to get a viewable image).
corresponding to the angle of the
orientation:
<pre>      |      /    -    \
     hue=  0     64   128  192  (=red in an hsv image)
         purple cyan green red
</pre>
Red, green and blue channels are added
and not compared separately.</p>

<p>If you first use orient4 you can give its
output as input to this function.</p>

<p>The <tt>orient4</tt> function gives back
4 image objects, corresponding to the
amount of different directions, see above.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='69'/>
<p>an image or an array of the four new image objects</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='69'/>
<p>experimental status; may not be exact the same
output in later versions</p>
</text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='10'/>
<docgroup homogen-name='noise' homogen-type='method'>
<method name='noise'>
   <returntype><void/></returntype>
   <arguments><argument name='colorrange'><type>
   <array><valuetype>
     <or><float/><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></type></argument>

   </arguments>
</method><method name='noise'>
   <returntype><void/></returntype>
   <arguments><argument name='colorrange'><type>
   <array><valuetype>
     <or><float/><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></type></argument>
<argument name='scale'><type><float/></type></argument>
<argument name='xdiff'><type><float/></type></argument>
<argument name='ydiff'><type><float/></type></argument>
<argument name='cscale'><type><float/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='338'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='338'/>
<p>Gives a new image with the old image's size,
filled width a 'noise' pattern.</p>

<p>The random seed may be different with each instance of pike.</p>

<p>Example:
<tt>-&gt;noise( ({0,({255,0,0}), 0.3,({0,255,0}), 0.6,({0,0,255}), 0.8,({255,255,0})}), 0.2,0.0,0.0,1.0 );</tt>
<br/><image file='predef.Image.Image.noise.1.png' width='200' height='100'>pattern.c0.png</image>
</p>
</text>
<group>
   <param name='colorrange'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='349'/>
<p>colorrange table</p></text></group>
<group>
   <param name='scale'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='351'/>
<p>default value is 0.1</p></text></group>
<group>
   <param name='xdiff'/>
   <param name='ydiff'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='354'/>
<p>default value is 0,0</p></text></group>
<group>
   <param name='cscale'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='356'/>
<p>default value is 1</p></text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.turbulence'>turbulence</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='random'>
   <returntype><object resolved='predef::Image.Image.random'/></returntype>
   <arguments>
   </arguments>
</method><method name='random'>
   <returntype><object resolved='predef::Image.Image.random'/></returntype>
   <arguments><argument name='seed'><type><int/></type></argument>

   </arguments>
</method><method name='randomgrey'>
   <returntype><object resolved='predef::Image.Image.random'/></returntype>
   <arguments>
   </arguments>
</method><method name='random'>
   <returntype><object resolved='predef::Image.Image.random'/></returntype>
   <arguments><argument name='seed'><type>
   <object>greyint</object></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='494'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='494'/>
<p>Gives a randomized image;<br/>
<table><tr valign='center'>
<td><image file='predef.Image.Image.random.1.png' width='80' height='115'>pattern.c1.png</image></td>
<td><image file='predef.Image.Image.random.2.png' width='80' height='115'>pattern.c2.png</image></td>
<td><image file='predef.Image.Image.random.3.png' width='80' height='115'>pattern.c3.png</image></td>
<td><image file='predef.Image.Image.random.4.png' width='80' height='115'>pattern.c4.png</image></td>
<td><image file='predef.Image.Image.random.5.png' width='80' height='115'>pattern.c5.png</image></td>
<td><image file='predef.Image.Image.random.6.png' width='80' height='115'>pattern.c6.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;random()</td>
<td>-&gt;random(17)</td>
<td>greyed<br/>(same again)</td>
<td>color(red)<br/>(same again)</td>
<td>...red channel<br/></td>
</tr></table></p>

<p>Use with -&gt;<ref resolved='predef::Image.Image.grey'>grey</ref>() or -&gt;<ref resolved='predef::Image.Image.color'>color</ref>()
for one-color-results.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='494'/>
<p>a new image</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.test'>test</ref>, <ref resolved='predef::Image.Image.noise'>noise</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='turbulence' homogen-type='method'>
<method name='turbulence'>
   <returntype><void/></returntype>
   <arguments><argument name='colorrange'><type>
   <array><valuetype>
     <or><float/><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></type></argument>

   </arguments>
</method><method name='turbulence'>
   <returntype><void/></returntype>
   <arguments><argument name='colorrange'><type>
   <array><valuetype>
     <or><float/><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></type></argument>
<argument name='octaves'><type><int/></type></argument>
<argument name='scale'><type><float/></type></argument>
<argument name='xdiff'><type><float/></type></argument>
<argument name='ydiff'><type><float/></type></argument>
<argument name='cscale'><type><float/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='408'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='408'/>
<p>gives a new image with the old image's size,
filled width a 'turbulence' pattern</p>

<p>The random seed may be different with each instance of pike.</p>

<p>Example: <br/>
<tt>-&gt;turbulence( ({0,({229,204,204}), 0.9,({229,20,20}), 0.9,Color.black}) );</tt>
<br/><image file='predef.Image.Image.turbulence.1.png' width='200' height='100'>pattern.c7.png</image></p>
</text>
<group>
   <param name='colorrange'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='419'/>
<p>colorrange table</p></text></group>
<group>
   <param name='octaves'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='421'/>
<p>default value is 3</p></text></group>
<group>
   <param name='scale'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='423'/>
<p>default value is 0.1</p></text></group>
<group>
   <param name='xdiff'/>
   <param name='ydiff'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='426'/>
<p>default value is 0,0</p></text></group>
<group>
   <param name='cscale'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='428'/>
<p>default value is 1</p></text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.noise'>noise</ref>, <ref resolved='predef::Image.Color'>Image.Color</ref></p></text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='10'/>
<p>
The main object of the <ref resolved='predef::Image.Image'>Image</ref> module, this object
is used as drawing area, mask or result of operations.</p>

<p>basic: <br/>
<ref resolved='predef::Image.Image.clear'>clear</ref>,
<ref resolved='predef::Image.Image.clone'>clone</ref>,
<ref resolved='predef::Image.Image.create'>create</ref>,
<ref resolved='predef::Image.Image.xsize'>xsize</ref>,
<ref resolved='predef::Image.Image.ysize'>ysize</ref></p>

<p>plain drawing: <br/>
<ref resolved='predef::Image.Image.box'>box</ref>,
<ref resolved='predef::Image.Image.circle'>circle</ref>,
<ref resolved='predef::Image.Image.getpixel'>getpixel</ref>,
<ref resolved='predef::Image.Image.line'>line</ref>,
<ref resolved='predef::Image.Image.setcolor'>setcolor</ref>,
<ref resolved='predef::Image.Image.setpixel'>setpixel</ref>,
<ref resolved='predef::Image.Image.threshold'>threshold</ref>,
<ref resolved='predef::Image.Image.polyfill'>polyfill</ref></p>

<p>operators: <br/>
<ref resolved='predef::Image.Image.`&amp;'>`&amp;</ref>,
<ref resolved='predef::Image.Image.`*'>`*</ref>,
<ref resolved='predef::Image.Image.`+'>`+</ref>,
<ref resolved='predef::Image.Image.`-'>`-</ref>,
<ref resolved='predef::Image.Image.`=='>`==</ref>,
<ref resolved='predef::Image.Image.`=='>`&gt;</ref>,
<ref resolved='predef::Image.Image.`=='>`&lt;</ref>,
<ref resolved='predef::Image.Image.`|'>`|</ref></p>

<p>pasting images: <br/>
<ref resolved='predef::Image.Image.paste'>paste</ref>,
<ref resolved='predef::Image.Image.paste_alpha'>paste_alpha</ref>,
<ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref>,
<ref resolved='predef::Image.Image.paste_mask'>paste_mask</ref></p>

<p>getting subimages, scaling, rotating: <br/>
<ref resolved='predef::Image.Image.autocrop'>autocrop</ref>,
<ref resolved='predef::Image.Image.clone'>clone</ref>,
<ref resolved='predef::Image.Image.copy'>copy</ref>,
<ref resolved='predef::Image.Image.dct'>dct</ref>,
<ref resolved='predef::Image.Image.mirrorx'>mirrorx</ref>,
<ref resolved='predef::Image.Image.rotate'>rotate</ref>,
<ref resolved='predef::Image.Image.rotate_ccw'>rotate_ccw</ref>,
<ref resolved='predef::Image.Image.rotate_cw'>rotate_cw</ref>,
<ref resolved='predef::Image.Image.rotate'>rotate_expand</ref>,
<ref resolved='predef::Image.Image.scale'>scale</ref>,
<ref resolved='predef::Image.Image.skewx'>skewx</ref>,
<ref resolved='predef::Image.Image.skewx'>skewx_expand</ref>,
<ref resolved='predef::Image.Image.skewy'>skewy</ref>,
<ref resolved='predef::Image.Image.skewy'>skewy_expand</ref></p>

<p>calculation by pixels: <br/>
<ref resolved='predef::Image.Image.apply_matrix'>apply_matrix</ref>,
<ref resolved='predef::Image.Image.change_color'>change_color</ref>,
<ref resolved='predef::Image.Image.color'>color</ref>,
<ref resolved='predef::Image.Image.distancesq'>distancesq</ref>,
<ref resolved='predef::Image.Image.grey'>grey</ref>,
<ref resolved='predef::Image.Image.invert'>invert</ref>,
<ref resolved='predef::Image.Image.modify_by_intensity'>modify_by_intensity</ref>,
<ref resolved='predef::Image.Image.outline'>outline</ref>
<ref resolved='predef::Image.Image.select_from'>select_from</ref>,
<ref resolved='predef::Image.Image.rgb_to_hsv'>rgb_to_hsv</ref>,
<ref resolved='predef::Image.Image.rgb_to_hsv'>hsv_to_rgb</ref>,<br/></p>

<p><ref resolved='predef::Image.Image.average'>average</ref>,
<ref resolved='predef::Image.Image.average'>max</ref>,
<ref resolved='predef::Image.Image.average'>min</ref>,
<ref resolved='predef::Image.Image.average'>sum</ref>,
<ref resolved='predef::Image.Image.average'>sumf</ref>,
<ref resolved='predef::Image.Image.find_min'>find_min</ref>,
<ref resolved='predef::Image.Image.find_min'>find_max</ref></p>

<p>special pattern drawing:<br/>
<ref resolved='predef::Image.Image.noise'>noise</ref>,
<ref resolved='predef::Image.Image.turbulence'>turbulence</ref>,
<ref resolved='predef::Image.Image.test'>test</ref>,
<ref resolved='predef::Image.Image.tuned_box'>tuned_box</ref>,
<ref resolved='predef::Image.Image.gradients'>gradients</ref>,
<ref resolved='predef::Image.Image.random'>random</ref>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Font'>Image.Font</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref>, <ref resolved='predef::Image.X'>Image.X</ref></p></text></group>

</doc>
<docgroup homogen-name='apply_curve' homogen-type='method'>
<method name='apply_curve'>
   <returntype><object resolved='predef::Image.Image.apply_curve'/></returntype>
   <arguments><argument name='array(int(0..255'><type>
   <object resolved='predef::Image.Image.apply_curve'/></type></argument>

   </arguments>
</method><method name='apply_curve'>
   <returntype><object resolved='predef::Image.Image.apply_curve'/></returntype>
   <arguments><argument name='array(int(0..255'><type>
   <object resolved='predef::Image.Image.apply_curve'/></type></argument>

   </arguments>
</method><method name='apply_curve'>
   <returntype><object resolved='predef::Image.Image.apply_curve'/></returntype>
   <arguments><argument name='stringchannel'><type>
   <object resolved='predef::Image.Image.apply_curve'/></type></argument>
<argument name='array(int(0..255'><type>
   <object resolved='predef::Image.Image.apply_curve'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3736'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3736'/>
<p>Apply a lookup-table on all pixels in an image.
If only one curve is passed, use the same curve for red, green and blue.
If 'channel' is specified, the curve is only applied to the
specified channel.</p>

<p/>
</text>
<group>
   <param name='curve_r'/>
   <param name='curve_g'/>
   <param name='curve_b'/>
   <param name='curve'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3750'/>
<p>An array with 256 elements, each between 0 and 255.
It is used as a look-up table, if the pixel value is 2 and
curve[2] is 10, the new pixel value will be 10.
</p></text></group>
<group>
   <param name='channel'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3755'/>
<p>one of "red", "green", "blue", "value", "saturation" and "hue".
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3736'/>
<p>a new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.gamma'>gamma</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.modify_by_intensity'>modify_by_intensity</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='apply_matrix' homogen-type='method'>
<method name='apply_matrix'>
   <returntype><object resolved='predef::Image.Image.apply_matrix'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='apply_matrix'>
   <returntype><object resolved='predef::Image.Image.apply_matrix'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='apply_matrix'>
   <returntype><object resolved='predef::Image.Image.apply_matrix'/></returntype>
   <arguments><argument name='matrix'><type>
   <array><valuetype>
     <array><valuetype>
       <or><int/><array><valuetype><int/></valuetype></array></or></valuetype></array></valuetype></array></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='div'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3134'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3134'/>
<p>Applies a pixel-transform matrix, or filter, to the image.</p>

<p><pre>
                       2   2
pixel(x,y)= base+ k ( sum sum pixel(x+k-1,y+l-1)*matrix(k,l) )
                      k=0 l=0
</pre></p>

<p>1/k is sum of matrix, or sum of matrix multiplied with div.
base is given by r,g,b and is normally black.</p>

<p><table><tr><td rowspan='2'>
blur (ie a 2d gauss function):
<pre>
({({1,2,1}),
  ({2,5,2}),
  ({1,2,1})})
</pre>
</td><td>
<image file='predef.Image.Image.apply_matrix.1.png' width='80' height='115'>image.c0.png</image>
</td><td>
<image file='predef.Image.Image.apply_matrix.2.png' width='80' height='115'>image.c1.png</image>
</td></tr>
<tr><td/><td>original</td></tr>
 
<tr><td>
sharpen (k&gt;8, preferably 12 or 16):
<pre>
({({-1,-1,-1}),
  ({-1, k,-1}),
  ({-1,-1,-1})})
</pre>
</td><td>
<image file='predef.Image.Image.apply_matrix.3.png' width='80' height='115'>image.c2.png</image>
</td></tr>
 
<tr><td>
edge detect:
<pre>
({({1, 1,1}),
  ({1,-8,1}),
  ({1, 1,1})})
</pre>
</td><td>
<image file='predef.Image.Image.apply_matrix.4.png' width='80' height='115'>image.c3.png</image>
</td></tr>
 
<tr><td>
horisontal edge detect (get the idea):
<pre>
({({0, 0,0}),
  ({1,-2,1}),
  ({0, 0,0})})
</pre>
</td><td>
<image file='predef.Image.Image.apply_matrix.5.png' width='80' height='115'>image.c4.png</image>
</td></tr>
 
<tr><td rowspan='2'>
emboss (might prefer to begin with a <ref resolved='predef::Image.Image.grey'>grey</ref> image):
<pre>
({({2, 1, 0}),
  ({1, 0,-1}),
  ({0,-1,-2})}), 128,128,128, 3
</pre>
</td><td>
<image file='predef.Image.Image.apply_matrix.6.png' width='80' height='115'>image.c5.png</image>
</td><td>
<image file='predef.Image.Image.apply_matrix.7.png' width='80' height='115'>image.c6.png</image>
</td></tr>
<tr><td/><td>greyed</td></tr></table></p>

<p>This function is not very fast.
</p>
</text>
<group>
   <param name='array'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3251'/>
<p>the matrix; innermost is a value or an array with red, green, blue
values for red, green, blue separation.</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3256'/>
<p>base level of result, default is zero</p></text></group>
<group>
   <param name='div'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3258'/>
<p>division factor, default is 1.0.</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3134'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='autocrop'>
   <returntype><object resolved='predef::Image.Image.autocrop'/></returntype>
   <arguments>
   </arguments>
</method><method name='autocrop'>
   <returntype><object resolved='predef::Image.Image.autocrop'/></returntype>
   <arguments><argument name='border'><type><int/></type></argument>

   </arguments>
</method><method name='autocrop'>
   <returntype><object resolved='predef::Image.Image.autocrop'/></returntype>
   <arguments><argument name='border'><type><int/></type></argument>
<argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='autocrop'>
   <returntype><object resolved='predef::Image.Image.autocrop'/></returntype>
   <arguments><argument name='border'><type><int/></type></argument>
<argument name='left'><type><int/></type></argument>
<argument name='right'><type><int/></type></argument>
<argument name='top'><type><int/></type></argument>
<argument name='bottom'><type><int/></type></argument>

   </arguments>
</method><method name='autocrop'>
   <returntype><object resolved='predef::Image.Image.autocrop'/></returntype>
   <arguments><argument name='border'><type><int/></type></argument>
<argument name='left'><type><int/></type></argument>
<argument name='right'><type><int/></type></argument>
<argument name='top'><type><int/></type></argument>
<argument name='bottom'><type><int/></type></argument>
<argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='find_autocrop'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='find_autocrop'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='border'><type><int/></type></argument>

   </arguments>
</method><method name='find_autocrop'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='border'><type><int/></type></argument>
<argument name='left'><type><int/></type></argument>
<argument name='right'><type><int/></type></argument>
<argument name='top'><type><int/></type></argument>
<argument name='bottom'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1230'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1230'/>
<p>Removes "unneccesary" borders around the image, adds one of
its own if wanted to, in selected directions.</p>

<p>"Unneccesary" is all pixels that are equal -- ie if all the same pixels
to the left are the same color, that column of pixels are removed.</p>

<p>The find_autocrop() function simply returns x1,y1,x2,y2 for the
kept area. (This can be used with <ref resolved='predef::Image.Image.copy'>copy</ref> later.)
</p>
</text>
<group>
   <param name='border'/>
   <param name='left'/>
   <param name='right'/>
   <param name='top'/>
   <param name='bottom'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1254'/>
<p>which borders to scan and cut the image;
a typical example is removing the top and bottom unneccesary
pixels:
<pre>img=img-&gt;autocrop(0, 0,0,1,1);</pre>
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1230'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.copy'>copy</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='bitscale' homogen-type='method'>
<method name='bitscale'>
   <returntype><object resolved='predef::Image.Image.bitscale'/></returntype>
   <arguments><argument name='factor'><type><float/></type></argument>

   </arguments>
</method><method name='bitscale'>
   <returntype><object resolved='predef::Image.Image.bitscale'/></returntype>
   <arguments><argument name='xfactor'><type><float/></type></argument>
<argument name='yfactor'><type><float/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3038'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3038'/>
<p>scales the image with a factor, without smoothing.
This routine is faster than scale, but gives less correct
results</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.bitscale.1.png' width='80' height='115'>image.c7.png</image></td>
<td><image file='predef.Image.Image.bitscale.2.png' width='60' height='86'>image.c8.png</image></td>
<td><image file='predef.Image.Image.bitscale.3.png' width='60' height='86'>image.c9.png</image></td>
</tr><tr>
<td>original</td>
<td>bitscale(0.75)</td>
<td>scale(0.75)</td>
</tr></table>
</p>
</text>
<group>
   <param name='factor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3055'/>
<p>factor to use for both x and y</p></text></group>
<group>
   <param name='xfactor'/>
   <param name='yfactor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3058'/>
<p>separate factors for x and y
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3038'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='bitscale' homogen-type='method'>
<method name='bitscale'>
   <returntype><object resolved='predef::Image.Image.bitscale'/></returntype>
   <arguments><argument name='newxsize'><type><int/></type></argument>
<argument name='newysize'><type><int/></type></argument>

   </arguments>
</method><method name='bitscale'>
   <returntype><object resolved='predef::Image.Image.bitscale'/></returntype>
   <arguments><argument><value>0</value></argument><argument name='newysize'><type><int/></type></argument>

   </arguments>
</method><method name='bitscale'>
   <returntype><object resolved='predef::Image.Image.bitscale'/></returntype>
   <arguments><argument name='newxsize'><type><int/></type></argument>
<argument><value>0</value></argument>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3061'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3061'/>
<p>scales the image to a specified new size,
if one of newxsize or newysize is 0,
the image aspect ratio is preserved.</p>
</text>
<group>
   <param name='newxsize'/>
   <param name='newysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3069'/>
<p>new image size in pixels
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3061'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3061'/>
<p>resulting image will be 1x1 pixels, at least</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='blur' homogen-type='method'>
<method name='blur'>
   <returntype><string/></returntype>
   <arguments><argument name='no_pass'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4481'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4481'/>
<p>A special case of apply_matrix that creates a blur effect.
About four times faster than the generic apply_matrix.
@[no_pass] is the number of times the blur matrix is applied.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.blur.1.png' width='80' height='115'>image.c10.png</image></td>
<td><image file='predef.Image.Image.blur.2.png' width='80' height='115'>image.c11.png</image></td>
<td><image file='predef.Image.Image.blur.3.png' width='80' height='115'>image.c12.png</image></td>
</tr><tr>
<td>original</td>
<td>blur(1)</td>
<td>blur(5)</td>
</tr></table>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.apply_matrix'>apply_matrix</ref>, <ref resolved='predef::Image.Image.grey_blur'>grey_blur</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='box' homogen-type='method'>
<method name='box'>
   <returntype><object resolved='predef::Image.Image.box'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>

   </arguments>
</method><method name='box'>
   <returntype><object resolved='predef::Image.Image.box'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='box'>
   <returntype><object resolved='predef::Image.Image.box'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1549'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1549'/>
<p>Draws a filled rectangle on the image.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.box.1.png' width='80' height='115'>image.c13.png</image></td>
<td><image file='predef.Image.Image.box.2.png' width='80' height='115'>image.c14.png</image></td>
<td><image file='predef.Image.Image.box.3.png' width='80' height='115'>image.c15.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;box<br/>(40,10,<br/>10,80,<br/>0,255,0)</td>
<td>-&gt;box<br/>(40,10,<br/>10,80,<br/>255,0,0,75)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x1'/>
   <param name='y1'/>
   <param name='x2'/>
   <param name='y2'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1569'/>
<p>box corners</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1573'/>
<p>color of the box</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1575'/>
<p>alpha value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1549'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='cast' homogen-type='method'>
<method name='cast'>
   <returntype><string/></returntype>
   <arguments><argument name='type'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4325'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4325'/>
<p>Cast the image to another datatype. Currently supported
are string ("rgbrgbrgb...") and array (double array
of <ref resolved='predef::Image.Color'>Image.Color</ref> objects).</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color'>Image.Color</ref>, <ref resolved='predef::Image.X'>Image.X</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='change_color' homogen-type='method'>
<method name='change_color'>
   <returntype><object resolved='predef::Image.Image.change_color'/></returntype>
   <arguments><argument name='tor'><type><int/></type></argument>
<argument name='tog'><type><int/></type></argument>
<argument name='tob'><type><int/></type></argument>

   </arguments>
</method><method name='change_color'>
   <returntype><object resolved='predef::Image.Image.change_color'/></returntype>
   <arguments><argument name='fromr'><type><int/></type></argument>
<argument name='fromg'><type><int/></type></argument>
<argument name='fromb'><type><int/></type></argument>
<argument name='inttor'><type>
   <object resolved='predef::Image.Image.change_color'/></type></argument>
<argument name='tog'><type><int/></type></argument>
<argument name='tob'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1167'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1167'/>
<p>Changes one color (exakt match) to another.
If non-exakt-match is preferred, check <ref resolved='predef::Image.Image.distancesq'>distancesq</ref>
and <ref resolved='predef::Image.Image.paste_alpha_color'>paste_alpha_color</ref>.</p>
</text>
<group>
   <param name='tor'/>
   <param name='tog'/>
   <param name='tob'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1176'/>
<p>destination color and next current color</p></text></group>
<group>
   <param name='fromr'/>
   <param name='fromg'/>
   <param name='fromb'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1180'/>
<p>source color, default is current color</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1167'/>
<p>a new (the destination) image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='circle' homogen-type='method'>
<method name='circle'>
   <returntype><object resolved='predef::Image.Image.circle'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='rx'><type><int/></type></argument>
<argument name='ry'><type><int/></type></argument>

   </arguments>
</method><method name='circle'>
   <returntype><object resolved='predef::Image.Image.circle'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='rx'><type><int/></type></argument>
<argument name='ry'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='circle'>
   <returntype><object resolved='predef::Image.Image.circle'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='rx'><type><int/></type></argument>
<argument name='ry'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1599'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1599'/>
<p>Draws a circle on the image. The circle is <i>not</i> antialiased.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.circle.1.png' width='80' height='115'>image.c16.png</image></td>
<td><image file='predef.Image.Image.circle.2.png' width='80' height='115'>image.c17.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;circle<br/>(50,50,<br/>30,50,<br/>0,255,255)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1615'/>
<p>circle center</p></text></group>
<group>
   <param name='rx'/>
   <param name='ry'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1618'/>
<p>circle radius in pixels</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1622'/>
<p>color</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1624'/>
<p>alpha value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1599'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='clear' homogen-type='method'>
<method name='clear'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='clear'>
   <returntype><void/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='clear'>
   <returntype><void/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1045'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1045'/>
<p>gives a new, cleared image with the same size of drawing area</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.clear.1.png' width='80' height='115'>image.c18.png</image></td>
<td><image file='predef.Image.Image.clear.2.png' width='80' height='115'>image.c19.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;clear<br/>(0,128,255)</td>
</tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1060'/>
<p>color of the new image</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1062'/>
<p>new default alpha channel value</p></text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.copy'>copy</ref>, <ref resolved='predef::Image.Image.clone'>clone</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='clone' homogen-type='method'>
<method name='clone'>
   <returntype><object resolved='predef::Image.Image.clone'/></returntype>
   <arguments>
   </arguments>
</method><method name='clone'>
   <returntype><object resolved='predef::Image.Image.clone'/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><method name='clone'>
   <returntype><object resolved='predef::Image.Image.clone'/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='clone'>
   <returntype><object resolved='predef::Image.Image.clone'/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='957'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='957'/>
<p>Copies to or initialize a new image object.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.clone.1.png' width='80' height='115'>image.c20.png</image></td>
<td><image file='predef.Image.Image.clone.2.png' width='80' height='115'>image.c21.png</image></td>
<td><image file='predef.Image.Image.clone.3.png' width='50' height='50'>image.c22.png</image></td>
</tr><tr>
<td>original</td>
<td>clone</td>
<td>clone(50,50)</td>
</tr></table>
</p>
</text>
<group>
   <param name='xsize'/>
   <param name='ysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='975'/>
<p>size of (new) image in pixels, called image
is cropped to that size</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='980'/>
<p>current color of the new image,
default is black.
Will also be the background color if the cloned image
is empty (no drawing area made).</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='985'/>
<p>new default alpha channel value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='957'/>
<p>the new object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.copy'>copy</ref>, <ref resolved='predef::Image.Image.create'>create</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='color' homogen-type='method'>
<method name='color'>
   <returntype><object resolved='predef::Image.Image.color'/></returntype>
   <arguments>
   </arguments>
</method><method name='color'>
   <returntype><object resolved='predef::Image.Image.color'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><method name='color'>
   <returntype><object resolved='predef::Image.Image.color'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2291'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2291'/>
<p>Colorize an image.</p>

<p>The red, green and blue values of the pixels are multiplied
with the given value(s). This works best on a grey image...</p>

<p>The result is divided by 255, giving correct pixel values.</p>

<p>If no arguments are given, the current color is used as factors.</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.color.1.png' width='80' height='115'>image.c23.png</image></td>
 <td><image file='predef.Image.Image.color.2.png' width='80' height='115'>image.c24.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>-&gt;color(128,128,255);</td>
 </tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2315'/>
<p>red, green, blue factors</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2317'/>
<p>factor
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2291'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.grey'>grey</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.modify_by_intensity'>modify_by_intensity</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='copy' homogen-type='method'>
<method name='copy'>
   <returntype><object resolved='predef::Image.Image.copy'/></returntype>
   <arguments>
   </arguments>
</method><method name='copy'>
   <returntype><object resolved='predef::Image.Image.copy'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>

   </arguments>
</method><method name='copy'>
   <returntype><object resolved='predef::Image.Image.copy'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='copy'>
   <returntype><object resolved='predef::Image.Image.copy'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1092'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1092'/>
<p>Copies this part of the image. The requested area can
be smaller, giving a cropped image, or bigger -
the new area will be filled with the given or current color.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.copy.1.png' width='80' height='115'>image.c25.png</image></td>
<td><image file='predef.Image.Image.copy.2.png' width='70' height='105'>image.c26.png</image></td>
<td><image file='predef.Image.Image.copy.3.png' width='90' height='125'>image.c27.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;copy<br/>(5,5,<br/>XSIZE-6,YSIZE-6)</td>
<td>-&gt;copy<br/>(-5,-5,<br/>XSIZE+4,YSIZE+4,<br/>10,75,10)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x1'/>
   <param name='y1'/>
   <param name='x2'/>
   <param name='y2'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1119'/>
<p>The requested new area. Default is the old image size.</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1123'/>
<p>color of the new image</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1125'/>
<p>new default alpha channel value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1092'/>
<p>a new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1092'/>
<p><ref resolved='predef::Image.Image.clone'>clone</ref>(void) and <ref resolved='predef::Image.Image.copy'>copy</ref>(void) does the same
operation
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.clone'>clone</ref>, <ref resolved='predef::Image.Image.autocrop'>autocrop</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='method'><type><string/></type></argument>
<argument name='...'><type>
   <object resolved='predef::Image.Image.create.method'>method</object></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='494'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='494'/>
<p>Initializes a new image object.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.create.1.png' width='80' height='115'>image.c28.png</image></td>
<td><image file='predef.Image.Image.create.2.png' width='80' height='115'>image.c29.png</image></td>
</tr><tr>
<td>Image.Image<br/>(XSIZE,YSIZE)</td>
<td>Image.Image<br/>(XSIZE,YSIZE,255,128,0)</td>
</tr></table></p>

<p>The image can also be calculated from some special methods,
for convinience:</p>

<p><pre>
channel modes; followed by a number of 1-char-per-pixel strings
or image objects (where red channel will be used),
or an integer value:
  "grey" : make a grey image (needs 1 source: grey)
  "rgb"  : make an rgb image (needs 3 sources: red, green and blue)
  "cmyk" : make a rgb image from cmyk (cyan, magenta, yellow, black)
 
generate modes; all extra arguments is given to the
generation function. These has the same name as the method:
  "<ref resolved='predef::Image.Image.test'>test</ref>,"
  "<ref resolved='predef::Image.Image.gradients'>gradients</ref>"
  "<ref resolved='predef::Image.Image.noise'>noise</ref>"
  "<ref resolved='predef::Image.Image.turbulence'>turbulence</ref>"
  "<ref resolved='predef::Image.Image.random'>random</ref>"
  "<ref resolved='predef::Image.Image.random'>randomgrey</ref>"
specials cases:
  "<ref resolved='predef::Image.Image.tuned_box'>tuned_box</ref>" (coordinates is automatic)
</pre>
</p>
</text>
<group>
   <param name='xsize'/>
   <param name='ysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='535'/>
<p>size of (new) image in pixels</p></text></group>
<group>
   <param name='color'/>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='540'/>
<p>background color (will also be current color),
default color is black</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='543'/>
<p>default alpha channel value</p></text></group>
<group><bugs/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='494'/>
<p>SIGSEGVS can be caused if the size is too big, due
to unchecked overflow -
(xsize*ysize)&amp;MAXINT is small enough to allocate.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.copy'>copy</ref>, <ref resolved='predef::Image.Image.clone'>clone</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='distancesq' homogen-type='method'>
<method name='distancesq'>
   <returntype><object resolved='predef::Image.Image.distancesq'/></returntype>
   <arguments>
   </arguments>
</method><method name='distancesq'>
   <returntype><object resolved='predef::Image.Image.distancesq'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2743'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2743'/>
<p>Makes an grey-scale image, for alpha-channel use.</p>

<p>The given value (or current color) are used for coordinates
in the color cube. Each resulting pixel is the
distance from this point to the source pixel color,
in the color cube, squared, rightshifted 8 steps:</p>

<p><pre>
p = pixel color
o = given color
d = destination pixel
d.red=d.blue=d.green=
    ((o.red-p.red)²+(o.green-p.green)²+(o.blue-p.blue)²)&gt;&gt;8
</pre></p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.distancesq.1.png' width='80' height='115'>image.c30.png</image></td>
 <td><image file='predef.Image.Image.distancesq.2.png' width='80' height='115'>image.c31.png</image></td>
 <td><image file='predef.Image.Image.distancesq.3.png' width='80' height='115'>image.c32.png</image></td>
 <td><image file='predef.Image.Image.distancesq.4.png' width='80' height='115'>image.c33.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>distance² to cyan</td>
 <td>...to purple</td>
 <td>...to yellow</td>
 </tr></table></p>

<p/>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2777'/>
<p>red, green, blue coordinates
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2743'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.select_from'>select_from</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='gamma' homogen-type='method'>
<method name='gamma'>
   <returntype><object resolved='predef::Image.Image.gamma'/></returntype>
   <arguments><argument name='g'><type><float/></type></argument>

   </arguments>
</method><method name='gamma'>
   <returntype><object resolved='predef::Image.Image.gamma'/></returntype>
   <arguments><argument name='gred'><type><float/></type></argument>
<argument name='floatggreen'><type>
   <object resolved='predef::Image.Image.gamma'/></type></argument>
<argument name='floatgblue'><type>
   <object resolved='predef::Image.Image.gamma'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3954'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3954'/>
<p>Calculate pixels in image by gamma curve.</p>

<p>Intensity of new pixels are calculated by:<br/>
<i>i</i>' = <i>i</i>^<i>g</i></p>

<p>For example, you are viewing your image on a screen
with gamma 2.2. To correct your image to the correct
gamma value, do something like:</p>

<p><tt>my_display_image(my_image()-&gt;gamma(1/2.2);</tt>
</p>
</text>
<group>
   <param name='g'/>
   <param name='gred'/>
   <param name='ggreen'/>
   <param name='gblue'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3972'/>
<p>gamma value
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3954'/>
<p>a new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.grey'>grey</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.color'>color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='getpixel' homogen-type='method'>
<method name='getpixel'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1464'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1464'/>
<p/>
</text>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1469'/>
<p>position of the pixel</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1464'/>
<p>color of the requested pixel -- ({int red,int green,int blue})</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='gradients' homogen-type='method'>
<method name='gradients'>
   <returntype><int/></returntype>
   <arguments><argument name='point'><type>
   <array><valuetype><int/></valuetype></array></type></argument>
<argument name='...'><type>
   <object resolved='predef::Image.Image.gradients'/></type></argument>

   </arguments>
</method><method name='gradients'>
   <returntype><int/></returntype>
   <arguments><argument name='point'><type>
   <array><valuetype><int/></valuetype></array></type></argument>
<argument name='...'><type>
   <object resolved='predef::Image.Image.gradients'/></type></argument>
<argument name='floatgrad'><type>
   <object resolved='predef::Image.Image.gradients'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1966'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1966'/>
<p><table><tr valign='center'>
<td><image file='predef.Image.Image.gradients.1.png' width='80' height='115'>image.c34.png</image></td>
<td><image file='predef.Image.Image.gradients.2.png' width='80' height='115'>image.c35.png</image></td>
<td><image file='predef.Image.Image.gradients.3.png' width='80' height='115'>image.c36.png</image></td>
<td><image file='predef.Image.Image.gradients.4.png' width='80' height='115'>image.c37.png</image></td>
<td><image file='predef.Image.Image.gradients.5.png' width='80' height='115'>image.c38.png</image></td>
<td><image file='predef.Image.Image.gradients.6.png' width='80' height='115'>image.c39.png</image></td>
</tr><tr>
<td>original</td>
<td>2 color<br/>gradient</td>
<td>10 color<br/>gradient</td>
<td>3 colors,<br/>grad=4.0</td>
<td>3 colors,<br/>grad=1.0</td>
<td>3 colors,<br/>grad=0.25</td>
</tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1966'/>
<p>the new image</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='grey' homogen-type='method'>
<method name='grey'>
   <returntype><object resolved='predef::Image.Image.grey'/></returntype>
   <arguments>
   </arguments>
</method><method name='grey'>
   <returntype><object resolved='predef::Image.Image.grey'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2220'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2220'/>
<p>Makes a grey-scale image (with weighted values).</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.grey.1.png' width='80' height='115'>image.c40.png</image></td>
 <td><image file='predef.Image.Image.grey.2.png' width='80' height='115'>image.c41.png</image></td>
 <td><image file='predef.Image.Image.grey.3.png' width='80' height='115'>image.c42.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>-&gt;grey();</td>
 <td>-&gt;grey(0,0,255);</td>
 </tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2238'/>
<p>weight of color, default is r=87,g=127,b=41,
which should be pretty accurate of what the eyes see...
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2220'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.color'>color</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.modify_by_intensity'>modify_by_intensity</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='grey_blur' homogen-type='method'>
<method name='grey_blur'>
   <returntype><object resolved='predef::Image.Image.grey_blur'/></returntype>
   <arguments><argument name='no_pass'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4408'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4408'/>
<p>Works like blur, but only operates on the r color channel.
A faster alternative to blur for grey scale images. @[no_pass]
is the number of times the blur matrix is applied.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.grey_blur.1.png' width='80' height='115'>image.c43.png</image></td>
<td><image file='predef.Image.Image.grey_blur.2.png' width='80' height='115'>image.c44.png</image></td>
<td><image file='predef.Image.Image.grey_blur.3.png' width='80' height='115'>image.c45.png</image></td>
</tr><tr>
<td>original</td>
<td>grey_blur(1)</td>
<td>grey_blur(5)</td>
</tr></table>
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.blur'>blur</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='rgb_to_hsv'>
   <returntype><object resolved='predef::Image.Image.rgb_to_hsv'/></returntype>
   <arguments>
   </arguments>
</method><method name='hsv_to_rgb'>
   <returntype><object resolved='predef::Image.Image.rgb_to_hsv'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2537'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2537'/>
<p>Converts RGB data to HSV data, or the other way around.
When converting to HSV, the resulting data is stored like this:
 pixel.r = h; pixel.g = s; pixel.b = v;</p>

<p>When converting to RGB, the input data is asumed to be placed in
the pixels as above.</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.rgb_to_hsv.1.png' width='80' height='115'>image.c46.png</image></td>
 <td><image file='predef.Image.Image.rgb_to_hsv.2.png' width='80' height='115'>image.c47.png</image></td>
 <td><image file='predef.Image.Image.rgb_to_hsv.3.png' width='80' height='115'>image.c48.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>-&gt;hsv_to_rgb();</td>
 <td>-&gt;rgb_to_hsv();</td>
 </tr><tr valign='center'>
 <td><image file='predef.Image.Image.rgb_to_hsv.4.png' width='67' height='67'>image.c49.png</image></td>
 <td><image file='predef.Image.Image.rgb_to_hsv.5.png' width='67' height='67'>image.c50.png</image></td>
 <td><image file='predef.Image.Image.rgb_to_hsv.6.png' width='67' height='67'>image.c51.png</image></td>
 </tr><tr valign='center'>
 <td>tuned box (below)</td>
 <td>the rainbow (below)</td>
 <td>same, but rgb_to_hsv()</td>
 </tr></table></p>

<p>
HSV to RGB calculation:
<pre>
in = input pixel
out = destination pixel
h=-pos*c_angle*3.1415/(float)NUM_SQUARES;
out.r=(in.b+in.g*cos(in.r));
out.g=(in.b+in.g*cos(in.r + pi*2/3));
out.b=(in.b+in.g*cos(in.r + pi*4/3));
</pre></p>

<p>RGB to HSV calculation: Hmm.
<pre>
</pre></p>

<p> Example: Nice rainbow.
 <pre>
 object i = Image.Image(200,200);
 i = i-&gt;tuned_box(0,0, 200,200,
                  ({ ({ 255,255,128 }), ({ 0,255,128 }),
                     ({ 255,255,255 }), ({ 0,255,255 })}))
      -&gt;hsv_to_rgb();
 </pre></p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2537'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='invert' homogen-type='method'>
<method name='invert'>
   <returntype><object resolved='predef::Image.Image.invert'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2383'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2383'/>
<p>Invert an image. Each pixel value gets to be 255-x, where x
is the old value.</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.invert.1.png' width='80' height='115'>image.c52.png</image></td>
 <td><image file='predef.Image.Image.invert.2.png' width='80' height='115'>image.c53.png</image></td>
 <td><image file='predef.Image.Image.invert.3.png' width='80' height='115'>image.c54.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>-&gt;invert();</td>
 <td>-&gt;rgb_to_hsv()-&gt;invert()-&gt;hsv_to_rgb();</td>
 </tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2383'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='line' homogen-type='method'>
<method name='line'>
   <returntype><object resolved='predef::Image.Image.line'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>

   </arguments>
</method><method name='line'>
   <returntype><object resolved='predef::Image.Image.line'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='line'>
   <returntype><object resolved='predef::Image.Image.line'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1501'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1501'/>
<p>Draws a line on the image. The line is <i>not</i> antialiased.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.line.1.png' width='80' height='115'>image.c55.png</image></td>
<td><image file='predef.Image.Image.line.2.png' width='80' height='115'>image.c56.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;line<br/>(50,10,<br/>10,50,<br/>255,0,0)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x1'/>
   <param name='y1'/>
   <param name='x2'/>
   <param name='y2'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1519'/>
<p>line endpoints</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1523'/>
<p>color</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1525'/>
<p>alpha value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1501'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='map_closest'>
   <returntype><object resolved='predef::Image.Image.map_closest'/></returntype>
   <arguments><argument name='colors'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='map_fast'>
   <returntype><object resolved='predef::Image.Image.map_closest'/></returntype>
   <arguments><argument name='colors'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='map_fs'>
   <returntype><object resolved='predef::Image.Image.map_closest'/></returntype>
   <arguments><argument name='colors'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='select_colors'>
   <returntype><array/></returntype>
   <arguments><argument name='num'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4085'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4085'/>
<p>Compatibility functions. Do not use!</p>

<p>Replacement examples:</p>

<p>Old code:
<pre>img=map_fs(img-&gt;select_colors(200));</pre>
New code:
<pre>img=Image.Colortable(img,200)-&gt;floyd_steinberg()-&gt;map(img);</pre></p>

<p>Old code:
<pre>img=map_closest(img-&gt;select_colors(17)+({({255,255,255}),({0,0,0})}));</pre>
New code:
<pre>img=Image.Colortable(img,19,({({255,255,255}),({0,0,0})}))-&gt;map(img);</pre></p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='modify_by_intensity' homogen-type='method'>
<method name='modify_by_intensity'>
   <returntype><object resolved='predef::Image.Image.modify_by_intensity'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='vn'><type><varargs>
   <or><int/><array><valuetype><int/></valuetype></array></or></varargs></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3609'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3609'/>
<p>Recolor an image from intensity values.</p>

<p>For each color an intensity is calculated, from r, g and b factors
(see <ref resolved='predef::Image.Image.grey'>grey</ref>), this gives a value between 0 and max.</p>

<p>The color is then calculated from the values given, v1 representing
the intensity value of 0, vn representing max, and colors between
representing intensity values between, linear.</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.modify_by_intensity.1.png' width='80' height='115'>image.c57.png</image></td>
 <td><image file='predef.Image.Image.modify_by_intensity.2.png' width='80' height='115'>image.c58.png</image></td>
 </tr><tr valign='center'>
 <td>original</td>
 <td>-&gt;grey()-&gt;modify_by_intensity(1,0,0, 0,({255,0,0}),({0,255,0}));</td>
 </tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3631'/>
<p>red, green, blue intensity factors</p></text></group>
<group>
   <param name='v1'/>
   <param name='vn'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3634'/>
<p>destination color
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3609'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.grey'>grey</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.color'>color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments>
   </arguments>
</method><method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='olr'><type><int/></type></argument>
<argument name='olg'><type><int/></type></argument>
<argument name='olb'><type><int/></type></argument>

   </arguments>
</method><method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='olr'><type><int/></type></argument>
<argument name='olg'><type><int/></type></argument>
<argument name='olb'><type><int/></type></argument>
<argument name='bkgr'><type><int/></type></argument>
<argument name='bkgg'><type><int/></type></argument>
<argument name='bkgb'><type><int/></type></argument>

   </arguments>
</method><method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='mask'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='mask'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>
<argument name='olr'><type><int/></type></argument>
<argument name='olg'><type><int/></type></argument>
<argument name='olb'><type><int/></type></argument>

   </arguments>
</method><method name='outline'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='mask'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>
<argument name='olr'><type><int/></type></argument>
<argument name='olg'><type><int/></type></argument>
<argument name='olb'><type><int/></type></argument>
<argument name='bkgr'><type><int/></type></argument>
<argument name='bkgg'><type><int/></type></argument>
<argument name='bkgb'><type><int/></type></argument>

   </arguments>
</method><method name='outline_mask'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments>
   </arguments>
</method><method name='outline_mask'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='bkgr'><type><int/></type></argument>
<argument name='bkgg'><type><int/></type></argument>
<argument name='bkgb'><type><int/></type></argument>

   </arguments>
</method><method name='outline_mask'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='mask'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='outline_mask'>
   <returntype><object resolved='predef::Image.Image.outline'/></returntype>
   <arguments><argument name='mask'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>
<argument name='bkgr'><type><int/></type></argument>
<argument name='bkgg'><type><int/></type></argument>
<argument name='bkgb'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3375'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3375'/>
<p>Makes an outline of this image, ie paints with the
given color around the non-background pixels.</p>

<p>Default is to paint above, below, to the left and the right of
these pixels.</p>

<p>You can also run your own outline mask.</p>

<p>The outline_mask function gives the calculated outline as an
alpha channel image of white and black instead.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.outline.1.png' width='80' height='115'>image.c59.png</image></td>
<td><image file='predef.Image.Image.outline.2.png' width='80' height='115'>image.c60.png</image></td>
<td><image file='predef.Image.Image.outline.3.png' width='80' height='115'>image.c61.png</image></td>
</tr><tr>
<td>original</td>
<td>masked<br/>through<br/>threshold</td>
<td>...and<br/>outlined<br/>with red</td>
</tr></table></p>

<p/>
</text>
<group>
   <param name='mask'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3409'/>
<p>mask matrix. Default is <tt>({({0,1,0}),({1,1,1}),({0,1,0})})</tt>.</p></text></group>
<group>
   <param name='olr'/>
   <param name='olg'/>
   <param name='olb'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3413'/>
<p>outline color. Default is current.</p></text></group>
<group>
   <param name='bkgr'/>
   <param name='bkgg'/>
   <param name='bkgb'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3417'/>
<p>background color (what color to outline to);
default is color of pixel 0,0.</p></text></group>
<group>
   <param name='div'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3420'/>
<p>division factor, default is 1.0.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3375'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='3375'/>
<p>no antialias!</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='write_lsb_rgb'>
   <returntype><object resolved='predef::Image.Image.write_lsb_rgb'/></returntype>
   <arguments><argument name='what'><type><string/></type></argument>

   </arguments>
</method><method name='write_lsb_grey'>
   <returntype><object resolved='predef::Image.Image.write_lsb_rgb'/></returntype>
   <arguments><argument name='what'><type><string/></type></argument>

   </arguments>
</method><method name='read_lsb_rgb'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='read_lsb_grey'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4160'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4160'/>
<p>These functions read/write in the least significant bit
of the image pixel values. The _rgb() functions
read/write on each of the red, green and blue values,
and the grey keeps the same lsb on all three.</p>

<p>The string is nullpadded or cut to fit.
</p>
</text>
<group>
   <param name='what'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4173'/>
<p>the hidden message</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='4160'/>
<p>the current object or the read string</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='select_from' homogen-type='method'>
<method name='select_from'>
   <returntype><object resolved='predef::Image.Image.select_from'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='select_from'>
   <returntype><object resolved='predef::Image.Image.select_from'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='edge_value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2930'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2930'/>
<p>Makes an grey-scale image, for alpha-channel use.</p>

<p>This is very close to a floodfill.</p>

<p>The image is scanned from the given pixel,
filled with 255 if the color is the same,
or 255 minus distance in the colorcube, squared, rightshifted
8 steps (see <ref resolved='predef::Image.Image.distancesq'>distancesq</ref>).</p>

<p>When the edge distance is reached, the scan is stopped.
Default edge value is 30.
This value is squared and compared with the square of the
distance above.</p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.select_from.1.png' width='80' height='115'>image.c62.png</image></td>
 <td><image file='predef.Image.Image.select_from.2.png' width='80' height='115'>image.c63.png</image></td>
 <td><image file='predef.Image.Image.select_from.3.png' width='80' height='115'>image.c64.png</image></td>
 <td><image file='predef.Image.Image.select_from.4.png' width='80' height='115'>image.c65.png</image></td>
 <td><image file='predef.Image.Image.select_from.5.png' width='80' height='115'>image.c66.png</image></td>
 <td><image file='predef.Image.Image.select_from.6.png' width='80' height='115'>image.c67.png</image></td>
 <td><image file='predef.Image.Image.select_from.7.png' width='80' height='115'>image.c68.png</image></td>
 </tr><tr>
 <td>35, 35, 16</td>
 <td>35, 35, 32</td>
 <td>35, 35, 64</td>
 <td>35, 35, 96</td>
 <td>35, 35, 128</td>
 <td>35, 35, 192</td>
 <td>35, 35, 256</td>
 </tr></table></p>

<p> <table><tr valign='center'>
 <td><image file='predef.Image.Image.select_from.8.png' width='80' height='115'>image.c69.png</image></td>
 <td><image file='predef.Image.Image.select_from.9.png' width='80' height='115'>image.c70.png</image></td>
 </tr><tr>
 <td>original</td>
 <td>original * select_from(35,35,200)</td>
 </tr></table>
</p>
</text>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2975'/>
<p>originating pixel in the image
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2930'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.distancesq'>distancesq</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='setcolor' homogen-type='method'>
<method name='setcolor'>
   <returntype><object resolved='predef::Image.Image.setcolor'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='setcolor'>
   <returntype><object resolved='predef::Image.Image.setcolor'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1396'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1396'/>
<p>set the current color
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1404'/>
<p>new color</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1406'/>
<p>new alpha value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1396'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='setpixel' homogen-type='method'>
<method name='setpixel'>
   <returntype><object resolved='predef::Image.Image.setpixel'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='setpixel'>
   <returntype><object resolved='predef::Image.Image.setpixel'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='c'><type>
   <object resolved='predef::Image.Color'>Image.Color</object></type></argument>

   </arguments>
</method><method name='setpixel'>
   <returntype><object resolved='predef::Image.Image.setpixel'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='setpixel'>
   <returntype><object resolved='predef::Image.Image.setpixel'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='alpha'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1420'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1420'/>
<p>
<table><tr valign='center'>
<td><image file='predef.Image.Image.setpixel.1.png' width='80' height='115'>image.c71.png</image></td>
<td><image file='predef.Image.Image.setpixel.2.png' width='80' height='115'>image.c72.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;setpixel<br/>(10,10,<br/>255,0,0)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x'/>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1436'/>
<p>position of the pixel</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1440'/>
<p>color</p></text></group>
<group>
   <param name='alpha'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1442'/>
<p>alpha value</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1420'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='test' homogen-type='method'>
<method name='test'>
   <returntype><object resolved='predef::Image.Image.test'/></returntype>
   <arguments>
   </arguments>
</method><method name='test'>
   <returntype><object resolved='predef::Image.Image.test'/></returntype>
   <arguments><argument name='seed'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2157'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2157'/>
<p>Generates a test image, currently random gradients.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.test.1.png' width='80' height='115'>image.c73.png</image></td>
<td><image file='predef.Image.Image.test.2.png' width='80' height='115'>image.c74.png</image></td>
<td><image file='predef.Image.Image.test.3.png' width='80' height='115'>image.c75.png</image></td>
</tr><tr>
<td>original</td>
<td>-&gt;test()</td>
<td>...and again</td>
</tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2157'/>
<p>the new image</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2157'/>
<p>May be subject to change or cease without prior warning.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.gradients'>gradients</ref>, <ref resolved='predef::Image.Image.tuned_box'>tuned_box</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='threshold' homogen-type='method'>
<method name='threshold'>
   <returntype><object resolved='predef::Image.Image.threshold'/></returntype>
   <arguments>
   </arguments>
</method><method name='threshold'>
   <returntype><object resolved='predef::Image.Image.threshold'/></returntype>
   <arguments><argument name='level'><type><int/></type></argument>

   </arguments>
</method><method name='threshold'>
   <returntype><object resolved='predef::Image.Image.threshold'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='threshold'>
   <returntype><object resolved='predef::Image.Image.threshold'/></returntype>
   <arguments><argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2438'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2438'/>
<p>Makes a black-white image.</p>

<p>If any of red, green, blue parts of a pixel
is larger then the given value, the pixel will become
white, else black.</p>

<p>This method works fine with the grey method.</p>

<p>If no arguments are given, it will paint all non-black
pixels white. (Ie, default is 0,0,0.)</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.threshold.1.png' width='80' height='115'>image.c76.png</image></td>
<td><image file='predef.Image.Image.threshold.2.png' width='80' height='115'>image.c77.png</image></td>
<td><image file='predef.Image.Image.threshold.3.png' width='80' height='115'>image.c78.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;threshold(100);</td>
<td>-&gt;threshold(0,100,0);</td>
</tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2438'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2438'/>
<p>The above statement "any ..." was changed from "all ..."
in Pike 0.7 (9906). It also uses 0,0,0 as default input,
instead of current color. This is more useful.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.grey'>grey</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='tuned_box' homogen-type='method'>
<method name='tuned_box'>
   <returntype><object resolved='predef::Image.Image.tuned_box'/></returntype>
   <arguments><argument name='x1'><type><int/></type></argument>
<argument name='y1'><type><int/></type></argument>
<argument name='x2'><type><int/></type></argument>
<argument name='y2'><type><int/></type></argument>
<argument name='corner_color'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1717'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1717'/>
<p>Draws a filled rectangle with colors (and alpha values) tuned
between the corners.</p>

<p>Tuning function is (1.0-x/xw)*(1.0-y/yw) where x and y is
the distance to the corner and xw and yw are the sides of the
rectangle.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.tuned_box.1.png' width='80' height='115'>image.c79.png</image></td>
<td><image file='predef.Image.Image.tuned_box.2.png' width='80' height='115'>image.c80.png</image></td>
<td><image file='predef.Image.Image.tuned_box.3.png' width='80' height='115'>image.c81.png</image></td>
<td><image file='predef.Image.Image.tuned_box.4.png' width='80' height='115'>image.c82.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>tuned box</td>
<td>solid tuning<br/>(blue,red,green,yellow)</td>
<td>tuning transparency<br/>(as left + 255,128,128,0)</td>
</tr></table>
</p>
</text>
<group>
   <param name='x1'/>
   <param name='y1'/>
   <param name='x2'/>
   <param name='y2'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1742'/>
<p>rectangle corners</p></text></group>
<group>
   <param name='corner_color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1744'/>
<p>colors of the corners:
<pre>
({x1y1,x2y1,x1y2,x2y2})
</pre>
each of these is an array of integeres:
<pre>
({r,g,b}) or ({r,g,b,alpha})
</pre>
Default alpha channel value is 0 (opaque).</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='1717'/>
<p>the object called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='xsize' homogen-type='method'>
<method name='xsize'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2198'/>
<doc>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2198'/>
<p>the width of the image</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='ysize' homogen-type='method'>
<method name='ysize'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2209'/>
<doc>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='2209'/>
<p>the height of the image</p>
</text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='10'/>
<docgroup homogen-name='mirrorx' homogen-type='method'>
<method name='mirrorx'>
   <returntype><object resolved='predef::Image.Image.mirrorx'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='593'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='593'/>
<p>mirrors an image:
<table><tr valign='center'>
<td><image file='predef.Image.Image.mirrorx.1.png' width='80' height='115'>matrix.c0.png</image></td>
<td><image file='predef.Image.Image.mirrorx.2.png' width='80' height='115'>matrix.c1.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;mirrorx();</td>
</tr></table></p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='593'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='mirrory' homogen-type='method'>
<method name='mirrory'>
   <returntype><object resolved='predef::Image.Image.mirrory'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='644'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='644'/>
<p>mirrors an image:
<table><tr valign='center'>
<td><image file='predef.Image.Image.mirrory.1.png' width='80' height='115'>matrix.c2.png</image></td>
<td><image file='predef.Image.Image.mirrory.2.png' width='80' height='115'>matrix.c3.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;mirrory();</td>
</tr></table>
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='rotate'>
   <returntype><object resolved='predef::Image.Image.rotate'/></returntype>
   <arguments><argument name='angle'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='rotate'>
   <returntype><object resolved='predef::Image.Image.rotate'/></returntype>
   <arguments><argument name='angle'><type>
   <or><int/><float/></or></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='rotate_expand'>
   <returntype><object resolved='predef::Image.Image.rotate'/></returntype>
   <arguments><argument name='angle'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><method name='rotate_expand'>
   <returntype><object resolved='predef::Image.Image.rotate'/></returntype>
   <arguments><argument name='angle'><type>
   <or><int/><float/></or></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='1120'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='1120'/>
<p>Rotates an image a certain amount of degrees (360° is
a complete rotation) counter-clockwise:</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.rotate.1.png' width='80' height='115'>matrix.c4.png</image></td>
<td><image file='predef.Image.Image.rotate.2.png' width='113' height='141'>matrix.c5.png</image></td>
<td><image file='predef.Image.Image.rotate.3.png' width='113' height='141'>matrix.c6.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;rotate(15,255,0,0);</td>
<td>-&gt;rotate_expand(15);</td>
</tr></table></p>

<p>The "expand" variant of functions stretches the
image border pixels rather then filling with
the given or current color.</p>

<p>This rotate uses the <ref resolved='predef::Image.Image.skewx'>skewx</ref>() and <ref resolved='predef::Image.Image.skewy'>skewy</ref>() functions.</p>
</text>
<group>
   <param name='angle'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='1143'/>
<p>the number of degrees to rotate</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='1147'/>
<p>color to fill with; default is current</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='1120'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='rotate_ccw' homogen-type='method'>
<method name='rotate_ccw'>
   <returntype><object resolved='predef::Image.Image.rotate_ccw'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='432'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='432'/>
<p>rotates an image counter-clockwise, 90 degrees.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.rotate_ccw.1.png' width='80' height='115'>matrix.c7.png</image></td>
<td><image file='predef.Image.Image.rotate_ccw.2.png' width='115' height='80'>matrix.c8.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;rotate_ccw();</td>
</tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='432'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='rotate_cw' homogen-type='method'>
<method name='rotate_cw'>
   <returntype><object resolved='predef::Image.Image.rotate_cw'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='540'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='540'/>
<p>rotates an image clockwise, 90 degrees.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.rotate_cw.1.png' width='80' height='115'>matrix.c9.png</image></td>
<td><image file='predef.Image.Image.rotate_cw.2.png' width='115' height='80'>matrix.c10.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;rotate_cw();</td>
</tr></table></p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='540'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='scale' homogen-type='method'>
<method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument name='factor'><type><float/></type></argument>

   </arguments>
</method><method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument><value>0.5</value></argument>
   </arguments>
</method><method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument name='xfactor'><type><float/></type></argument>
<argument name='yfactor'><type><float/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='331'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='331'/>
<p>scales the image with a factor,
0.5 is an optimized case.</p>
</text>
<group>
   <param name='factor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='337'/>
<p>factor to use for both x and y</p></text></group>
<group>
   <param name='xfactor'/>
   <param name='yfactor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='340'/>
<p>separate factors for x and y
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='331'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='scale' homogen-type='method'>
<method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument name='newxsize'><type><int/></type></argument>
<argument name='newysize'><type><int/></type></argument>

   </arguments>
</method><method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument><value>0</value></argument><argument name='newysize'><type><int/></type></argument>

   </arguments>
</method><method name='scale'>
   <returntype><object resolved='predef::Image.Image.scale'/></returntype>
   <arguments><argument name='newxsize'><type><int/></type></argument>
<argument><value>0</value></argument>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='343'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='343'/>
<p>scales the image to a specified new size,
if one of newxsize or newysize is 0,
the image aspect ratio is preserved.</p>
</text>
<group>
   <param name='newxsize'/>
   <param name='newysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='351'/>
<p>new image size in pixels
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='343'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='343'/>
<p>resulting image will be 1x1 pixels, at least</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='skewx'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>

   </arguments>
</method><method name='skewx'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='yfactor'><type><int/></type></argument>

   </arguments>
</method><method name='skewx'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewx'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='yfactor'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewx_expand'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>

   </arguments>
</method><method name='skewx_expand'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='yfactor'><type><int/></type></argument>

   </arguments>
</method><method name='skewx_expand'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewx_expand'>
   <returntype><object resolved='predef::Image.Image.skewx'/></returntype>
   <arguments><argument name='yfactor'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='873'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='873'/>
<p>Skews an image an amount of pixels or a factor;
a skew-x is a transformation:</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.skewx.1.png' width='80' height='115'>matrix.c11.png</image></td>
<td><image file='predef.Image.Image.skewx.2.png' width='95' height='115'>matrix.c12.png</image></td>
<td><image file='predef.Image.Image.skewx.3.png' width='95' height='115'>matrix.c13.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;skewx(15,255,0,0);</td>
<td>-&gt;skewx_expand(15);</td>
</tr></table>
</p>
</text>
<group>
   <param name='x'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='895'/>
<p>the number of pixels
 The "expand" variant of functions stretches the
 image border pixels rather then filling with
 the given or current color.</p></text></group>
<group>
   <param name='yfactor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='900'/>
<p>best described as: x=yfactor*this-&gt;ysize()</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='904'/>
<p>color to fill with; default is current</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='873'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='skewy'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='skewy'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='xfactor'><type><int/></type></argument>

   </arguments>
</method><method name='skewy'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='y'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewy'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='xfactor'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewy_expand'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='skewy_expand'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='xfactor'><type><int/></type></argument>

   </arguments>
</method><method name='skewy_expand'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='y'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='skewy_expand'>
   <returntype><object resolved='predef::Image.Image.skewy'/></returntype>
   <arguments><argument name='xfactor'><type><int/></type></argument>
<argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='937'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='937'/>
<p>Skews an image an amount of pixels or a factor;
a skew-y is a transformation:</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Image.skewy.1.png' width='80' height='115'>matrix.c14.png</image></td>
<td><image file='predef.Image.Image.skewy.2.png' width='80' height='130'>matrix.c15.png</image></td>
<td><image file='predef.Image.Image.skewy.3.png' width='80' height='130'>matrix.c16.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>-&gt;skewy(15,255,0,0);</td>
<td>-&gt;skewy_expand(15);</td>
</tr></table></p>

<p>The "expand" variant of functions stretches the
image border pixels rather then filling with
the given or current color.</p>
</text>
<group>
   <param name='y'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='962'/>
<p>the number of pixels</p></text></group>
<group>
   <param name='xfactor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='964'/>
<p>best described as: t=xfactor*this-&gt;xsize()</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='968'/>
<p>color to fill with; default is current</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='937'/>
<p>the new image object</p>
</text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='10'/>
<docgroup homogen-type='method' homogen-name='dct'>
<method name='dct'>
   <returntype><object resolved='predef::Image.Image.dct'/></returntype>
   <arguments><argument name='newx'><type><int/></type></argument>
<argument name='newy'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='43'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='43'/>
<p>Scales the image to a new size.</p>

<p>Method for scaling is rather complex;
the image is transformed via a cosine transform,
and then resampled back.</p>

<p>This gives a quality-conserving upscale,
but the algorithm used is n*n+n*m, where n
and m is pixels in the original and new image.</p>

<p>Recommended wrapping algorithm is to scale
overlapping parts of the image-to-be-scaled.</p>

<p>This functionality is actually added as an
true experiment, but works...
</p>
</text>
<group>
   <param name='newx'/>
   <param name='newy'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='69'/>
<p>new image size in pixels
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='43'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='43'/>
<p>Do NOT use this function if you don't know what
you're dealing with! Read some signal theory first...</p>

<p>It write's dots on stderr, to indicate some sort
of progress. It doesn't use any fct (compare: fft)
algorithms.</p>
</text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='41'/>
<docgroup homogen-name='polyfill' homogen-type='method'>
<method name='polyfill'>
   <returntype><object resolved='predef::Image.Image.polyfill'/></returntype>
   <arguments><argument name='curve'><type><varargs>
   <array><valuetype>
     <or><int/><float/></or></valuetype></array></varargs></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='45'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='45'/>
<p>fills an area with the current color
</p>
</text>
<group>
   <param name='curve'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='49'/>
<p>    curve(s), <tt>({x1,y1,x2,y2,...,xn,yn})</tt>,
    automatically closed.</p>

<p>    If any given curve is inside another, it
    will make a hole.</p>

<p><pre>
Image.Image(100,100)-&gt;setcolor(255,0,0,128)-&gt;
  polyfill( ({ 20,20, 80,20, 80,80 }) );
</pre>
<image file='predef.Image.Image.polyfill.1.png' width='100' height='100'>polyfill.c0.png</image></p>

<p/></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='45'/>
<p>the current object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='45'/>
<p>Lines in the polygon may <i>not</i> be crossed without
the crossing coordinate specified in both lines.
</p>
</text></group>
<group><bugs/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='45'/>
<p>Inverted lines reported on Intel and Alpha processors.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.setcolor'>setcolor</ref></p></text></group>

</doc>
</docgroup>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='10'/>
<docgroup homogen-type='method'>
<method name='average'>
   <returntype>
        <array><valuetype><float/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='min'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='max'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='sum'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='sumf'>
   <returntype>
        <array><valuetype><float/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='782'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='782'/>
<p>Gives back the average, minimum, maximum color value,
and the sum of all pixel's color value.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='782'/>
<p>sum() values can wrap! Most systems only have 31 bits
available for positive integers. (Meaning, be careful
with images that have more than 8425104 pixels.)</p>

<p>average() and sumf() may also wrap, but on a line basis.
(Meaning, be careful with images that are wider
 than 8425104 pixels.) These functions may have a precision
problem instead, during to limits in the 'double' C type and/or
'float' Pike type.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='find_min'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='find_max'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='find_min'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='find_max'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='970'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='970'/>
<p>Gives back the position of the minimum or maximum
pixel value, weighted to grey.
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='979'/>
<p>weight of color, default is r=87,g=127,b=41, same
as the <ref resolved='predef::Image.Image.grey'>grey</ref>() method.</p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`/'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`/'/></type></argument>

   </arguments>
</method><method name='`/'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='`/'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><method name='`%'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`/'/></type></argument>

   </arguments>
</method><method name='`%'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='`%'>
   <returntype><object resolved='predef::Image.Image.`/'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='321'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='321'/>
<p>Divides pixel values and creates a new image from the result or
the rest.</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='331'/>
<p>the other image to divide with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='335'/>
<p>if specified as color or value, it will act as a whole
image of that color (or value).</p>

<p/></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='321'/>
<p>the new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='321'/>
<p>It isn't possible to do a modulo 256 either. (why?)</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='`&amp;'>
<method name='`&amp;'>
   <returntype><object resolved='predef::Image.Image.`&amp;'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`&amp;'/></type></argument>

   </arguments>
</method><method name='`&amp;'>
   <returntype><object resolved='predef::Image.Image.`&amp;'/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`&amp;'>
   <returntype><object resolved='predef::Image.Image.`&amp;'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='458'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='458'/>
<p>makes a new image out of the minimum pixels values
</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='465'/>
<p>the other image to compare with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='468'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='471'/>
<p>equal to ({value,value,value}).</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='458'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`=='/></type></argument>

   </arguments>
</method><method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><method name='`&lt;'>
   <returntype><int/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`=='/></type></argument>

   </arguments>
</method><method name='`&lt;'>
   <returntype><int/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`&lt;'>
   <returntype><int/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><method name='`&gt;'>
   <returntype><int/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`=='/></type></argument>

   </arguments>
</method><method name='`&gt;'>
   <returntype><int/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`&gt;'>
   <returntype><int/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='501'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='501'/>
<p>Compares an image with another image or a color.</p>

<p>Comparision is strict and on pixel-by-pixel basis.
(Means if not all pixel r,g,b values are
correct compared with the corresponding
pixel values, 0 is returned.)
</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='519'/>
<p>the other image to compare with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='522'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='525'/>
<p>equal to ({value,value,value}).</p>

<p/></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='501'/>
<p>true (1) or false (0).</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='501'/>
<p>`&lt; or `&gt; on empty ("no image") image objects or images
with different size will result in an error.
`== is always true on two empty image objects and
always false if one and only one of the image objects
is empty or the images differs in size.</p>

<p>a&gt;=b and a&lt;=b between objects is equal to !(a&lt;b) and !(a&gt;b),
which may not be what you want (since both &lt; and &gt; can return
false, comparing the same images).</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='`*'>
<method name='`*'>
   <returntype><object resolved='predef::Image.Image.`*'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`*'/></type></argument>

   </arguments>
</method><method name='`*'>
   <returntype><object resolved='predef::Image.Image.`*'/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`*'>
   <returntype><object resolved='predef::Image.Image.`*'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><method name='`*'>
   <returntype><object resolved='predef::Image.Image.`*'/></returntype>
   <arguments><argument name='value'><type><float/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='226'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='226'/>
<p>Multiplies pixel values and creates a new image.
This can be useful to lower the values of an image,
making it greyer, for instance:</p>

<p><pre>image=image*128+64;</pre>
</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='238'/>
<p>the other image to multiply with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='241'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='244'/>
<p>equal to ({value,value,value}).
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='226'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='`+'>
<method name='`+'>
   <returntype><object resolved='predef::Image.Image.`+'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`+'/></type></argument>

   </arguments>
</method><method name='`+'>
   <returntype><object resolved='predef::Image.Image.`+'/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`+'>
   <returntype><object resolved='predef::Image.Image.`+'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='147'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='147'/>
<p>adds two images; values are truncated at 255.</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='153'/>
<p>the image which to add.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='155'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='158'/>
<p>equal to ({value,value,value}).</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='147'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='`-'>
<method name='`-'>
   <returntype><object resolved='predef::Image.Image.`-'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`-'/></type></argument>

   </arguments>
</method><method name='`-'>
   <returntype><object resolved='predef::Image.Image.`-'/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`-'>
   <returntype><object resolved='predef::Image.Image.`-'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='106'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='106'/>
<p>makes a new image out of the difference</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='112'/>
<p>the other image to compare with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='115'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='118'/>
<p>equal to ({value,value,value}).</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='106'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`|'>`|</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref>, <ref resolved='predef::Image.Image.average'>min</ref>, <ref resolved='predef::Image.Image.average'>max</ref>, <ref resolved='predef::Image.Image.`=='>`==</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='`|'>
<method name='`|'>
   <returntype><object resolved='predef::Image.Image.`|'/></returntype>
   <arguments><argument name='operand'><type><object resolved='predef::Image.Image.`|'/></type></argument>

   </arguments>
</method><method name='`|'>
   <returntype><object resolved='predef::Image.Image.`|'/></returntype>
   <arguments><argument name='color'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`|'>
   <returntype><object resolved='predef::Image.Image.`|'/></returntype>
   <arguments><argument name='value'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='416'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='416'/>
<p>makes a new image out of the maximum pixels values
</p>
</text>
<group>
   <param name='operand'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='423'/>
<p>the other image to compare with;
the images must have the same size.</p></text></group>
<group>
   <param name='color'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='426'/>
<p>an array in format ({r,g,b}), this is equal
to using an uniform-colored image.</p></text></group>
<group>
   <param name='value'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='429'/>
<p>equal to ({value,value,value}).</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='416'/>
<p>the new image object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image.`-'>`-</ref>, <ref resolved='predef::Image.Image.`+'>`+</ref>, <ref resolved='predef::Image.Image.`&amp;'>`&amp;amp;</ref>, <ref resolved='predef::Image.Image.`*'>`*</ref>, <ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

</class>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/blit.c' first-line='11'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/orient.c' first-line='9'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='9'/>
<module name='Color'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='10'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='10'/>
<p>
    This module keeps names and easy handling
    for easy color support. It gives you an easy
    way to get colors from names.</p>

<p>    A color is here an object, containing color
    information and methods for conversion, see below.</p>

<p>    <ref resolved='predef::Image.Color'>Image.Color</ref> can be called to make a color object.
    <ref resolved='predef::Image.Color'>Image.Color()</ref> takes the following arguments:
    <pre>
    Image.Color(string name)          // "red"
    Image.Color(string prefix_string) // "lightblue"
    Image.Color(string hex_name)      // "#ff00ff"
    Image.Color(string cmyk_string)   // "%17,42,0,19.4"
    Image.Color(string hsv_string)    // "%@327,90,32"
    Image.Color(int red, int green, int blue)
    </pre></p>

<p>    The color names available can be listed by using indices
    on Image.Color. The colors are available by name directly
    as <tt>Image.Color.name</tt>, too:
    <pre>
    ...Image.Color.red...
    ...Image.Color.green...
    or, maybe
    import Image.Color;
    ...red...
    ...green...
    ...lightgreen...
    </pre></p>

<p>    Giving red, green and blue values is equal to calling
    <ref resolved='predef::Image.Color.rgb'>Image.Color.rgb</ref>().</p>

<p>    The prefix_string method is a form for getting modified
    colors, it understands all modifiers
    (<ref resolved='predef::Image.Color.Color.light' to='Color.light'>light</ref>,
    <ref resolved='predef::Image.Color.Color.light' to='Color.dark'>dark</ref>,
    <ref resolved='predef::Image.Color.Color.light' to='Color.bright'>bright</ref>,
    <ref resolved='predef::Image.Color.Color.light' to='Color.dull'>dull</ref> and
    <ref resolved='predef::Image.Color.Color.light' to='Color.neon'>neon</ref>). Simply  use
    "method"+"color"; (as in <tt>lightgreen</tt>,
    <tt>dullmagenta</tt>, <tt>lightdullorange</tt>).</p>

<p>    The <tt>hex_name</tt> form is a simple
    <tt>#rrggbb</tt> form, as in HTML or X-program argument.
    A shorter form (<tt>#rgb</tt>) is also accepted. This
    is the inverse to the <ref resolved='predef::Image.Color.Color.hex'>Image.Color.Color-&gt;hex</ref>()
    method.</p>

<p>    The <tt>cmyk_string</tt> is a string form of giving
    <i>cmyk</i> (cyan, magenta, yellow, black) color. These
    values are floats representing percent.</p>

<p>    The <tt>hsv_string</tt> is another hue, saturation, value
    representation, but in floats; hue is in degree range (0..360),
    and saturation and value is given in percent. <i>This is not
    the same as returned or given to the <ref resolved='predef::Image.Color.rgb'>hsv</ref>() methods!</i></p>

<p>This table lists all the different named colors available in Image.Color.
The first column shows the actual color while the five following columns
demonstrates the modifiers neon, light, dark, bright and dull. The color
begind the name of the color is produced by calling neon()-&gt;dark()-&gt;dark()-&gt;dark()
from the color object itself, i.e. Image.Color.mintcream-&gt;neon()-&gt;dark()-&gt;dark()-&gt;dark().</p>

<p><image file='predef.Image.Color.1.png' width='348' height='120'>colors.c.0.png</image><br/>
<image file='predef.Image.Color.2.png' width='348' height='120'>colors.c.1.png</image><br/>
<image file='predef.Image.Color.3.png' width='348' height='120'>colors.c.2.png</image><br/>
<image file='predef.Image.Color.4.png' width='348' height='120'>colors.c.3.png</image><br/>
<image file='predef.Image.Color.5.png' width='348' height='120'>colors.c.4.png</image><br/>
<image file='predef.Image.Color.6.png' width='348' height='120'>colors.c.5.png</image><br/>
<image file='predef.Image.Color.7.png' width='348' height='120'>colors.c.6.png</image><br/>
<image file='predef.Image.Color.8.png' width='348' height='120'>colors.c.7.png</image><br/>
<image file='predef.Image.Color.9.png' width='348' height='120'>colors.c.8.png</image><br/>
<image file='predef.Image.Color.10.png' width='348' height='120'>colors.c.9.png</image><br/>
<image file='predef.Image.Color.11.png' width='348' height='120'>colors.c.10.png</image><br/>
<image file='predef.Image.Color.12.png' width='348' height='120'>colors.c.11.png</image><br/>
<image file='predef.Image.Color.13.png' width='348' height='120'>colors.c.12.png</image><br/>
<image file='predef.Image.Color.14.png' width='348' height='120'>colors.c.13.png</image><br/>
<image file='predef.Image.Color.15.png' width='348' height='120'>colors.c.14.png</image><br/>
<image file='predef.Image.Color.16.png' width='348' height='120'>colors.c.15.png</image><br/>
<image file='predef.Image.Color.17.png' width='348' height='120'>colors.c.16.png</image><br/>
<image file='predef.Image.Color.18.png' width='348' height='120'>colors.c.17.png</image><br/>
<image file='predef.Image.Color.19.png' width='348' height='120'>colors.c.18.png</image><br/>
<image file='predef.Image.Color.20.png' width='348' height='120'>colors.c.19.png</image><br/>
<image file='predef.Image.Color.21.png' width='348' height='120'>colors.c.20.png</image><br/>
<image file='predef.Image.Color.22.png' width='348' height='120'>colors.c.21.png</image><br/>
<image file='predef.Image.Color.23.png' width='348' height='120'>colors.c.22.png</image><br/>
<image file='predef.Image.Color.24.png' width='348' height='120'>colors.c.23.png</image><br/>
<image file='predef.Image.Color.25.png' width='348' height='120'>colors.c.24.png</image><br/>
<image file='predef.Image.Color.26.png' width='348' height='120'>colors.c.25.png</image><br/>
<image file='predef.Image.Color.27.png' width='348' height='120'>colors.c.26.png</image><br/>
<image file='predef.Image.Color.28.png' width='348' height='120'>colors.c.27.png</image><br/>
<image file='predef.Image.Color.29.png' width='348' height='120'>colors.c.28.png</image><br/>
<image file='predef.Image.Color.30.png' width='348' height='120'>colors.c.29.png</image><br/>
<image file='predef.Image.Color.31.png' width='348' height='120'>colors.c.30.png</image><br/>
<image file='predef.Image.Color.32.png' width='348' height='120'>colors.c.31.png</image><br/>
<image file='predef.Image.Color.33.png' width='348' height='120'>colors.c.32.png</image><br/>
<image file='predef.Image.Color.34.png' width='348' height='120'>colors.c.33.png</image><br/>
<image file='predef.Image.Color.35.png' width='348' height='120'>colors.c.34.png</image><br/>
<image file='predef.Image.Color.36.png' width='348' height='120'>colors.c.35.png</image><br/>
<image file='predef.Image.Color.37.png' width='348' height='120'>colors.c.36.png</image><br/>
<image file='predef.Image.Color.38.png' width='348' height='120'>colors.c.37.png</image><br/>
<image file='predef.Image.Color.39.png' width='348' height='120'>colors.c.38.png</image><br/>
<image file='predef.Image.Color.40.png' width='348' height='120'>colors.c.39.png</image><br/>
<image file='predef.Image.Color.41.png' width='348' height='120'>colors.c.40.png</image><br/>
<image file='predef.Image.Color.42.png' width='348' height='120'>colors.c.41.png</image><br/>
<image file='predef.Image.Color.43.png' width='348' height='120'>colors.c.42.png</image><br/>
<image file='predef.Image.Color.44.png' width='348' height='120'>colors.c.43.png</image><br/>
<image file='predef.Image.Color.45.png' width='348' height='120'>colors.c.44.png</image><br/>
<image file='predef.Image.Color.46.png' width='348' height='120'>colors.c.45.png</image><br/>
<image file='predef.Image.Color.47.png' width='348' height='120'>colors.c.46.png</image><br/>
<image file='predef.Image.Color.48.png' width='348' height='120'>colors.c.47.png</image><br/>
<image file='predef.Image.Color.49.png' width='348' height='120'>colors.c.48.png</image><br/>
<image file='predef.Image.Color.50.png' width='348' height='120'>colors.c.49.png</image><br/>
<image file='predef.Image.Color.51.png' width='348' height='120'>colors.c.50.png</image><br/>
<image file='predef.Image.Color.52.png' width='348' height='120'>colors.c.51.png</image><br/>
<image file='predef.Image.Color.53.png' width='348' height='120'>colors.c.52.png</image><br/>
<image file='predef.Image.Color.54.png' width='348' height='120'>colors.c.53.png</image><br/>
<image file='predef.Image.Color.55.png' width='348' height='120'>colors.c.54.png</image><br/>
<image file='predef.Image.Color.56.png' width='348' height='120'>colors.c.55.png</image><br/>
<image file='predef.Image.Color.57.png' width='348' height='105'>colors.c.56.png</image><br/></p>

<p/>

<p>
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='10'/>
<p><tt>Image.Color["something"]</tt> will never(!) generate an error,
but a zero_type 0, if the color is unknown. This is enough
to give the error "not present in module", if used
as <tt>Image.Color.something</tt>, though.</p>

<p>If you are using colors from for instance a webpage, you might
want to create the color from <ref resolved='predef::Image.Color.guess'>Image.Color.guess</ref>(),
since that method is more tolerant for mistakes and errors.</p>

<p><tt>Image.Color</tt>() is case- and space-sensitive.
Use <ref resolved='predef::Image.Color.guess'>Image.Color.guess</ref>() to catch all variants.</p>

<p>and subtract with a space (lower_case(x)-" ") to make
sure you get all variants.</p>

<p/>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref>, <ref resolved='predef::Image.Color.guess'>Image.Color.guess</ref>, <ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Colortable'>Image.Colortable</ref></p></text></group>

</doc>
<docgroup homogen-type='method'>
<method name='rgb'>
   <returntype><object resolved='predef::Image.Color.rgb'/></returntype>
   <arguments><argument name='red'><type><int/></type></argument>
<argument name='intgreen'><type>
   <object resolved='predef::Image.Color.rgb'/></type></argument>
<argument name='intblue'><type>
   <object resolved='predef::Image.Color.rgb'/></type></argument>

   </arguments>
</method><method name='hsv'>
   <returntype><object resolved='predef::Image.Color.rgb'/></returntype>
   <arguments><argument name='hue'><type><int/></type></argument>
<argument name='intsaturation'><type>
   <object resolved='predef::Image.Color.rgb'/></type></argument>
<argument name='intvalue'><type>
   <object resolved='predef::Image.Color.rgb'/></type></argument>

   </arguments>
</method><method name='cmyk'>
   <returntype><object resolved='predef::Image.Color.rgb'/></returntype>
   <arguments><argument name='c'><type><float/></type></argument>
<argument name='m'><type><float/></type></argument>
<argument name='y'><type><float/></type></argument>
<argument name='k'><type><float/></type></argument>

   </arguments>
</method><method name='greylevel'>
   <returntype><object resolved='predef::Image.Color.rgb'/></returntype>
   <arguments><argument name='level'><type><int/></type></argument>

   </arguments>
</method><method name='html'>
   <returntype><object resolved='predef::Image.Color.rgb'/></returntype>
   <arguments><argument name='html_color'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1479'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1479'/>
<p>Creates a new color object from given red, green and blue,
hue, saturation and value, or greylevel, in color value range.
It could also be created from <i>cmyk</i> values in percent.</p>

<p>The <ref resolved='predef::Image.Color.rgb'>html</ref>() method only understands the HTML color names,
or the <tt>#rrggbb</tt> form. It is case insensitive.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1479'/>
<p>the created object.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='guess' homogen-type='method'>
<method name='guess'>
   <returntype><object resolved='predef::Image.Color.guess'/></returntype>
   <arguments><argument name='color'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1469'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1469'/>
<p>This is equivalent to
<tt><ref resolved='predef::Image.Color'>Image.Color</ref>(lower_case(str)-" ")</tt>,
and tries the color with a prepending '#' if no
corresponding color is found.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1469'/>
<p>a color object or zero_type</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='_indices'>
   <returntype>
        <array><valuetype><string/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='_values'>
   <returntype>
        <array><valuetype><object resolved='predef::Image.Color._indices'/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1669'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1669'/>
<p>(ie as <tt>indices(Image.Color)</tt> or <tt>values(Image.Color)</tt>)
<tt>indices</tt> gives a list of all the known color names,
<tt>values</tt> gives there corresponding objects.</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color'>Image.Color</ref></p></text></group>

</doc>
</docgroup>

<class name='Color'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='184'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='184'/>
<p>This is the color object. It has six readable variables,
<tt>r</tt>, <tt>g</tt>, <tt>b</tt>, for the <i>red</i>,
<i>green</i> and <i>blue</i> values,
and <tt>h</tt>, <tt>s</tt>, <tt>v</tt>, for
the <i>hue</i>, <i>saturation</i> anv <i>value</i> values.</p>
</text>

</doc>
<docgroup homogen-name='bits' homogen-type='method'>
<method name='bits'>
   <returntype><int/></returntype>
   <arguments><argument name='intrbits'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>
<argument name='intgbits'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>
<argument name='intbbits'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>
<argument name='intrshift'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>
<argument name='intgshift'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>
<argument name='intbshift'><type>
   <object resolved='predef::Image.Color.Color.bits'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='575'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='575'/>
<p>Returns the color as an integer. The first three parameters state how
many bits to use for red, green and blue respectively. The last three
state how many bits each colour should be shifted. For instance,
<tt>Image.Color("#AABBCC")-&gt;bits(8, 8, 8, 16, 8, 0)</tt> returns
the integer 11189196, that is, 0xAABBCC.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='light'>
   <returntype><object resolved='predef::Image.Color.Color.light'/></returntype>
   <arguments>
   </arguments>
</method><method name='dark'>
   <returntype><object resolved='predef::Image.Color.Color.light'/></returntype>
   <arguments>
   </arguments>
</method><method name='neon'>
   <returntype><object resolved='predef::Image.Color.Color.light'/></returntype>
   <arguments>
   </arguments>
</method><method name='bright'>
   <returntype><object resolved='predef::Image.Color.Color.light'/></returntype>
   <arguments>
   </arguments>
</method><method name='dull'>
   <returntype><object resolved='predef::Image.Color.Color.light'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1013'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1013'/>
<p>Color modification methods. These returns
a new color.
<table>
<tr><th>method</th><th width='50%'>effect</th>
<th>h</th><th>s</th><th>v</th><th>as</th></tr>
<tr><td>light </td><td>raise light level</td><td>±0</td><td> ±0</td><td>+50</td>
<td><image file='predef.Image.Color.Color.light.1.png' width='20' height='20'>colors.c57.png</image>
<image file='predef.Image.Color.Color.light.2.png' width='20' height='20'>colors.c58.png</image>
<image file='predef.Image.Color.Color.light.3.png' width='20' height='20'>colors.c59.png</image>
<image file='predef.Image.Color.Color.light.4.png' width='20' height='20'>colors.c60.png</image></td></tr>
 
<tr><td>dark  </td><td>lower light level</td><td>±0</td><td> ±0</td><td>-50</td>
<td><image file='predef.Image.Color.Color.light.5.png' width='20' height='20'>colors.c61.png</image>
<image file='predef.Image.Color.Color.light.6.png' width='20' height='20'>colors.c62.png</image>
<image file='predef.Image.Color.Color.light.7.png' width='20' height='20'>colors.c63.png</image>
<image file='predef.Image.Color.Color.light.8.png' width='20' height='20'>colors.c64.png</image></td></tr>
 
<tr><td>bright</td><td>brighter color   </td><td>±0</td><td>+50</td><td>+50</td>
<td><image file='predef.Image.Color.Color.light.9.png' width='20' height='20'>colors.c65.png</image>
<image file='predef.Image.Color.Color.light.10.png' width='20' height='20'>colors.c66.png</image>
<image file='predef.Image.Color.Color.light.11.png' width='20' height='20'>colors.c67.png</image>
<image file='predef.Image.Color.Color.light.12.png' width='20' height='20'>colors.c68.png</image></td></tr>
 
<tr><td>dull  </td><td>greyer color     </td><td>±0</td><td>-50</td><td>-50</td>
<td><image file='predef.Image.Color.Color.light.13.png' width='20' height='20'>colors.c69.png</image>
<image file='predef.Image.Color.Color.light.14.png' width='20' height='20'>colors.c70.png</image>
<image file='predef.Image.Color.Color.light.15.png' width='20' height='20'>colors.c71.png</image>
<image file='predef.Image.Color.Color.light.16.png' width='20' height='20'>colors.c72.png</image></td></tr>
 
<tr><td>neon  </td><td>set to extreme   </td><td>±0</td><td>max</td><td>max</td>
<td><image file='predef.Image.Color.Color.light.17.png' width='20' height='20'>colors.c73.png</image>
<image file='predef.Image.Color.Color.light.18.png' width='20' height='20'>colors.c74.png</image></td></tr>
 
</table></p>

<p><ref resolved='predef::Image.Color.Color.light'>light</ref> and <ref resolved='predef::Image.Color.Color.light'>dark</ref> lower/highers saturation
when value is min-/maximised respective.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1013'/>
<p>the new color object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='1013'/>
<p>The opposites may not always take each other out.
The color is maximised at white and black levels,
so, for instance
<ref resolved='predef::Image.Color'>Image.Color</ref>.white-&gt;<ref resolved='predef::Image.Color.Color.light'>light</ref>()-&gt;<ref resolved='predef::Image.Color.Color.light'>dark</ref>()
doesn't give the white color back, but the equal to
<ref resolved='predef::Image.Color'>Image.Color</ref>.white-&gt;<ref resolved='predef::Image.Color.Color.light'>dark</ref>(), since
white can't get any <ref resolved='predef::Image.Color.Color.light'>light</ref>er.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='cast' homogen-type='method'>
<method name='cast'>
   <returntype>
        <or><array/><string/></or></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='752'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='752'/>
<p>cast the object to an array, representing red, green
and blue (equal to <tt>-&gt;<ref resolved='predef::Image.Color.Color.rgb'>rgb</ref>()</tt>), or
to a string, giving the name (equal to <tt>-&gt;<ref resolved='predef::Image.Color.Color.hex'>name</ref>()</tt>).</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='752'/>
<p>the name as string or rgb as array</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color.rgb'>rgb</ref>, <ref resolved='predef::Image.Color.Color.hex'>name</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='rgb'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='rgbf'>
   <returntype>
        <array><valuetype><float/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='hsv'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='hsvf'>
   <returntype>
        <array><valuetype><float/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='cmyk'>
   <returntype>
        <array><valuetype><float/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='greylevel'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='greylevel'>
   <returntype><int/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='intg'><type>
   <object resolved='predef::Image.Color.Color.rgb'/></type></argument>
<argument name='intb'><type>
   <object resolved='predef::Image.Color.Color.rgb'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='411'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='411'/>
<p>This is methods of getting information from an
<ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object.</p>

<p>They give an array of
red, green and blue (rgb) values (color value),<br/>
hue, saturation and value (hsv) values (range as color value), <br/>
cyan, magenta, yellow, black (cmyk) values (in percent) <br/>
or the greylevel value (range as color value).</p>

<p>The greylevel is calculated by weighting red, green
and blue. Default weights are 87, 127 and 41, respective,
and could be given by argument.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='411'/>
<p>array(int) respective int</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref>, <ref resolved='predef::Image.Color.Color.grey'>grey</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='404'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='404'/>
<p>This is the main <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> creation
method, mostly for internal use.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='grey' homogen-type='method'>
<method name='grey'>
   <returntype><object resolved='predef::Image.Color.Color.grey'/></returntype>
   <arguments>
   </arguments>
</method><method name='grey'>
   <returntype><object resolved='predef::Image.Color.Color.grey'/></returntype>
   <arguments><argument name='red'><type><int/></type></argument>
<argument name='green'><type><int/></type></argument>
<argument name='blue'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='558'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='558'/>
<p>Gives a new color, containing a grey color,
which is calculated by the <ref resolved='predef::Image.Color.Color.rgb'>greylevel</ref> method.</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='558'/>
<p>a new <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color.rgb'>greylevel</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='hex'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='hex'>
   <returntype><string/></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><method name='name'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='html'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='634'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='634'/>
<p>Information methods.</p>

<p><ref resolved='predef::Image.Color.Color.hex'>hex</ref>() simply gives a string on the <tt>#rrggbb</tt>
format. If <tt>n</tt> is given, the number of significant
digits is set to this number.
(Ie, <tt>n=3</tt> gives <tt>#rrrgggbbb</tt>.)</p>

<p><ref resolved='predef::Image.Color.Color.hex'>name</ref>() is a simplified method;
if the color exists in the database, the name is returned,
per default is the <ref resolved='predef::Image.Color.Color.hex'>hex</ref>() method use.</p>

<p><ref resolved='predef::Image.Color.Color.hex'>html</ref>() gives the <tt>HTML</tt> name of
the color, or the <ref resolved='predef::Image.Color.Color.hex'>hex</ref>(2) if it isn't one
of the 16 <tt>HTML</tt> colors.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='634'/>
<p>a new <ref resolved='predef::Image.Color.Color'>Image.Color.Color</ref> object</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color.rgb'>rgb</ref>, <ref resolved='predef::Image.Color.Color.rgb'>hsv</ref>, <ref resolved='predef::Image.Color'>Image.Color</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='`==' homogen-type='method'>
<method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='other_color'><type><object resolved='predef::Image.Color.Color.`=='/></type></argument>

   </arguments>
</method><method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='rgb'><type>
   <array><valuetype><int/></valuetype></array></type></argument>

   </arguments>
</method><method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='greylevel'><type><int/></type></argument>

   </arguments>
</method><method name='`=='>
   <returntype><int/></returntype>
   <arguments><argument name='name'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='920'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='920'/>
<p>Compares this object to another color,
or color name. Example:
<pre>
object red=Image.Color.red;
object other=Image.Color. ...;
object black=Image.Color.black;
 
if (red==other) ...
if (red==({255,0,0})) ...
if (black==0) ...
if (red=="red") ...
</pre>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='920'/>
<p>1 or 0</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colors.c' first-line='920'/>
<p>The other datatype (not color object) must be to the right!</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Color.Color.`==.rgb'>rgb</ref>, <ref resolved='predef::Image.Color.Color.grey'>grey</ref>, <ref resolved='predef::Image.Color.Color.`==.name'>name</ref></p></text></group>

</doc>
</docgroup>

</class>

</module>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/pattern.c' first-line='9'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/image.c' first-line='9'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/matrix.c' first-line='9'/>




<class name='Font'><doc><text><p>Short technical documentation on a font file:
 This object adds the text-drawing and -creation
 capabilities of the <ref resolved='predef::Image.Image'>Image</ref> module.</p>
<p> For simple usage, see <ref resolved='predef::Image.Font.write'>write</ref> and <ref resolved='predef::Image.Font.load'>load</ref>.</p>
</text><group><note/><text><p><pre>
	       struct file_head
	       {
		  unsigned INT32 cookie;   - 0x464f4e54
		  unsigned INT32 version;  - 1
		  unsigned INT32 chars;    - number of chars
		  unsigned INT32 height;   - height of font
		  unsigned INT32 baseline; - font baseline
		  unsigned INT32 o[1];     - position of char_head's
	       } *fh;
	       struct char_head
	       {
		  unsigned INT32 width;    - width of this character
		  unsigned INT32 spacing;  - spacing to next character
		  unsigned char data[1];   - pixmap data (1byte/pixel)
	       } *ch;

            version 2:


            	  On-disk syntax (everything in N.B.O), int is 4 bytes, a byte is 8 bits:

            pos
            	0   int cookie = 'FONT';     or 0x464f4e54
            	4   int version = 2;         1 was the old version without the last four chars
            	8   int numchars;            Always 256 in this version of the dump program
            12   int height;              in (whole) pixels
            16   int baseline;            in (whole) pixels
            20   char direction;          1==right to left, 0 is left to right
            21   char format;             Font format
            22   char colortablep;        Colortable format
            23   char kerningtablep;      Kerning table format

            24   int offsets[numchars];   pointers into the data, realative to &amp;cookie.
            	    [colortable]
            	    [kerningtable]

            	  At each offset:


            0   int width;               in pixels
            4   int spacing;             in 1/1000:th of a pixels
            8   char data[];             Enough data to plot width * font-&gt;height pixels
            				    Please note that if width is 0, there is no data.

            Font formats:
            	id type
            	 0 Raw 8bit data
            	 1 RLE encoded data,  char length, char data,   70% more compact than raw data
            	 2 ZLib compressed data                         60% more compact than RLE

            Colortable types:
            	 0 No colortable		 (the data is an alpha channel)
            	 1 24bit RGB with alpha         (index-&gt;color, 256*4 bytes, rgba)
            	 2 8bit Greyscale with alpha    (index-&gt;color, 256*2 bytes)

            Kerningtable types:
            	 0 No kerning table
            	 1 numchars*numchars entries, each a signed char with the kerning value
            	 2 numchar entries, each with a list of kerning pairs, like this:
            	    int len
            	    len * (short char, short value)
 </pre></p>
</text></group><group><seealso/><text><p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref></p>
</text></group></doc><docgroup homogen-name='load' homogen-type='method'><doc><text><p>Loads a font file to this font object.</p>
</text><group><returns/><text><p>Returns zero upon failure and a font object upon success.</p>
</text></group><group><param name='filename'/><text><p>The path to the font file.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Image.Font.write'>write</ref></p>
</text></group></doc>
<method name='load'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><or><object resolved='predef::Image.Font'>Image.Font</object><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Loads a font file to this font object.
  Similar to <ref resolved='predef::Image.Font.load'>load()</ref>.</p>
</text></doc>
<method name='create'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Writes some text; thus creating an image object
  that can be used as mask or as a complete picture.
  One or more text lines may be provided.</p>
</text><group><seealso/><text><p><ref resolved='predef::Image.Font.text_extents'>text_extents</ref>, <ref resolved='predef::Image.Font.load'>load</ref>, <ref resolved='predef::Image.Image.paste_mask'>Image.Image-&gt;paste_mask</ref>, <ref resolved='predef::Image.Image.paste_alpha_color'>Image.Image-&gt;paste_alpha_color</ref></p>
</text></group></doc>
<method name='write'>
<arguments><argument name='text'><type><string/></type></argument><argument name='more_text_lines'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='height' homogen-type='method'><doc><text><p>Returns the font height.</p>
</text><group><seealso/><text><p><ref resolved='predef::Image.Font.baseline'>baseline</ref>, <ref resolved='predef::Image.Font.text_extents'>text_extents</ref></p>
</text></group></doc>
<method name='height'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='text_extents' homogen-type='method'><doc><text><p>Calculate extents of a text-image,
  that would be created by calling <ref resolved='predef::Image.Font.write'>write</ref>
  with the same arguments. One or more lines
  of text may be provided.</p>
</text><group><returns/><text><array><group><elem><type><int/></type><index>width</index></elem></group><group><elem><type><int/></type><index>height</index></elem></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::Image.Font.write'>write</ref>, <ref resolved='predef::Image.Font.height'>height</ref>, <ref resolved='predef::Image.Font.baseline'>baseline</ref></p>
</text></group></doc>
<method name='text_extents'>
<arguments><argument name='text'><type><string/></type></argument><argument name='more_text_lines'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Set spacing scale to write characters closer
  or more far away. This does not change scale
  of character, only the space between them.</p>
</text></doc>
<method name='set_xspacing_scale'>
<arguments><argument name='scale'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_yspacing_scale'>
<arguments><argument name='scale'><type><float/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='baseline' homogen-type='method'><doc><text><p>Returns font baseline (pixels from top)</p>
</text><group><seealso/><text><p><ref resolved='predef::Image.Font.height'>height</ref>, <ref resolved='predef::Image.Font.text_extents'>text_extents</ref></p>
</text></group></doc>
<method name='baseline'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='center' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='center'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='right' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='right'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='left' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='left'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='11'/>
<class name='Colortable'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='12'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='12'/>
<p>
This object keeps colortable information,
mostly for image re-coloring (quantization).</p>

<p>The object has color reduction, quantisation,
mapping and dithering capabilities.
</p>
</text>
<group><seealso/><text>
<p><ref resolved='predef::Image.Image'>Image</ref>, <ref resolved='predef::Image.Image'>Image.Image</ref>, <ref resolved='predef::Image.Font'>Image.Font</ref>, <ref resolved='predef::Image.GIF'>Image.GIF</ref></p></text></group>

</doc>
<docgroup homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='colors'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>
<argument name='number'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>
<argument name='number'><type><int/></type></argument>
<argument name='needed'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='array(int'><type>
   <object resolved='predef::Image.Colortable.create'/></type></argument>

   </arguments>
</method><method name='add'>
   <returntype><object resolved='predef::Image.Colortable.create'/></returntype>
   <arguments><argument name='colors'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='add'>
   <returntype><object resolved='predef::Image.Colortable.create'/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>
<argument name='number'><type><int/></type></argument>

   </arguments>
</method><method name='add'>
   <returntype><object resolved='predef::Image.Colortable.create'/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>
<argument name='number'><type><int/></type></argument>
<argument name='needed'><type>
   <array><valuetype>
     <array><valuetype><int/></valuetype></array></valuetype></array></type></argument>

   </arguments>
</method><method name='add'>
   <returntype><object resolved='predef::Image.Colortable.create'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='add'>
   <returntype><object resolved='predef::Image.Colortable.create'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='array(int'><type>
   <object resolved='predef::Image.Colortable.create'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2051'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2051'/>
<p><ref resolved='predef::Image.Colortable.create'>create</ref> initiates a colortable object.
Default is that no colors are in the colortable.</p>

<p><ref resolved='predef::Image.Colortable.create'>add</ref> takes the same argument(s) as
<ref resolved='predef::Image.Colortable.create'>create</ref>, thus adding colors to the colortable.</p>

<p>The colortable is mostly a list of colors,
or more advanced, colors and weight.</p>

<p>The colortable could also be a colorcube, with or
without additional scales. A colorcube is the by-far
fastest way to find colors.</p>

<p>Example:
<pre>
ct=colortable(my_image,256); // the best 256 colors
ct=colortable(my_image,256,({0,0,0})); // black and the best other 255
 
ct=colortable(({({0,0,0}),({255,255,255})})); // black and white
 
ct=colortable(6,7,6); // a colortable of 252 colors
ct=colortable(7,7,5, ({0,0,0}),({255,255,255}),11);
        // a colorcube of 245 colors, and a greyscale of the rest -&gt; 256
</pre>
</p>
</text>
<group>
   <param name='colors'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2091'/>
<p>list of colors</p></text></group>
<group>
   <param name='image'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2093'/>
<p>source image
</p></text></group>
<group>
   <param name='number'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2100'/>
<p>number of colors to get from the image</p>

<p>0 (zero) gives all colors in the image.</p>

<p>Default value is 256.</p></text></group>
<group>
   <param name='needed'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2106'/>
<p>needed colors (to optimize selection of others to these given)</p>

<p>this will add to the total number of colors (see argument 'number')</p></text></group>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2112'/>
<p>size of sides in the colorcube, must (of course) be equal
or larger than 2 - if smaller, the cube is ignored (no colors).
This could be used to have only scales (like a greyscale)
in the output.</p></text></group>
<group>
   <param name='fromi'/>
   <param name='toi'/>
   <param name='stepi'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2119'/>
<p>This is to add the possibility of adding a scale
of colors to the colorcube; for instance a grayscale
using the arguments <tt>({0,0,0}),({255,255,255}),17</tt>,
adding a scale from black to white in 17 or more steps.</p>

<p>Colors already in the cube is used again to add the number
of steps, if possible.</p>

<p>The total number of colors in the table is therefore
<tt>r*b*g+step1+...+stepn</tt>.</p></text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2051'/>
<p>max hash size is (probably, set by a <tt>#define</tt>)
32768 entries, giving
maybe half that number of colors as maximum.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='cast' homogen-type='method'>
<method name='cast'>
   <returntype><object resolved='predef::Image.Colortable.cast'/></returntype>
   <arguments><argument name='to'><type><string/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2697'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2697'/>
<p>cast the colortable to an array or mapping,
the array consists of <ref resolved='predef::Image.Color'>Image.Color</ref> objects
and are not in index order. The mapping consists of
index:<ref resolved='predef::Image.Color'>Image.Color</ref> pairs, where index is
the index (int) of that color.</p>

<p>example: <tt>(mapping)Image.Colortable(img)</tt>
</p>
</text>
<group>
   <param name='to'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2706'/>
<p>must be "string", "array" or "mapping".</p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='corners' homogen-type='method'>
<method name='corners'>
   <returntype>
        <array><valuetype><object resolved='predef::Image.Colortable.corners'/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4431'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4431'/>
<p>Gives the eight corners in rgb colorspace as an array.
The "black" and "white" corners are the first two.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='cubicles' homogen-type='method'>
<method name='cubicles'>
   <returntype><object resolved='predef::Image.Colortable.cubicles'/></returntype>
   <arguments>
   </arguments>
</method><method name='cubicles'>
   <returntype><object resolved='predef::Image.Colortable.cubicles'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='cubicles'>
   <returntype><object resolved='predef::Image.Colortable.cubicles'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='accuracy'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2830'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2830'/>
<p>Set the colortable to use the cubicles algorithm to lookup
the closest color. This is a mostly very fast and very
accurate way to find the correct color, and the default
algorithm.</p>

<p>
The colorspace is divided in small cubes, each cube
containing the colors in that cube. Each cube then gets
a list of the colors in the cube, and the closest from
the corners and midpoints between corners.</p>

<p>When a color is needed, the algorithm first finds the
correct cube and then compares with all the colors in
the list for that cube.</p>

<p>example: <tt>colors=Image.Colortable(img)-&gt;cubicles();</tt></p>

<p>algorithm time: between O[m] and O[m * n],
where n is numbers of colors and m is number of pixels</p>

<p>The arguments can be heavy trimmed for the usage
of your colortable; a large number (10×10×10 or bigger)
of cubicles is recommended when you use the colortable
repeatedly, since the calculation takes much
more time than usage.</p>

<p>recommended values:</p>

<p><pre>
image size  setup
100×100     cubicles(4,5,4) (default)
1000×1000   cubicles(12,12,12) (factor 2 faster than default)
</pre></p>

<p>In some cases, the <ref resolved='predef::Image.Colortable.full'>full</ref> method is faster.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Colortable.cubicles.1.png' width='80' height='115'>colortable.c0.png</image></td>
<td><image file='predef.Image.Colortable.cubicles.2.png' width='80' height='115'>colortable.c1.png</image></td>
<td><image file='predef.Image.Colortable.cubicles.3.png' width='80' height='115'>colortable.c2.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>default cubicles,<br/>16 colors</td>
<td>accuracy=200</td>
</tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2883'/>
<p>Size, ie how much the colorspace is divided.
Note that the size of each cubicle is at least about 8b,
and that it takes time to calculate them. The number of
cubicles are <tt>r*g*b</tt>, and default is 4,5,4,
ie 80 cubicles. This works good for 200±100 colors.
</p></text></group>
<group>
   <param name='accuracy'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2890'/>
<p>Accuracy when checking sides of cubicles.
Default is 16. A value of 1 gives complete accuracy,
ie cubicle() method gives exactly the same result
as full(), but takes (in worst case) 16× the time
to calculate.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2830'/>
<p>the object being called</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2830'/>
<p>this method doesn't figure out the cubicles, this is
done on the first use of the colortable.</p>

<p>Not applicable to colorcube types of colortable.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='floyd_steinberg' homogen-type='method'>
<method name='floyd_steinberg'>
   <returntype><object resolved='predef::Image.Colortable.floyd_steinberg'/></returntype>
   <arguments>
   </arguments>
</method><method name='floyd_steinberg'>
   <returntype><object resolved='predef::Image.Colortable.floyd_steinberg'/></returntype>
   <arguments><argument name='bidir'><type><int/></type></argument>
<argument name='forward'><type>
   <or><int/><float/></or></type></argument>
<argument name='downforward'><type>
   <or><int/><float/></or></type></argument>
<argument name='down'><type>
   <or><int/><float/></or></type></argument>
<argument name='downback'><type>
   <or><int/><float/></or></type></argument>
<argument name='factor'><type>
   <or><int/><float/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3789'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3789'/>
<p>Set dithering method to floyd_steinberg.</p>

<p>The arguments to this method is for fine-tuning of the
algorithm (for computer graphics wizards).</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Colortable.floyd_steinberg.1.png' width='80' height='115'>colortable.c3.png</image></td>
<td><image file='predef.Image.Colortable.floyd_steinberg.2.png' width='80' height='115'>colortable.c4.png</image></td>
<td><image file='predef.Image.Colortable.floyd_steinberg.3.png' width='80' height='115'>colortable.c5.png</image></td>
</tr><tr valign='center'>
<td>original</td>
<td>floyd_steinberg to a 4×4×4 colorcube</td>
<td>floyd_steinberg to 16 chosen colors</td>
</tr></table>
</p>
</text>
<group>
   <param name='bidir'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3806'/>
<p>Set algorithm direction of forward.
-1 is backward, 1 is forward, 0 for toggle of direction
each line (default).</p></text></group>
<group>
   <param name='forward'/>
   <param name='downforward'/>
   <param name='down'/>
   <param name='downback'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3813'/>
<p>Set error correction directions. Default is
forward=7, downforward=1, down=5, downback=3.</p></text></group>
<group>
   <param name='factor'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3816'/>
<p>Error keeping factor.
Error will increase if more than 1.0 and decrease if less than 1.0.
A value of 0.0 will cancel any dither effects.
Default is 0.95.</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3789'/>
<p>the object being called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='full' homogen-type='method'>
<method name='full'>
   <returntype><object resolved='predef::Image.Colortable.full'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2740'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2740'/>
<p>Set the colortable to use full scan to lookup the closest color.</p>

<p>example: <tt>colors=Image.Colortable(img)-&gt;full();</tt></p>

<p>algorithm time: O[n*m], where n is numbers of colors
and m is number of pixels
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2740'/>
<p>the object being called</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2740'/>
<p>Not applicable to colorcube types of colortable.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.cubicles'>cubicles</ref>, <ref resolved='predef::Image.Colortable.map'>map</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='image' homogen-type='method'>
<method name='image'>
   <returntype><object resolved='predef::Image.Colortable.image'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4383'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4383'/>
<p>cast the colortable to an image object</p>

<p>each pixel in the image object is an entry in the colortable
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4383'/>
<p>the resulting image object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='map'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Colortable.map'/></type></argument>

   </arguments>
</method><method name='`*'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Colortable.map'/></type></argument>

   </arguments>
</method><method name='``*'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Colortable.map'/></type></argument>

   </arguments>
</method><method name='map'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><method name='`*'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><method name='``*'>
   <returntype><object resolved='predef::Image.Colortable.map'/></returntype>
   <arguments><argument name='data'><type><string/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3338'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3338'/>
<p>Map colors in an image object to the colors in
the colortable, and creates a new image with the
closest colors.</p>

<p><table><tr valign='center'>
<td/>
<td><image file='predef.Image.Colortable.map.1.png' width='80' height='115'>colortable.c6.png</image></td>
<td><image file='predef.Image.Colortable.map.2.png' width='80' height='115'>colortable.c7.png</image></td>
<td><image file='predef.Image.Colortable.map.3.png' width='80' height='115'>colortable.c8.png</image></td>
<td><image file='predef.Image.Colortable.map.4.png' width='80' height='115'>colortable.c9.png</image></td>
<td><image file='predef.Image.Colortable.map.5.png' width='80' height='115'>colortable.c10.png</image></td>
<td>no dither</td>
</tr><tr valign='center'>
<td/>
<td><image file='predef.Image.Colortable.map.6.png' width='80' height='115'>colortable.c11.png</image></td>
<td><image file='predef.Image.Colortable.map.7.png' width='80' height='115'>colortable.c12.png</image></td>
<td><image file='predef.Image.Colortable.map.8.png' width='80' height='115'>colortable.c13.png</image></td>
<td><image file='predef.Image.Colortable.map.9.png' width='80' height='115'>colortable.c14.png</image></td>
<td><image file='predef.Image.Colortable.map.10.png' width='80' height='115'>colortable.c15.png</image></td>
<td><ref resolved='predef::Image.Colortable.floyd_steinberg'>floyd_steinberg</ref> dither</td>
</tr><tr valign='center'>
<td/>
<td><image file='predef.Image.Colortable.map.11.png' width='80' height='115'>colortable.c16.png</image></td>
<td><image file='predef.Image.Colortable.map.12.png' width='80' height='115'>colortable.c17.png</image></td>
<td><image file='predef.Image.Colortable.map.13.png' width='80' height='115'>colortable.c18.png</image></td>
<td><image file='predef.Image.Colortable.map.14.png' width='80' height='115'>colortable.c19.png</image></td>
<td><image file='predef.Image.Colortable.map.15.png' width='80' height='115'>colortable.c20.png</image></td>
<td><ref resolved='predef::Image.Colortable.ordered'>ordered</ref> dither</td>
</tr><tr valign='center'>
<td><image file='predef.Image.Colortable.map.16.png' width='80' height='115'>colortable.c21.png</image></td>
<td><image file='predef.Image.Colortable.map.17.png' width='80' height='115'>colortable.c22.png</image></td>
<td><image file='predef.Image.Colortable.map.18.png' width='80' height='115'>colortable.c23.png</image></td>
<td><image file='predef.Image.Colortable.map.19.png' width='80' height='115'>colortable.c24.png</image></td>
<td><image file='predef.Image.Colortable.map.20.png' width='80' height='115'>colortable.c25.png</image></td>
<td><image file='predef.Image.Colortable.map.21.png' width='80' height='115'>colortable.c26.png</image></td>
<td><ref resolved='predef::Image.Colortable.randomcube'>randomcube</ref> dither</td>
</tr><tr valign='center'>
<td>original</td>
<td>2</td>
<td>4</td>
<td>8</td>
<td>16</td>
<td>32 colors</td>
</tr></table>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3338'/>
<p>a new image object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3338'/>
<p>Flat (not cube) colortable and not '<ref resolved='predef::Image.Colortable.full'>full</ref>' method:
this method does figure out the data needed for
the lookup method, which may take time the first
use of the colortable - the second use is quicker.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.cubicles'>cubicles</ref>, <ref resolved='predef::Image.Colortable.full'>full</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='nodither' homogen-type='method'>
<method name='nodither'>
   <returntype><object resolved='predef::Image.Colortable.nodither'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3906'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3906'/>
<p>Set no dithering (default).
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3906'/>
<p>the object being called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='ordered' homogen-type='method'>
<method name='ordered'>
   <returntype><object resolved='predef::Image.Colortable.ordered'/></returntype>
   <arguments>
   </arguments>
</method><method name='ordered'>
   <returntype><object resolved='predef::Image.Colortable.ordered'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='ordered'>
   <returntype><object resolved='predef::Image.Colortable.ordered'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><method name='ordered'>
   <returntype><object resolved='predef::Image.Colortable.ordered'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='ordered'>
   <returntype><object resolved='predef::Image.Colortable.ordered'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='rx'><type><int/></type></argument>
<argument name='ry'><type><int/></type></argument>
<argument name='gx'><type><int/></type></argument>
<argument name='gy'><type><int/></type></argument>
<argument name='bx'><type><int/></type></argument>
<argument name='by'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4163'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4163'/>
<p>Set ordered dithering, which gives a position-dependent error added
to the pixel values.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Colortable.ordered.1.png' width='80' height='115'>colortable.c27.png</image></td>
<td><image file='predef.Image.Colortable.ordered.2.png' width='80' height='115'>colortable.c28.png</image></td>
<td><image file='predef.Image.Colortable.ordered.3.png' width='80' height='115'>colortable.c29.png</image></td>
<td><image file='predef.Image.Colortable.ordered.4.png' width='80' height='115'>colortable.c30.png</image></td>
</tr><tr valign='top'>
<td>original</td>
<td colspan='2'>mapped to <br/><tt>Image.Colortable(6,6,6)-&gt;</tt></td>
</tr><tr valign='top'>
<td/>
<td><tt>ordered<br/> (42,42,42,2,2)</tt></td>
<td><tt>ordered()</tt></td>
<td><tt>ordered<br/> (42,42,42, 8,8,<br/> 0,0, 0,1, 1,0)</tt></td>
</tr><tr valign='top'>
<td><image file='predef.Image.Colortable.ordered.5.png' width='80' height='115'>colortable.c31.png</image></td>
<td><image file='predef.Image.Colortable.ordered.6.png' width='80' height='115'>colortable.c32.png</image></td>
<td><image file='predef.Image.Colortable.ordered.7.png' width='80' height='115'>colortable.c33.png</image></td>
<td><image file='predef.Image.Colortable.ordered.8.png' width='80' height='115'>colortable.c34.png</image></td>
</tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4216'/>
<p>The maximum error. Default is 32, or colorcube steps (256/size).
</p></text></group>
<group>
   <param name='xsize'/>
   <param name='ysize'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4220'/>
<p>Size of error matrix. Default is 8×8.
Only values which factors to multiples of 2 and 3 are
possible to choose (2,3,4,6,8,12,...).
</p></text></group>
<group>
   <param name='x'/>
   <param name='y'/>
   <param name='rx'/>
   <param name='ry'/>
   <param name='gx'/>
   <param name='gy'/>
   <param name='bx'/>
   <param name='by'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4232'/>
<p>Offset for the error matrix. <tt>x</tt> and <tt>y</tt> is for
both red, green and blue values, the other is individual.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='4163'/>
<p>the object being called</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.randomcube'>randomcube</ref>, <ref resolved='predef::Image.Colortable.nodither'>nodither</ref>, <ref resolved='predef::Image.Colortable.floyd_steinberg'>floyd_steinberg</ref>, <ref resolved='predef::Image.Colortable.create'>create</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='randomcube'>
   <returntype><object resolved='predef::Image.Colortable.randomcube'/></returntype>
   <arguments>
   </arguments>
</method><method name='randomcube'>
   <returntype><object resolved='predef::Image.Colortable.randomcube'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><method name='randomgrey'>
   <returntype><object resolved='predef::Image.Colortable.randomcube'/></returntype>
   <arguments>
   </arguments>
</method><method name='randomgrey'>
   <returntype><object resolved='predef::Image.Colortable.randomcube'/></returntype>
   <arguments><argument name='err'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3920'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3920'/>
<p>Set random cube dithering.
Color choosen is the closest one to color in picture
plus (flat) random error; <tt>color±random(error)</tt>.</p>

<p>The randomgrey method uses the same random error on red, green
and blue and the randomcube method has three random errors.</p>

<p><table><tr valign='center'>
<td><image file='predef.Image.Colortable.randomcube.1.png' width='80' height='115'>colortable.c35.png</image></td>
<td><image file='predef.Image.Colortable.randomcube.2.png' width='80' height='115'>colortable.c36.png</image></td>
<td><image file='predef.Image.Colortable.randomcube.3.png' width='80' height='115'>colortable.c37.png</image></td>
</tr><tr valign='top'>
<td>original</td>
<td colspan='2'>mapped to <br/><tt>Image.Colortable(4,4,4)-&gt;</tt></td>
</tr><tr valign='top'>
<td/>
<td>randomcube()</td>
<td>randomgrey()</td>
</tr><tr valign='top'>
<td><image file='predef.Image.Colortable.randomcube.4.png' width='80' height='115'>colortable.c38.png</image></td>
<td><image file='predef.Image.Colortable.randomcube.5.png' width='80' height='115'>colortable.c39.png</image></td>
<td><image file='predef.Image.Colortable.randomcube.6.png' width='80' height='115'>colortable.c40.png</image></td>
</tr></table>
</p>
</text>
<group>
   <param name='r'/>
   <param name='g'/>
   <param name='b'/>
   <param name='err'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3968'/>
<p>The maximum error. Default is 32, or colorcube step.
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3920'/>
<p>the object being called</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3920'/>
<p><ref resolved='predef::Image.Colortable.randomcube'>randomgrey</ref> method needs colorcube size to be the same on
red, green and blue sides to work properly. It uses the
red colorcube value as default.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.ordered'>ordered</ref>, <ref resolved='predef::Image.Colortable.nodither'>nodither</ref>, <ref resolved='predef::Image.Colortable.floyd_steinberg'>floyd_steinberg</ref>, <ref resolved='predef::Image.Colortable.create'>create</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='reduce'>
   <returntype><object resolved='predef::Image.Colortable.reduce'/></returntype>
   <arguments><argument name='colors'><type><int/></type></argument>

   </arguments>
</method><method name='reduce_fs'>
   <returntype><object resolved='predef::Image.Colortable.reduce'/></returntype>
   <arguments><argument name='colors'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2324'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2324'/>
<p>reduces the number of colors</p>

<p>All needed (see <ref resolved='predef::Image.Colortable.create'>create</ref>) colors are kept.</p>

<p><ref resolved='predef::Image.Colortable.reduce'>reduce_fs</ref> creates and keeps
the outmost corners of the color space, to
improve floyd-steinberg dithering result.
(It doesn't work very well, though.)
</p>
</text>
<group>
   <param name='colors'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2337'/>
<p>target number of colors
</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2324'/>
<p>the new <ref resolved='predef::Image.Colortable'>Colortable</ref> object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2324'/>
<p>this algorithm assumes all colors are different to
begin with (!)</p>

<p><ref resolved='predef::Image.Colortable.reduce'>reduce_fs</ref> keeps the "corners" as
"needed colors".
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.corners'>corners</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='rigid' homogen-type='method'>
<method name='rigid'>
   <returntype><object resolved='predef::Image.Colortable.rigid'/></returntype>
   <arguments>
   </arguments>
</method><method name='rigid'>
   <returntype><object resolved='predef::Image.Colortable.rigid'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2767'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2767'/>
<p>Set the colortable to use the "rigid" method of
looking up colors.</p>

<p>This is a very simple way of finding the correct
color. The algorithm initializes a cube with
<tt>r</tt> x <tt>g</tt> x <tt>b</tt> colors,
where every color is chosen by closest match to
the corresponding coordinate.</p>

<p>This format is not recommended for exact match,
but may be usable when it comes to quickly
view pictures on-screen.</p>

<p>It has a high init-cost and low use-cost.
The structure is initiated at first usage.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2767'/>
<p>the object being called</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2767'/>
<p>Not applicable to colorcube types of colortable.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Colortable.cubicles'>cubicles</ref>, <ref resolved='predef::Image.Colortable.map'>map</ref>, <ref resolved='predef::Image.Colortable.full'>full</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-name='spacefactors' homogen-type='method'>
<method name='spacefactors'>
   <returntype><object resolved='predef::Image.Colortable.spacefactors'/></returntype>
   <arguments><argument name='r'><type><int/></type></argument>
<argument name='g'><type><int/></type></argument>
<argument name='b'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3751'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3751'/>
<p>Colortable tuning option, this sets the color space
distance factors. This is used when comparing distances
in the colorspace and comparing grey levels.</p>

<p>Default factors are 3, 4 and 1; blue is much
darker than green. Compare with <ref resolved='predef::Image.Image.grey'>Image.Image-&gt;grey</ref>().
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3751'/>
<p>the object being called</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='3751'/>
<p>This has no sanity check. Some functions may bug
if the factors are to high - color reduction functions
sums grey levels in the image, this could exceed maxint
in the case of high factors. Negative values may
also cause strange effects. *grin*</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='`+' homogen-type='method'>
<method name='`+'>
   <returntype><object resolved='predef::Image.Colortable.`+'/></returntype>
   <arguments><argument name='with'><type><object resolved='predef::Image.Colortable.`+'/></type></argument>
<argument name='mixed...more'><type>
   <object resolved='predef::Image.Colortable.`+'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2430'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2430'/>
<p>sums colortables</p>
</text>
<group>
   <param name='with'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2434'/>
<p><ref resolved='predef::Image.Colortable'>Colortable</ref> object with colors to add</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2430'/>
<p>the resulting new <ref resolved='predef::Image.Colortable'>Colortable</ref> object</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='`-' homogen-type='method'>
<method name='`-'>
   <returntype><object resolved='predef::Image.Colortable.`-'/></returntype>
   <arguments><argument name='with'><type><object resolved='predef::Image.Colortable.`-'/></type></argument>
<argument name='mixed...more'><type>
   <object resolved='predef::Image.Colortable.`-'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2483'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2483'/>
<p>subtracts colortables</p>
</text>
<group>
   <param name='with'/>
<text><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2487'/>
<p><ref resolved='predef::Image.Colortable'>Colortable</ref> object with colors to subtract</p></text></group>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/colortable.c' first-line='2483'/>
<p>the resulting new <ref resolved='predef::Image.Colortable'>Colortable</ref> object</p>
</text></group>

</doc>
</docgroup>

</class>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/dct.c' first-line='9'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='9'/>
<docgroup homogen-name='lay' homogen-type='method'>
<method name='lay'>
   <returntype>
        <object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
   <arguments><argument name='layers'><type>
   <array><valuetype>
     <or>
       <object resolved='predef::Image.Layer'>Image.Layer</object><mapping/></or></valuetype></array></type></argument>

   </arguments>
</method><method name='lay'>
   <returntype>
        <object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
   <arguments><argument name='layers'><type>
   <array><valuetype>
     <or>
       <object resolved='predef::Image.Layer'>Image.Layer</object><mapping/></or></valuetype></array></type></argument>
<argument name='xoffset'><type><int/></type></argument>
<argument name='yoffset'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='2899'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='2899'/>
<p>Combine layers.</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='2899'/>
<p>a new layer object.</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Layer'>Image.Layer</ref></p></text></group>

</doc>
</docgroup>

<class name='Layer'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='10'/>
<doc>
<group><seealso/><text>
<p><ref>layers</ref></p></text></group>

</doc>
<docgroup homogen-type='method'>
<method name='set_image'>
   <returntype><object resolved='predef::Image.Layer.set_image'/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>

   </arguments>
</method><method name='set_image'>
   <returntype><object resolved='predef::Image.Layer.set_image'/></returntype>
   <arguments><argument name='image'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>
<argument name='alpha_channel'><type>
   <object resolved='predef::Image.Image'>Image.Image</object></type></argument>

   </arguments>
</method><method name='image'>
   <returntype>
        <or><object resolved='predef::Image.Layer.set_image'/><int><min>0</min></int></or></returntype>
   <arguments>
   </arguments>
</method><method name='alpha'>
   <returntype>
        <or><object resolved='predef::Image.Layer.set_image'/><int><min>0</min></int></or></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='715'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='715'/>
<p>Set/change/get image and alpha channel for the layer.
You could also cancel the channels giving 0
instead of an image object.</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='715'/>
<p>image and alpha channel must be of the same size,
or canceled.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_alpha_value'>
   <returntype><object resolved='predef::Image.Layer.set_alpha_value'/></returntype>
   <arguments><argument name='value'><type><float/></type></argument>

   </arguments>
</method><method name='alpha_value'>
   <returntype><float/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='852'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='852'/>
<p>Set/get the general alpha value of this layer.
This is a float value between 0 and 1,
and is multiplied with the alpha channel.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='autocrop'>
   <returntype><object resolved='predef::Image.Layer.autocrop'/></returntype>
   <arguments>
   </arguments>
</method><method name='autocrop'>
   <returntype><object resolved='predef::Image.Layer.autocrop'/></returntype>
   <arguments><argument name='left'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='right'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='top'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='bottom'><type>
   <int><min>0</min><max>1</max></int></type></argument>

   </arguments>
</method><method name='find_autocrop'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><method name='find_autocrop'>
   <returntype>
        <array><valuetype><int/></valuetype></array></returntype>
   <arguments><argument name='left'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='right'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='top'><type>
   <int><min>0</min><max>1</max></int></type></argument>
<argument name='bottom'><type>
   <int><min>0</min><max>1</max></int></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3182'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3182'/>
<p>This crops (of finds) a suitable crop, non-destructive crop.
The layer alpha channel is checked, and edges that is
transparent is removed.</p>

<p>(What really happens is that the image and alpha channel is checked,
and edges equal the fill setup is cropped away.)</p>

<p><ref resolved='predef::Image.Layer.autocrop'>find_autocrop</ref>() returns an array of xoff,yoff,xsize,ysize,
which can be fed to <ref resolved='predef::Image.Layer.crop'>crop</ref>().
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3182'/>
<p>A tiled image will not be cropped at all.</p>

<p><tt>left</tt>...<tt>bottom</tt> arguments can be used
to tell what sides cropping are ok on.
</p>
</text></group>
<group><seealso/><text>
<p><ref resolved='predef::Image.Layer.crop'>crop</ref>, <ref resolved='predef::Image.Image.autocrop'>Image.Image-&gt;autocrop</ref></p></text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_mode'>
   <returntype><object resolved='predef::Image.Layer.set_mode'/></returntype>
   <arguments><argument name='mode'><type><string/></type></argument>

   </arguments>
</method><method name='mode'>
   <returntype><string/></returntype>
   <arguments>
   </arguments>
</method><method name='available_modes'>
   <returntype>
        <array><valuetype><string/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='877'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='877'/>
<p>    Set/get layer mode. Mode is one of these:</p>

<p><dl compact='compact'>
<dt><i>The variables in the expression:</i></dt>
<dt>L</dt><dd><i>The active layer</i></dd>
<dt>S</dt><dd><i>The source layer (the sum of the layers below)</i></dd>
<dt>D</dt><dd><i>The destintion layer (the result)</i></dd>
<dt>Xrgb</dt><dd><i>Layer red (<b>Xr</b>), green (<b>Xg</b>) or blue channel (<b>Xb</b>) </i></dd>
<dt>Xhsv</dt><dd><i>Layer hue (<b>Xh</b>), saturation (<b>Xs</b>) or value channel (<b>Xv</b>) (virtual channels)</i></dd>
<dt>Xhls</dt><dd><i>Layer hue (<b>Xh</b>), lightness channel (<b>Xl</b>) or saturation (<b>Xs</b>) (virtual channels)</i></dd>
<dt>aX</dt><dd><i>Layer alpha, channel in layer alpha</i></dd>
</dl>
<i>All channels are calculated separately, if nothing else is specified.</i>
<table cellpadding='1' cellspacing='0'><tr><td colspan='2' align='left'><b>top layer</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.1.jpeg' width='480' height='80'>layers.c.0.jpeg</image></td><td valign='center' align='left'/></tr>
<tr><td colspan='2' align='left'><b>bottom layer</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.2.jpeg' width='480' height='80'>layers.c.1.jpeg</image></td><td valign='center' align='left'/></tr>
<tr><td colspan='2' align='left'><b>normal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.3.jpeg' width='480' height='80'>layers.c.2.jpeg</image></td><td valign='center' align='left'>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 colspan='2' align='left'><b>add</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.4.jpeg' width='480' height='80'>layers.c.3.jpeg</image></td><td valign='center' align='left'>D=L+S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>subtract</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.5.jpeg' width='480' height='80'>layers.c.4.jpeg</image></td><td valign='center' align='left'>D=S-L applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>multiply</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.6.jpeg' width='480' height='80'>layers.c.5.jpeg</image></td><td valign='center' align='left'>D=S*L applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>divide</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.7.jpeg' width='480' height='80'>layers.c.6.jpeg</image></td><td valign='center' align='left'>D=S/L applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>negdivide</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.8.jpeg' width='480' height='80'>layers.c.7.jpeg</image></td><td valign='center' align='left'>D=1.0-S/L applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>modulo</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.9.jpeg' width='480' height='80'>layers.c.8.jpeg</image></td><td valign='center' align='left'>D=S%L applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>invsubtract</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.10.jpeg' width='480' height='80'>layers.c.9.jpeg</image></td><td valign='center' align='left'>D=L-S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>invdivide</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.11.jpeg' width='480' height='80'>layers.c.10.jpeg</image></td><td valign='center' align='left'>D=L/S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>invmodulo</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.12.jpeg' width='480' height='80'>layers.c.11.jpeg</image></td><td valign='center' align='left'>D=L%S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>imultiply</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.13.jpeg' width='480' height='80'>layers.c.12.jpeg</image></td><td valign='center' align='left'>D=(1-L)*S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>idivide</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.14.jpeg' width='480' height='80'>layers.c.13.jpeg</image></td><td valign='center' align='left'>D=S/(1-L) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>invidivide</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.15.jpeg' width='480' height='80'>layers.c.14.jpeg</image></td><td valign='center' align='left'>D=L/(1-S) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>difference</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.16.jpeg' width='480' height='80'>layers.c.15.jpeg</image></td><td valign='center' align='left'>D=abs(L-S) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>max</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.17.jpeg' width='480' height='80'>layers.c.16.jpeg</image></td><td valign='center' align='left'>D=max(L,S) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>min</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.18.jpeg' width='480' height='80'>layers.c.17.jpeg</image></td><td valign='center' align='left'>D=min(L,S) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>bitwise_and</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.19.jpeg' width='480' height='80'>layers.c.18.jpeg</image></td><td valign='center' align='left'>D=L&amp;amp;S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>bitwise_or</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.20.jpeg' width='480' height='80'>layers.c.19.jpeg</image></td><td valign='center' align='left'>D=L|S applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>bitwise_xor</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.21.jpeg' width='480' height='80'>layers.c.20.jpeg</image></td><td valign='center' align='left'>D=L^S applied with alpha, aD=aS</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>replace</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.22.jpeg' width='480' height='80'>layers.c.21.jpeg</image></td><td valign='center' align='left'>D=(L*aL+S*(1-aL)*aS) / (aL+(1-aL)*aS), aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>red</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.23.jpeg' width='480' height='80'>layers.c.22.jpeg</image></td><td valign='center' align='left'>Dr=(Lr*aLr+Sr*(1-aLr)*aSr) / (aLr+(1-aLr)*aSr), Dgb=Sgb, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>green</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.24.jpeg' width='480' height='80'>layers.c.23.jpeg</image></td><td valign='center' align='left'>Dg=(Lg*aLg+Sg*(1-aLg)*aSg) / (aLg+(1-aLg)*aSg), Drb=Srb, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>blue</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.25.jpeg' width='480' height='80'>layers.c.24.jpeg</image></td><td valign='center' align='left'>Db=(Lb*aLb+Sb*(1-aLb)*aSb) / (aLb+(1-aLb)*aSb), Drg=Srg, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hardlight</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.26.jpeg' width='480' height='80'>layers.c.25.jpeg</image></td><td valign='center' align='left'>Like photoshop hardlight layer mode, aD=aS</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>replace_hsv</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.27.jpeg' width='480' height='80'>layers.c.26.jpeg</image></td><td valign='center' align='left'>Dhsv=Lhsv apply with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hue</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.28.jpeg' width='480' height='80'>layers.c.27.jpeg</image></td><td valign='center' align='left'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>saturation</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.29.jpeg' width='480' height='80'>layers.c.28.jpeg</image></td><td valign='center' align='left'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>value</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.30.jpeg' width='480' height='80'>layers.c.29.jpeg</image></td><td valign='center' align='left'>Dv=Lv apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>color</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.31.jpeg' width='480' height='80'>layers.c.30.jpeg</image></td><td valign='center' align='left'>Dhs=Lhs apply with alpha, Dv=Lv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>value_mul</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.32.jpeg' width='480' height='80'>layers.c.31.jpeg</image></td><td valign='center' align='left'>Dv=Lv*Sv apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>darken</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.33.jpeg' width='480' height='80'>layers.c.32.jpeg</image></td><td valign='center' align='left'>Dv=min(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>lighten</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.34.jpeg' width='480' height='80'>layers.c.33.jpeg</image></td><td valign='center' align='left'>Dv=max(Lv,Sv) apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>saturate</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.35.jpeg' width='480' height='80'>layers.c.34.jpeg</image></td><td valign='center' align='left'>Ds=max(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>desaturate</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.36.jpeg' width='480' height='80'>layers.c.35.jpeg</image></td><td valign='center' align='left'>Ds=min(Ls,Ss) apply with alpha, Dhv=Lhv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_replace</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.37.jpeg' width='480' height='80'>layers.c.36.jpeg</image></td><td valign='center' align='left'>Dhls=Lhls apply with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_hue</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.38.jpeg' width='480' height='80'>layers.c.37.jpeg</image></td><td valign='center' align='left'>Dh=Lh apply with alpha, Dsv=Lsv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_saturation</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.39.jpeg' width='480' height='80'>layers.c.38.jpeg</image></td><td valign='center' align='left'>Ds=Ls apply with alpha, Dhv=Lhv, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_lightness</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.40.jpeg' width='480' height='80'>layers.c.39.jpeg</image></td><td valign='center' align='left'>Dl=Ll apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_color</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.41.jpeg' width='480' height='80'>layers.c.40.jpeg</image></td><td valign='center' align='left'>Dhs=Lhs apply with alpha, Dl=Ll, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_lightness_mul</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.42.jpeg' width='480' height='80'>layers.c.41.jpeg</image></td><td valign='center' align='left'>Dl=Ll*Sl apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_darken</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.43.jpeg' width='480' height='80'>layers.c.42.jpeg</image></td><td valign='center' align='left'>Dl=min(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_lighten</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.44.jpeg' width='480' height='80'>layers.c.43.jpeg</image></td><td valign='center' align='left'>Dl=max(Ll,Sl) apply with alpha, Dhs=Lhs, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_saturate</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.45.jpeg' width='480' height='80'>layers.c.44.jpeg</image></td><td valign='center' align='left'>Ds=max(Ls,Ss) apply with alpha, Dhl=Lhl, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>hls_desaturate</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.46.jpeg' width='480' height='80'>layers.c.45.jpeg</image></td><td valign='center' align='left'>Ds=min(Ls,Ss) apply with alpha, Dhl=Lhl, aD=aS</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>dissolve</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.47.jpeg' width='480' height='80'>layers.c.46.jpeg</image></td><td valign='center' align='left'>i=random 0 or 1, D=i?L:S, aD=i+aS</td></tr>
<tr><td colspan='2' align='left'><b>behind</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.48.jpeg' width='480' height='80'>layers.c.47.jpeg</image></td><td valign='center' align='left'>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 colspan='2' align='left'><b>erase</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.49.jpeg' width='480' height='80'>layers.c.48.jpeg</image></td><td valign='center' align='left'>D=S, aD=aS*(1-aL)</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>screen</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.50.jpeg' width='480' height='80'>layers.c.49.jpeg</image></td><td valign='center' align='left'>1-(1-S)*(1-L) applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>overlay</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.51.jpeg' width='480' height='80'>layers.c.50.jpeg</image></td><td valign='center' align='left'>(1-(1-a)*(1-b)-a*b)*a+a*b applied with alpha, aD=aS</td></tr>
<tr><td colspan='2' align='left'><b>burn_alpha</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.52.jpeg' width='480' height='80'>layers.c.51.jpeg</image></td><td valign='center' align='left'>aD=aL+aS applied with alpha, D=L+S; experimental, may change or be removed</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.53.jpeg' width='480' height='80'>layers.c.52.jpeg</image></td><td valign='center' align='left'>each channel D=max if L==S, 0 otherwise, apply with alpha</td></tr>
<tr><td colspan='2' align='left'><b>not_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.54.jpeg' width='480' height='80'>layers.c.53.jpeg</image></td><td valign='center' align='left'>each channel D=max if L!=S, 0 otherwise, apply with alpha</td></tr>
<tr><td colspan='2' align='left'><b>less</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.55.jpeg' width='480' height='80'>layers.c.54.jpeg</image></td><td valign='center' align='left'>each channel D=max if L&lt;S, 0 otherwise, apply with alpha</td></tr>
<tr><td colspan='2' align='left'><b>more</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.56.jpeg' width='480' height='80'>layers.c.55.jpeg</image></td><td valign='center' align='left'>each channel D=max if L&gt;S, 0 otherwise, apply with alpha</td></tr>
<tr><td colspan='2' align='left'><b>less_or_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.57.jpeg' width='480' height='80'>layers.c.56.jpeg</image></td><td valign='center' align='left'>each channel D=max if L&lt;=S, 0 otherwise, apply with alpha</td></tr>
<tr><td colspan='2' align='left'><b>more_or_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.58.jpeg' width='480' height='80'>layers.c.57.jpeg</image></td><td valign='center' align='left'>each channel D=max if L&gt;=S, 0 otherwise, apply with alpha</td></tr>
<tr><td> </td></tr><tr><td colspan='2' align='left'><b>logic_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.59.jpeg' width='480' height='80'>layers.c.58.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if L==S, black and transparent otherwise</td></tr>
<tr><td colspan='2' align='left'><b>logic_not_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.60.jpeg' width='480' height='80'>layers.c.59.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if any L!=S, black and transparent otherwise</td></tr>
<tr><td colspan='2' align='left'><b>logic_strict_less</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.61.jpeg' width='480' height='80'>layers.c.60.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if all L&lt;S, black and transparent otherwise</td></tr>
<tr><td colspan='2' align='left'><b>logic_strict_more</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.62.jpeg' width='480' height='80'>layers.c.61.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if all L&gt;S, black and transparent otherwise</td></tr>
<tr><td colspan='2' align='left'><b>logic_strict_less_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.63.jpeg' width='480' height='80'>layers.c.62.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if all L&lt;=L, black and transparent otherwise</td></tr>
<tr><td colspan='2' align='left'><b>logic_strict_more_equal</b></td></tr><tr><td align='right'><image file='predef.Image.Layer.set_mode.64.jpeg' width='480' height='80'>layers.c.63.jpeg</image></td><td valign='center' align='left'>logic: D=white and opaque if all L&gt;=L, black and transparent otherwise</td></tr>
</table></p>

<p>    <ref resolved='predef::Image.Layer.set_mode'>available_modes</ref>() simply gives an array
    containing the names of these modes.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='877'/>
<p>image and alpha channel must be of the same size,
or canceled.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='cast' homogen-type='method'>
<method name='cast'>
   <returntype>
        <or>
          <mapping><indextype><string/></indextype>
             <valuetype><mixed/></valuetype></mapping><string/></or></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1426'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1426'/>
<p>([ "xsize":int,
   "ysize":int,
   "image":image,
   "alpha":image,
   "xoffset":int,
   "yoffset":int,
   "fill":image,
   "fill_alpha":image
   "tiled":int,
   "mode":string
])</p>
</text>

</doc>
</docgroup>

<docgroup homogen-name='clone' homogen-type='method'>
<method name='clone'>
   <returntype><object resolved='predef::Image.Layer.clone'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3071'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3071'/>
<p>Creates a copy of the called object.</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3071'/>
<p>the copy</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='create' homogen-type='method'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='image'><type><object resolved='predef::Image.Layer.create'/></type></argument>
<argument name='alpha'><type><object resolved='predef::Image.Layer.create'/></type></argument>
<argument name='mode'><type><string/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='info'><type><mapping/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>
<argument name='color'><type><object resolved='predef::Image.Layer.create'/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='color'><type><object resolved='predef::Image.Layer.create'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1272'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1272'/>
<p>The Layer construct either three arguments,
the image object, alpha channel and mode, or
a mapping with optional elements:
<pre>
"image":image,
        // default: black
 
"alpha":alpha,
        // alpha channel object
        // default: full opaque
 
"mode":string mode,
        // layer mode, see <ref resolved='predef::Image.Layer.create.mode'>mode</ref>.
        // default: "normal"
 
"alpha_value":float(0.0-1.0),
        // layer general alpha value
        // default is 1.0; this is multiplied
        // with the alpha channel.
 
"xoffset":int,
"yoffset":int,
        // offset of this layer
 
"fill":Color,
"fill_alpha":Color,
        // fill color, ie what color is used
        // "outside" the image. default: black
        // and black (full transparency).
 
"tiled":int(0|1),
        // select tiling; if 1, the image
        // will be tiled. deafult: 0, off
</pre>
The layer can also be created "empty",
either giving a size and color -
this will give a filled opaque square,
or a color, which will set the "fill"
values and fill the whole layer with an
opaque color.</p>

<p>All values can be modified after object creation.
</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1272'/>
<p>image and alpha channel must be of the same size.
</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='crop' homogen-type='method'>
<method name='crop'>
   <returntype><object resolved='predef::Image.Layer.crop'/></returntype>
   <arguments><argument name='xoff'><type><int/></type></argument>
<argument name='yoff'><type><int/></type></argument>
<argument name='xsize'><type><int/></type></argument>
<argument name='ysize'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3083'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3083'/>
<p>Crops this layer at this offset and size.
Offset is not relative the layer offset, so this
can be used to crop a number of layers simuntaneously.</p>

<p>The <ref resolved='predef::Image.Layer.set_fill'>fill</ref> values are used if the layer is
enlarged.</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3083'/>
<p>a new layer object</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='3083'/>
<p>The new layer object may have the same image object,
if there was no cropping to be done.</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-name='description' homogen-type='method'>
<method name='description'>
   <returntype>
        <array><valuetype><string/></valuetype></array></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1121'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1121'/>
<p>Layer descriptions</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_fill'>
   <returntype><object resolved='predef::Image.Layer.set_fill'/></returntype>
   <arguments><argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='set_fill'>
   <returntype><object resolved='predef::Image.Layer.set_fill'/></returntype>
   <arguments><argument name='color'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>
<argument name='alpha'><type>
   <object resolved='predef::Image.Color'>Color</object></type></argument>

   </arguments>
</method><method name='fill'>
   <returntype><object resolved='predef::Image.Layer.set_fill'/></returntype>
   <arguments>
   </arguments>
</method><method name='fill_alpha'>
   <returntype><object resolved='predef::Image.Layer.set_fill'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1136'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1136'/>
<p>Set/query fill color and alpha, ie the color used "outside" the
image. This is mostly useful if you want to "frame"
a layer.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_misc_value'>
   <returntype><mixed/></returntype>
   <arguments><argument name='mixedwhat'><type>
   <object resolved='predef::Image.Layer.set_misc_value'/></type></argument>
<argument name='mixedto'><type>
   <object resolved='predef::Image.Layer.set_misc_value'/></type></argument>

   </arguments>
</method><method name='get_misc_value'>
   <returntype><mixed/></returntype>
   <arguments><argument name='mixedwhat'><type>
   <object resolved='predef::Image.Layer.set_misc_value'/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='813'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='813'/>
<p>Set or query misc. attributes for the layer.</p>

<p>As an example, the XCF and PSD image decoders set the 'name' attribute
to the name the layer had in the source file.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_offset'>
   <returntype><object resolved='predef::Image.Layer.set_offset'/></returntype>
   <arguments><argument name='x'><type><int/></type></argument>
<argument name='y'><type><int/></type></argument>

   </arguments>
</method><method name='xoffset'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='yoffset'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1204'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1204'/>
<p>Set/query layer offset.
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='set_tiled'>
   <returntype><object resolved='predef::Image.Layer.set_tiled'/></returntype>
   <arguments><argument name='yes'><type><int/></type></argument>

   </arguments>
</method><method name='tiled'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1248'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1248'/>
<p>Set/query <i>tiled</i> flag. If set, the
image and alpha channel will be tiled rather
then framed by the <ref resolved='predef::Image.Layer.set_fill'>fill</ref> values.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='xsize'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='ysize'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1209'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/layers.c' first-line='1209'/>
<p>Query layer offset. This is the same as layer
image/alpha image size.</p>
</text>

</doc>
</docgroup>

</class>


<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/polyfill.c' first-line='40'/>



<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Image/operator.c' first-line='9'/>


<docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Attempts to decode <ref resolved='predef::Image._decode.data'>data</ref> as image data. The heuristics
 has some limited ability to decode macbinary files as well.</p>
</text></doc>
<method name='_decode'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup><docgroup homogen-name='decode_layers' homogen-type='method'><doc><text><p>Attempts to decode <ref resolved='predef::Image.decode_layers.data'>data</ref> as image layer data. Additional
 arguments to the various formats decode_layers method can
 be passed through <ref resolved='predef::Image.decode_layers.opt'>opt</ref>.</p>
</text></doc>
<method name='decode_layers'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='opt'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Image.Layer'>Image.Layer</object></valuetype></array></returntype>
</method>
</docgroup><docgroup homogen-name='read_file' homogen-type='method'><doc><text><p>Reads the file <ref resolved='predef::Image.read_file.file'>file</ref> and, if the file is compressed
 with gzip or bzip, attempts to decompress it by calling
 <tt>gzip</tt> and <tt>bzip2</tt> in a <ref resolved='predef::Process.create_process'>Process.create_process</ref>
 call.</p>
</text></doc>
<method name='read_file'><source-position first-line='192' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='file'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='load_file' homogen-type='method'><doc><text><p>Loads in a file, which need not be an image file. If no
 argument is given the data will be taken from stdin. If
 a file object is given, it will be read to the end of the
 file. If a string is given the function will first attempt
 to load a file with that name, then try to download data
 with the string as URL. Zero will be returned upon failure.</p>
</text></doc>
<method name='load_file'><source-position first-line='228' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/><modifiers><local/></modifiers>
<arguments><argument name='file'><type><or><void/><object resolved='predef::Image.load_file'/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='_load' homogen-type='method'><doc><text><p>Loads a file with <ref resolved='predef::Image.load_file'>load_file</ref> and decodes it with <ref resolved='predef::Image._decode'>_decode</ref>.</p>
</text></doc>
<method name='_load'><source-position first-line='244' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='file'><type><or><void/><object resolved='predef::Image._load'/><string/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup><docgroup homogen-name='load_layer' homogen-type='method'><doc><text><p>Helper function to load an image layer from a file.
 If no filename is given, Stdio.stdin is used.
 The loaded file is decoded with _decode.</p>
</text></doc>
<method name='load_layer'><source-position first-line='256' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='file'><type><or><void/><object resolved='predef::Image.load_layer'/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
</docgroup><docgroup homogen-name='load_layers' homogen-type='method'><doc><text><p>Helper function to load all image layers from a file.
 If no filename is given, Stdio.stdin is used.
 The loaded file is decoded with decode_layers. Extra
 arguments to the image types layer decoder, e.g. for XCF
 files, can be given in the <ref resolved='predef::Image.load_layers.opts'>opts</ref> mapping.</p>
</text></doc>
<method name='load_layers'><source-position first-line='271' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='file'><type><or><void/><object resolved='predef::Image.load_layers'/><string/></or></type></argument><argument name='opts'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Image.Layer'>Image.Layer</object></valuetype></array></returntype>
</method>
</docgroup><docgroup homogen-name='load' homogen-type='method'><doc><text><p>Helper function to load an image from a file.
 If no filename is given, Stdio.stdin is used.
 The loaded file is decoded with _decode.</p>
</text></doc>
<method name='load'><source-position first-line='280' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/module.pmod'/>
<arguments><argument name='file'><type><or><void/><object resolved='predef::Image.load'/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup><docgroup homogen-type='method'><doc><text><p>Generates a filled circle of the 
	dimensions xd x yd (or d x d).
	The Image is a white circle on black background; the layer
	function defaults to a white circle (the background is transparent).</p>
</text></doc>
<method name='filled_circle'>
<arguments><argument name='d'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
<method name='filled_circle'>
<arguments><argument name='xd'><type><int/></type></argument><argument name='yd'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='d'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='xd'><type><int/></type></argument><argument name='yd'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='d'><type><int/></type></argument><argument name='color'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='xd'><type><int/></type></argument><argument name='yd'><type><int/></type></argument><argument name='color'><type><object resolved='predef::Image.Color.Color'>Image.Color.Color</object></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='d'><type><int/></type></argument><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
<method name='filled_circle_layer'>
<arguments><argument name='xd'><type><int/></type></argument><argument name='yd'><type><int/></type></argument><argument name='r'><type><int/></type></argument><argument name='g'><type><int/></type></argument><argument name='b'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Image.Layer'>Image.Layer</object></returntype>
</method>
</docgroup><module name='Fonts'><doc><text><p>Abstracted Font-handling support. Should be used instead of
 accessing the FreeType, TTF and Image.Font modules directly.</p>
</text></doc>

<class name='Font'><source-position first-line='241' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/><doc><text><p>The abstract Font class. The <ref resolved='predef::Image.Fonts.Font.file'>file</ref> is a valid font-file, <ref resolved='predef::Image.Fonts.Font.size'>size</ref>
 is in pixels, but the size of the characters to be rendered, not
 the height of the finished image (the image is generally speaking
 bigger then the size of the characters).</p>
</text></doc><docgroup><doc>
</doc>
<variable name='file'><modifiers><static/></modifiers><type><string/></type></variable>
<variable name='size'><modifiers><static/></modifiers><type><int/></type></variable>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='file'><type><string/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_fake_bold' homogen-type='method'><doc><text><p>The amount of 'boldness' that should be added to the font when
 text is rendered.</p>
</text></doc>
<method name='set_fake_bold'><source-position first-line='318' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='fb'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_fake_italic' homogen-type='method'><doc><text><p>If true, make the font italic.</p>
</text></doc>
<method name='set_fake_italic'><source-position first-line='325' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='fi'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='text_extents' homogen-type='method'><doc><text><p>Returns ({ xsize, ysize }) of the image that will result if
 <ref resolved='predef::Image.Fonts.Font.text_extents.lines'>lines</ref> is sent as the argument to <ref resolved='predef::Image.Fonts.Font.write'>write</ref>.</p>
</text></doc>
<method name='text_extents'><source-position first-line='331' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='lines'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='info' homogen-type='method'><doc><text><p>Returns some information about the font.
 Always included:
  file: Filename specified when the font was opened
  size: Size specified when the font was opened
  family: Family name
  style: Bitwise or of the style flags, i.e. <ref resolved='predef::Image.Fonts.ITALIC'>ITALIC</ref> and <ref resolved='predef::Image.Fonts.BOLD'>BOLD</ref>.</p>
</text></doc>
<method name='info'><source-position first-line='344' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Render the text strings sent as line as an alpha-channel image.</p>
</text></doc>
<method name='write'><source-position first-line='363' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='line'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='ITALIC'><doc><text><p>The font is/should be italic</p>
</text></doc>
<constant name='ITALIC'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='BOLD'><doc><text><p>The font is/should be bold</p>
</text></doc>
<constant name='BOLD'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='NO_FAKE'><doc><text><p>Used in <ref resolved='predef::Image.Fonts.open_font'>open_font</ref>() to specify that no fake bold or italic
 should be attempted.</p>
</text></doc>
<constant name='NO_FAKE'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/></constant>
</docgroup>
<docgroup homogen-name='open_font' homogen-type='method'><doc><text><p>Find a suitable font in the directories specified with
 <ref resolved='predef::Image.Fonts.set_font_dirs'>set_font_dirs</ref>.</p>
<p> <ref resolved='predef::Image.Fonts.open_font.flags'>flags</ref> is a bitwise or of 0 or more of <ref resolved='predef::Image.Fonts.ITALIC'>ITALIC</ref>, <ref resolved='predef::Image.Fonts.BOLD'>BOLD</ref> and
 <ref resolved='predef::Image.Fonts.NO_FAKE'>NO_FAKE</ref>.</p>
<p> <ref resolved='predef::Image.Fonts.open_font.fontname'>fontname</ref> is the human-readable name of the font.</p>
<p> If <ref resolved='predef::Image.Fonts.open_font.force'>force</ref> is true, a font is always returned (defaulting to arial
 or the pike builtin font), even if no suitable font is found.</p>
</text></doc>
<method name='open_font'><source-position first-line='407' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='fontname'><type><string/></type></argument><argument name='size'><type><int/></type></argument><argument name='flags'><type><int/></type></argument><argument name='force'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Image.Fonts.Font'>Font</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_fonts' homogen-type='method'><doc><text><p>Returns a list of all the fonts as a mapping.</p>
</text></doc>
<method name='list_fonts'><source-position first-line='474' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_font_dirs' homogen-type='method'><doc><text><p>Set the directories where fonts can be found.</p>
</text></doc>
<method name='set_font_dirs'><source-position first-line='480' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Fonts.pmod'/>
<arguments><argument name='directories'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</module><module name='Dims'><doc><text><p>Reads the dimensions of images of various image formats without
 decoding the actual image.</p>
</text></doc><docgroup homogen-name='get_JPEG' homogen-type='method'><doc><text><p>Reads the dimensions from a JPEG file and returns an array with
 width and height, or if the file isn't a valid image, 0.</p>
</text></doc>
<method name='get_JPEG'><source-position first-line='112' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Dims.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_GIF' homogen-type='method'><doc><text><p>Reads the dimensions from a GIF file and returns an array with
 width and height, or if the file isn't a valid image, 0.</p>
</text></doc>
<method name='get_GIF'><source-position first-line='173' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Dims.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_PNG' homogen-type='method'><doc><text><p>Reads the dimensions from a PNG file and returns an array with
 width and height, or if the file isn't a valid image, 0.</p>
</text></doc>
<method name='get_PNG'><source-position first-line='186' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Dims.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_TIFF' homogen-type='method'><doc><text><p>Reads the dimensions from a TIFF file and returns an array with
 width and height, or if the file isn't a valid image, 0.</p>
</text></doc>
<method name='get_TIFF'><source-position first-line='203' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Dims.pmod'/>
<arguments><argument name='f'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Read dimensions from a JPEG, GIF, PNG or TIFF file and return an array with
 width and height, or if the file isn't a valid image, 0. The argument
 <ref resolved='predef::Image.Dims.get.file'>file</ref> should be either a path to a file or a file object. The offset
 pointer will be assumed to be at the start of the file and will be
 modified by the function.</p>
</text></doc>
<method name='get'><source-position first-line='310' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image.pmod/Dims.pmod'/>
<arguments><argument name='file'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
</module><module name='PSD'><docgroup homogen-name='__decode' homogen-type='method'><doc><text><p>Decodes a PSD image to a mapping, defined as follows.</p>
<mapping><group><member><type><int><min>1</min><max>24</max></int></type><index>"channels"</index></member><text><p>The number of channels in the image, including any alpha channels.</p>
</text></group><group><member><type><int><min>1</min><max>30000</max></int></type><index>"height"</index></member><member><type><int><min>1</min><max>30000</max></int></type><index>"width"</index></member><text><p>The image dimensions.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"compression"</index></member><text><p>1 if the image is compressed, 0 if not.</p>
</text></group><group><member><type><or><int><min>1</min><max>1</max></int><int><min>8</min><max>8</max></int><int><min>16</min><max>16</max></int></or></type><index>"depth"</index></member><text><p>The number of bits per channel.</p>
</text></group><group><member><type><or><int><min>0</min><max>4</max></int><int><min>7</min><max>9</max></int></or></type><index>"mode"</index></member><text><p>The color mode of the file.</p>
<int><group><value>0</value><text><p>Bitmap</p>
</text></group><group><value>1</value><text><p>Greyscale</p>
</text></group><group><value>2</value><text><p>Indexed</p>
</text></group><group><value>3</value><text><p>RGB</p>
</text></group><group><value>4</value><text><p>CMYK</p>
</text></group><group><value>7</value><text><p>Multichannel</p>
</text></group><group><value>8</value><text><p>Duotone</p>
</text></group><group><value>9</value><text><p>Lab</p>
</text></group></int></text></group><group><member><type><string/></type><index>"color_data"</index></member><text><p>Raw color data.</p>
</text></group><group><member><type><string/></type><index>"image_data"</index></member><text><p>Ram image data.</p>
</text></group><group><member><type><mapping><indextype><or><string/><int/></or></indextype><valuetype><mixed/></valuetype></mapping></type><index>"resources"</index></member><text><p>Additional image data. Se mappping below.</p>
</text></group><group><member><type><array><valuetype><mapping/></valuetype></array></type><index>"layers"</index></member><text><p>An array with the layers of the image. See mapping below.</p>
</text></group></mapping><p>The resources mapping. Unknown resources will be identified
 by their ID number (as an int).</p>
<mapping><group><member><type><string/></type><index>"caption"</index></member><text><p>Image caption.</p>
</text></group><group><member><type><string/></type><index>"url"</index></member><text><p>Image associated URL.</p>
</text></group><group><member><type><int/></type><index>"active_layer"</index></member><text><p>Which layer is active.</p>
</text></group><group><member><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></valuetype></array></type><index>"guides"</index></member><text><p>An array with all guides stored in the image file.</p>
<mapping><group><member><type><int/></type><index>"pos"</index></member><text><p>The position of the guide.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"vertical"</index></member><text><p>1 if the guide is vertical, 0 if it is horizontal.</p>
</text></group></mapping></text></group><group><member><type><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></type><index>"resinof"</index></member><text><p>Resolution information</p>
<mapping><group><member><type><int/></type><index>"hres"</index></member><member><type><int/></type><index>"hres_unit"</index></member><member><type><int/></type><index>"width_unit"</index></member><member><type><int/></type><index>"vres"</index></member><member><type><int/></type><index>"vres_unit"</index></member><member><type><int/></type><index>"height_unit"</index></member><text><p>FIXME: Document these.</p>
</text></group></mapping></text></group></mapping><p>The layer mapping:</p>
<mapping><group><member><type><int/></type><index>"top"</index></member><member><type><int/></type><index>"left"</index></member><member><type><int/></type><index>"right"</index></member><member><type><int/></type><index>"bottom"</index></member><text><p>The rectangle containing the contents of the layer.</p>
</text></group><group><member><type><int/></type><index>"mask_top"</index></member><member><type><int/></type><index>"mask_left"</index></member><member><type><int/></type><index>"mask_right"</index></member><member><type><int/></type><index>"mask_bottom"</index></member><member><type><int/></type><index>"mask_flags"</index></member><text><p>FIXME: Document these</p>
</text></group><group><member><type><int><min>0</min><max>255</max></int></type><index>"opacity"</index></member><text><p>0=transparent, 255=opaque.</p>
</text></group><group><member><type><int/></type><index>"clipping"</index></member><text><p>0=base, 1=non-base.</p>
</text></group><group><member><type><int/></type><index>"flags"</index></member><text><p>bit 0=transparency protected
     bit 1=visible</p>
</text></group><group><member><type><string/></type><index>"mode"</index></member><text><p>Blend mode.</p>
<string><group><value>"norm"</value><text><p>Normal</p>
</text></group><group><value>"dark"</value><text><p>Darken</p>
</text></group><group><value>"lite"</value><text><p>Lighten</p>
</text></group><group><value>"hue "</value><text><p>Hue</p>
</text></group><group><value>"sat "</value><text><p>Saturation</p>
</text></group><group><value>"colr"</value><text><p>Color</p>
</text></group><group><value>"lum "</value><text><p>Luminosity</p>
</text></group><group><value>"mul "</value><text><p>Multiply</p>
</text></group><group><value>"scrn"</value><text><p>Screen</p>
</text></group><group><value>"diss"</value><text><p>Dissolve</p>
</text></group><group><value>"over"</value><text><p>Overlay</p>
</text></group><group><value>"hLit"</value><text><p>Hard light</p>
</text></group><group><value>"sLit"</value><text><p>Soft light</p>
</text></group><group><value>"diff"</value><text><p>Difference</p>
</text></group></string></text></group><group><member><type><string/></type><index>"extra_data"</index></member><text><p>Raw extra data.</p>
</text></group><group><member><type><string/></type><index>"name"</index></member><text><p>The name of the layer</p>
</text></group><group><member><type><array><valuetype><mapping><indextype><string/></indextype><valuetype><or><int/><string/></or></valuetype></mapping></valuetype></array></type><index>"channels"</index></member><text><p>The channels of the layer. Each array element is a
     mapping as follows</p>
<mapping><group><member><type><int/></type><index>"id"</index></member><text><p>The ID of the channel</p>
<int><group><value>-2</value><text><p>User supplied layer mask</p>
</text></group><group><value>-1</value><text><p>Transparency mask</p>
</text></group><group><value>0</value><text><p>Red</p>
</text></group><group><value>1</value><text><p>Green</p>
</text></group><group><value>2</value><text><p>Blue</p>
</text></group></int></text></group><group><member><type><string/></type><index>"data"</index></member><text><p>The image data</p>
</text></group></mapping></text></group></mapping>
</text></doc>
<method name='__decode'>
<arguments><argument name='data'><type><or><string/><mapping/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode_layers' homogen-type='method'><doc><text><p>Decodes a PSD image to an array of Image.Layer objects</p>
<p> Takes the same aptions mapping as <ref resolved='predef::Image.PSD._decode'>_decode</ref>, note especially 
 "draw_all_layers":1, but implements "crop_to_bounds" which preserves
 the bounding box for the whole image (i.e. discards data that extend
 outside of the global bounds).</p>
<p> The layer object have the following extra variables (to be queried
 using <ref resolved='predef::Image.Layer.set_misc_value'>Image.Layer()-&gt;get_misc_value</ref>):</p>
<string><group><value>"image_guides"</value><text><p>Returns array containing guide definitions.</p>
</text></group><group><value>"name"</value><text><p>Returns string containing the name of the layer.</p>
</text></group><group><value>"visible"</value><text><p>Is 1 of the layer is visible and 0 if it is hidden.</p>
</text></group></string>
</text></doc>
<method name='decode_layers'>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Image.Layer'>Image.Layer</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Decodes a PSD image to a mapping, with at least an
 'image' and possibly an 'alpha' object. Data is either a PSD image, or
 a mapping (as received from <ref resolved='predef::Image.PSD.__decode'>__decode</ref>)</p>
</text><group><param name='options'/><text><mapping><group><member><type><or><array><valuetype><int/></valuetype></array><object resolved='predef::Image.Color'>Image.Color</object></or></type><index>"background"</index></member><text><p>Sets the background to the given color. Arrays should be in
     the format ({r,g,b}).</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"draw_all_layers"</index></member><text><p>Draw invisible layers as well.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"draw_guides"</index></member><text><p>Draw the guides.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"draw_selection"</index></member><text><p>Mark the selection using an overlay.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"ignore_unknown_layer_modes"</index></member><text><p>Do not asume 'Normal' for unknown layer modes.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"mark_layers"</index></member><text><p>Draw an outline around all (drawn) layers.</p>
</text></group><group><member><type><object resolved='predef::Image.Font'>Image.Font</object></type><index>"mark_layer_names"</index></member><text><p>Write the name of all layers using the font object,</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"mark_active_layer"</index></member><text><p>Draw an outline around the active layer</p>
</text></group></mapping>
</text></group><group><returns/><text><mapping><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"image"</index></member><text><p>The image object.</p>
</text></group><group><member><type><object resolved='predef::Image.Image'>Image.Image</object></type><index>"alpha"</index></member><text><p>The alpha channel image object.</p>
</text></group></mapping>
</text></group><group><note/><text><p>Throws upon error in data. For more information, see <ref resolved='predef::Image.PSD.__decode'>__decode</ref></p>
</text></group></doc>
<method name='_decode'>
<arguments><argument name='data'><type><or><string/><mapping/></or></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes a PSD image to a single image object.</p>
</text><group><note/><text><p>Throws upon error in data. To get access to more information like
   alpha channels and layer names, see <ref resolved='predef::Image.PSD._decode'>_decode</ref> and <ref resolved='predef::Image.PSD.__decode'>__decode</ref>.</p>
</text></group></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</module><module name='DWG'><doc><text><p>This module decodes the thumbnail raster images embedded in
 AutoCAD DWG files for AutoCAD version R13, R14 and R2000 (which
 equals to file version 12, 14 and 15). Implemented according to
 specifications from <url>http://www.opendwg.org/</url>.</p>
</text></doc><docgroup homogen-name='__decode' homogen-type='method'><doc><text><p>Decodes the DWG <ref resolved='predef::Image.DWG.__decode.data'>data</ref> into a mapping.</p>
<mapping><group><member><type><int/></type><index>"version"</index></member><text><p>The version of the DWG file. One of 12, 14 and 15.</p>
</text></group><group><member><type><array><valuetype><string/></valuetype></array></type><index>"bmp"</index></member><text><p>An array with the raw BMP data.</p>
</text></group><group><member><type><array><valuetype><string/></valuetype></array></type><index>"wmf"</index></member><text><p>An array with the raw WMF data.</p>
</text></group></mapping>
</text><group><throws/><text><p>This functions throws an error when decoding somehow fails.</p>
</text></group></doc>
<method name='__decode'><source-position first-line='32' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_DWG.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Works like <ref resolved='predef::Image.DWG.__decode'>__decode</ref>, but in addition it has the element
 <tt>"image"</tt> in the result mapping, containing the first
 successfully decoded bitmap image. to the result of decode(data).</p>
</text><group><throws/><text><p>If no preview was stored, or no preview could be decoded an
   error is thrown.</p>
</text></group></doc>
<method name='_decode'><source-position first-line='117' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_DWG.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Returns the first successfully decoded bitmap image.</p>
</text><group><throws/><text><p>If no preview was stored, or no preview could be decoded an
   error is thrown.</p>
</text></group></doc>
<method name='decode'><source-position first-line='127' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_DWG.pmod'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
</module><module name='PS'><doc><text><p>Codec for the Adobe page description language PostScript.
 Uses Ghostscript for decoding or built-in support.</p>
</text></doc><docgroup homogen-name='decode' homogen-type='method'><doc><text><p>Decodes the postscript <ref resolved='predef::Image.PS.decode.data'>data</ref> into an image object
 using Ghostscript.</p>
</text><group><param name='options'/><text><p>Optional decoding parameters.</p>
<mapping><group><member><type><int/></type><index>"dpi"</index></member><text><p>The resolution the image should be rendered in.
       Defaults to 100.</p>
</text></group><group><member><type><string/></type><index>"device"</index></member><text><p>The selected Ghostscript device. Defaults to "ppmraw".</p>
</text></group><group><member><type><string/></type><index>"binary"</index></member><text><p>Path to the Ghostscript binary to be used. If missing
       the environment paths will be searched for a file "gs"
       to be used instead.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"force_gs"</index></member><text><p>Forces use of Ghostscript for EPS files instead
	   of Pikes native support.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"eps_crop"</index></member><text><p>Use -dEPSCrop option to Ghostscript to crop the
	   BoundingBox for a EPS file.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"cie_color"</index></member><text><p>Use -dUseCIEColor option to Ghostscript for
	   mapping color values through a CIE color space.</p>
</text></group></mapping>
</text></group></doc>
<method name='decode'><source-position first-line='39' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_PS.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::Image.PS.decode'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_decode' homogen-type='method'><doc><text><p>Calls decode and returns the image in the "image"
 index of the mapping. This method is present for
 API reasons.</p>
</text></doc>
<method name='_decode'><source-position first-line='182' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_PS.pmod'/>
<arguments><argument name='data'><type><string/></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='encode' homogen-type='method'><doc><text><p>Encodes the image object <ref resolved='predef::Image.PS.encode.img'>img</ref> as a postscript 3.0 file.</p>
</text><group><param name='options'/><text><p>Optional extra encoding parameters.</p>
<mapping><group><member><type><int/></type><index>"dpi"</index></member><text><p>The resolution of the encoded image. Defaults to 100.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"eps"</index></member><text><p>If the resulting image should be an eps instead of ps.
       Defaults to 0, no.</p>
</text></group></mapping>
</text></group></doc>
<method name='encode'><source-position first-line='199' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_PS.pmod'/>
<arguments><argument name='img'><type><object resolved='predef::Image.PS.encode'/></type></argument><argument name='options'><type><or><mapping/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='variable' homogen-name='_encode'><doc><text><p>Same as encode. Present for API reasons.</p>
</text></doc>
<variable name='_encode'><source-position first-line='229' file='/home/peter/hack/Pike/7.6-distmaker/lib/modules/_Image_PS.pmod'/><type><function/></type></variable>
</docgroup>
</module></module>



<module name='Nettle'>

<class name='HashInfo'><doc><text><p>Represents information about a hash algorithm, such as
 name, digest size, and internal block size.</p>
</text></doc><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/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='digest_size' homogen-type='method'><doc><text><p>Returns the size of a hash digests.</p>
</text></doc>
<method name='digest_size'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='block_size' homogen-type='method'><doc><text><p>Returns the internal block size of the hash algorithm.</p>
</text></doc>
<method name='block_size'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='HashState'><doc><text><p>Base class for hashing contexts.</p>
</text></doc><docgroup homogen-name='update' homogen-type='method'><doc><text><p>Hashes more data.</p>
</text></doc>
<method name='update'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Nettle.HashState'>HashState</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='digest' homogen-type='method'><doc><text><p>Generates a digests, and resets the hashing contents.</p>
</text><group><param name='length'/><text><p>If the length argument is provided, the digest is truncated
   to the given length.</p>
</text></group><group><returns/><text><p>The digest.</p>
</text></group></doc>
<method name='digest'>
<arguments><argument name='length'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='MD5_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with HashInfo.</p>
</text></doc></class>

<class name='MD5_State'><doc><text><p>State for MD5 hashing.</p>
</text></doc></class>

<class name='MD4_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with HashInfo.</p>
</text></doc></class>

<class name='MD4_State'><doc><text><p>State for MD4 hashing.</p>
</text></doc></class>

<class name='MD2_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with HashInfo.</p>
</text></doc></class>

<class name='MD2_State'><doc><text><p>State for MD2 hashing.</p>
</text></doc></class>

<class name='SHA1_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with HashInfo.</p>
</text></doc></class>

<class name='SHA1_State'><doc><text><p>State for SHA1 hashing.</p>
</text></doc></class>

<class name='SHA256_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with HashInfo.</p>
</text></doc></class>

<class name='SHA256_State'><doc><text><p>State for SHA256 hashing.</p>
</text></doc></class><doc><text><p>Low level crypto functions used by the <ref resolved='predef::Crypto'>Crypto</ref> module. Unless
 you are doing something very special, you would want to use the
 Crypto module instead.</p>
</text></doc>

<class name='Yarrow'><doc><text><p>Yarrow is a family of pseudo-randomness generators, designed for
 cryptographic use, by John Kelsey, Bruce Schneier and Niels Ferguson.
 Yarrow-160 is described in a paper at
 <url>http://www.counterpane.com/yarrow.html</url>, and it uses SHA1 and
 triple-DES, and has a 160-bit internal state. Nettle implements
 Yarrow-256, which is similar, but uses SHA256 and AES to get an
 internal state of 256 bits.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>The number of entropy sources that will feed entropy to the
 random number generator is given as an argument to Yarrow
 during instantiation.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.update'>update</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='sources'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='seed' homogen-type='method'><doc><text><p>The random generator needs to be seeded before
 it can be used. The seed must be at least 32
 characters long. The seed could be stored from
 a previous run by inserting the value returned
 from <ref resolved='predef::Nettle.Yarrow.get_seed'>get_seed</ref>.</p>
</text><group><returns/><text><p>Returns the called object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.min_seed_size'>min_seed_size</ref>, <ref resolved='predef::Nettle.Yarrow.get_seed'>get_seed</ref>, <ref resolved='predef::Nettle.Yarrow.is_seeded'>is_seeded</ref></p>
</text></group></doc>
<method name='seed'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Nettle.Yarrow'>Yarrow</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='min_seed_size' homogen-type='method'><doc><text><p>Returns the minimal number of characters that the <ref resolved='predef::Nettle.Yarrow.seed'>seed</ref>
 needs to properly seed the random number generator.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.seed'>seed</ref></p>
</text></group></doc>
<method name='min_seed_size'>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_seed' homogen-type='method'><doc><text><p>Returns part of the internal state so that it can
 be saved for later seeding.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.seed'>seed</ref></p>
</text></group></doc>
<method name='get_seed'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='is_seeded' homogen-type='method'><doc><text><p>Returns 1 if the random generator is seeded and ready
 to generator output. 0 otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.seed'>seed</ref></p>
</text></group></doc>
<method name='is_seeded'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='force_reseed' homogen-type='method'><doc><text><p>By calling this function entropy is moved from the slow
 pool to the fast pool. Read more about Yarrow before using
 this.</p>
</text></doc>
<method name='force_reseed'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='update' homogen-type='method'><doc><text><p>Inject additional entropy into the random number generator.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.Yarrow.create'>create</ref></p>
</text></group></doc>
<method name='update'>
<arguments><argument name='data'><type><string/></type></argument><argument name='source'><type><int/></type></argument><argument name='entropy'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='needed_sources' homogen-type='method'><doc><text><p>The number of sources that must reach the threshold before a
 slow reseed will happen.</p>
</text></doc>
<method name='needed_sources'>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='random_string' homogen-type='method'><doc><text><p>Returns a pseudo-random string of the requested <ref resolved='predef::Nettle.Yarrow.random_string.length'>length</ref>.</p>
</text></doc>
<method name='random_string'>
<arguments><argument name='length'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>



<docgroup homogen-name='crypt_md5' homogen-type='method'><doc><text><p>Does the crypt_md5 abrakadabra (MD5 + snakeoil).
 It is assumed that <ref resolved='predef::Nettle.crypt_md5.salt'>salt</ref> does not contain "$".</p>
</text></doc>
<method name='crypt_md5'>
<arguments><argument name='password'><type><string/></type></argument><argument name='salt'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>


<class name='CipherInfo'><doc><text><p>Represents information about a cipher algorithm, such as
 name, key size, and block size.</p>
</text></doc><docgroup homogen-name='name' homogen-type='method'><doc><group><returns/><text><p>A human readable name for the algorithm.</p>
</text></group></doc>
<method name='name'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='key_size' homogen-type='method'><doc><group><returns/><text><p>The recommended key size for the cipher.</p>
</text></group></doc>
<method name='key_size'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='block_size' homogen-type='method'><doc><group><returns/><text><p>The block size of the cipher (1 for stream ciphers).</p>
</text></group></doc>
<method name='block_size'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='CipherState'><doc><text><p>Base class for hashing contexts.</p>
</text></doc><docgroup homogen-name='set_encrypt_key' homogen-type='method'><doc><text><p>Initializes the object for encryption.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.CipherState.set_decrypt_key'>set_decrypt_key</ref>, <ref resolved='predef::Nettle.CipherState.crypt'>crypt</ref></p>
</text></group></doc>
<method name='set_encrypt_key'>
<arguments><argument name='key'><type><string/></type></argument><argument name='force'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Nettle.CipherState'>CipherState</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_decrypt_key' homogen-type='method'><doc><text><p>Initializes the object for decryption.</p>
</text><group><seealso/><text><p><ref resolved='predef::Nettle.CipherState.set_encrypt_key'>set_encrypt_key</ref>, <ref resolved='predef::Nettle.CipherState.crypt'>crypt</ref></p>
</text></group></doc>
<method name='set_decrypt_key'>
<arguments><argument name='key'><type><string/></type></argument><argument name='force'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Nettle.CipherState'>CipherState</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='make_key' homogen-type='method'><doc><text><p>Generate a key by calling <ref resolved='predef::Crypto.Random.random_string'>Crypto.Random.random_string</ref> and
 initialize this object for encryption with that key.</p>
</text><group><returns/><text><p>The generated key.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Nettle.CipherState.set_encrypt_key'>set_encrypt_key</ref></p>
</text></group></doc>
<method name='make_key'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='crypt' homogen-type='method'><doc><text><p>Encrypts or decrypts data, using the current key.</p>
</text><group><param name='data'/><text><p>For block ciphers, data must be an integral number of blocks.</p>
</text></group><group><returns/><text><p>The encrypted or decrypted data.</p>
</text></group></doc>
<method name='crypt'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='key_size' homogen-type='method'><doc><group><returns/><text><p>The actual key size for this cipher.</p>
</text></group></doc>
<method name='key_size'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='AES_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='AES_State'><doc><text><p>State for AES encyption</p>
</text></doc></class>

<class name='ARCFOUR_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='ARCFOUR_State'><doc><text><p>State for ARCFOUR encyption</p>
</text></doc></class>

<class name='BLOWFISH_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='BLOWFISH_State'><doc><text><p>State for Blowfish encyption</p>
</text></doc></class>

<class name='CAST128_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='CAST128_State'><doc><text><p>State for CAST128 encyption</p>
</text></doc></class>

<class name='DES_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc><docgroup homogen-name='fix_parity' homogen-type='method'><doc><text><p>Sets the last bit in every byte in <ref resolved='predef::Nettle.DES_Info.fix_parity.key'>key</ref> to reflect the parity.
 If a seven byte key is used, it will be expanded into eight
 bytes. If a key longer than eight characters is used, it will
 be truncated to eight characters.</p>
</text></doc>
<method name='fix_parity'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='DES_State'><doc><text><p>State for DES encyption</p>
</text></doc></class>

<class name='DES3_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc><docgroup homogen-name='fix_parity' homogen-type='method'><doc><text><p>Sets the last bit in every byte in <ref resolved='predef::Nettle.DES3_Info.fix_parity.key'>key</ref> to reflect the parity.
 If a 21 byte key is used, it will be expanded into 24
 bytes. If a key longer than 24 characters is used, it will
 be truncated to 24 characters.</p>
</text></doc>
<method name='fix_parity'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='DES3_State'><doc><text><p>State for DES3 encyption</p>
</text></doc></class>

<class name='Serpent_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='Serpent_State'><doc><text><p>State for Serpent encyption</p>
</text></doc></class>

<class name='Twofish_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='Twofish_State'><doc><text><p>State for Twofish encyption</p>
</text></doc></class>

<class name='IDEA_Info'><doc><text><p>Internal mixin class, intended to be multiply inherited
 together with CipherInfo.</p>
</text></doc></class>

<class name='IDEA_State'><doc><text><p>State for IDEA encyption</p>
</text></doc></class></module>





<module name='Unicode'><docgroup homogen-type='method' homogen-name='split_words'><doc><text><p>Splits the input string into an array of words, on the boundaries between
 the different kinds of word characters as defined by <ref resolved='predef::Unicode.is_wordchar'>is_wordchar</ref>. The
 result is an array of words, with the non-word characters between them
 thrown away.</p>
</text></doc>
<method name='split_words'>
<arguments><argument name='input'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='split_words_and_normalize'><doc><text><p>A less wasteful equivalent of <ref resolved='predef::Unicode.split_words'>split_words</ref>(<ref resolved='predef::Unicode.normalize'>normalize</ref>(<ref resolved='predef::Unicode.split_words_and_normalize.input'>input</ref>)).</p>
</text></doc>
<method name='split_words_and_normalize'>
<arguments><argument name='input'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='normalize'><doc><text><p>Normalize the given unicode string according to the specified method.</p>
<p> The methods are:</p>
<p>  NFC, NFD, NFKC and NFKD.</p>
<p> The methods are described in detail in the UAX #15 document, which
 can currently be found at
 http://www.unicode.org/unicode/reports/tr15/tr15-21.html</p>
<p> A short description:</p>
<p> C and D specifies whether to decompose (D) complex characters to
 their parts, or compose (C) single characters to complex ones.</p>
<p> K specifies whether or not do a canonical or compatibility
 conversion. When K is present, compatibility transformations are
 performed as well as the canonical transformations.</p>
<p> <i>In the following text, 'X' denotes the single character 'X', even
  if there is more than one character inside the quotation marks. 
  The reson is that it's somewhat hard to describe unicode in
  iso-8859-1.</i></p>
<p> The Unicode Standard defines two equivalences between characters:
 canonical equivalence and compatibility equivalence. Canonical
 equivalence is a basic equivalency between characters or
 sequences of characters. </p>
<p> 'Å'  and  'A' '° (combining ring above)' are canonically equivalent.</p>
<p> For round-trip compatibility with existing standards, Unicode has
 encoded many entities that are really variants of existing nominal
 characters. The visual representations of these character are
 typically a subset of the possible visual representations of the
 nominal character. These are given compatibility decompositions in
 the standard. Because the characters are visually distinguished,
 replacing a character by a compatibility equivalent may lose
 formatting information unless supplemented by markup or styling.</p>
<p> Examples of compatibility equivalences:</p>
<ul><group><item/><text><p>Font variants (thin, italic, extra wide characters etc)</p>
</text></group><group><item/><text><p>Circled and squared characters</p>
</text></group><group><item/><text><p>super/subscript ('²' -&gt; '2')</p>
</text></group><group><item/><text><p>Fractions       ('½' -&gt; '1/2')</p>
</text></group><group><item/><text><p>Other composed characters ('fi' -&gt; 'f' 'i',  'kg' -&gt; 'k' 'g')</p>
</text></group></ul>
</text></doc>
<method name='normalize'>
<arguments><argument name='data'><type><string/></type></argument><argument name='method'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='is_wordchar'><doc><text><p>Returns whether a unicode character <ref resolved='predef::Unicode.is_wordchar.c'>c</ref> is a word, part of a word or not.</p>
</text><group><returns/><text><int><group><value>2</value><text><p>The character is an ideograph (a CJK single-word character)</p>
</text></group><group><value>1</value><text><p>The character is a letter, number or non-spacing mark, as defined by
       its unicode (general category) specification</p>
</text></group><group><value>0</value><text><p>Any other character (such as symbols, punctuation and separators)</p>
</text></group></int></text></group></doc>
<method name='is_wordchar'>
<arguments><argument name='c'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</module>








<module name='Msql'><doc><text><p>This is an interface to the mSQL database server.
 This module may or may not be availible on your Pike, depending
 whether the appropriate include and library files (msql.h and libmsql.a
 respectively) could be found at compile-time. Note that you <b>do not</b>
 need to have a mSQL server running on your host to use this module:
 you can connect to the database over a TCP/IP socket</p>
<p> Please notice that unless you wish to specifically connect to a mSQL
 server, you'd better use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> program instead. Using <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>
 ensures that your Pike applications will run with any supported SQL
 server without changing a single line of code.</p>
<p> Also notice that some functions may be mSQL/2.0-specific, and thus missing
 on hosts running mSQL/1.0.*</p>
</text><group><note/><text><p>The mSQL C API has some extermal dependencies.
  They take the form of certain environment variables
  which, if defined in the environment of the pike interpreter, influence
  the interface's behavior. Those are "MSQL_TCP_PORT" which forces the
  server to connect to a port other than the default, "MSQL_UNIX_PORT", same
  as above, only referring to the UNIX domain sockets. If you built your
  mSQL server with the default setttings, you shouldn't worry about these.
  The variable MINERVA_DEBUG can be used to debug the mSQL API (you
  shouldn't worry about this either). Refer to the mSQL documentation
  for further details.</p>
<p>  Also note that THIS MODULE USES BLOCKING I/O to connect to the server.
  mSQL should be reasonably fast, but you might want to consider this
  particular aspect. It is thread-safe, and so it can be used
  in a multithread environment.</p>
</text></group><group><fixme/><text><p>Although it seems that mSQL/2.0 has some support for server statistics,
 it's really VERY VERY primitive, so it won't be added for now.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref></p>
</text></group></doc>

<class name='msql'><docgroup homogen-type='method' homogen-name='shutdown'><doc><text><p>This function shuts a SQL-server down.</p>
</text></doc>
<method name='shutdown'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='reload_acl'><doc><text><p>This function forces a server to reload its ACLs.</p>
</text><group><note/><text><p>This function is <b>not</b> part of the standard interface, so it is
  <b>not</b> availible through the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> interface, but only through
  <ref resolved='predef::Sql.msql'>Sql.msql</ref> and <ref resolved='predef::Msql.msql'>Msql.msql</ref> programs.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Msql.msql.create'>create</ref></p>
</text></group></doc>
<method name='reload_acl'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>With one argument, this function
 tries to connect to the specified (use hostname or IP address) database
 server. To connect to a server running on the local host via UNIX domain
 sockets use <expr>"localhost"</expr>. To connect to the local host via TCP/IP
 sockets
 you have to use the IP address <expr>"127.0.0.1"</expr>.
 With two arguments it also selects a database to use on the server.
 With no arguments it tries to connect to the server on localhost, using
 UNIX sockets.</p>
</text><group><throws/><text><p>You need to have a database selected before using the sql-object,
 otherwise you'll get exceptions when you try to query it.
 Also notice that this function <b>can</b> raise exceptions if the db
 server doesn't respond, if the database doesn't exist or is not accessible
 by you.</p>
</text></group><group><note/><text><p>You don't need bothering about syncronizing the connection to the database:
 it is automatically closed (and the database is sync-ed) when the msql
 object is destroyed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Msql.msql.select_db'>select_db</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='dbserver'><type><or><void/><string/></or></type></argument><argument name='dbname'><type><or><void/><string/></or></type></argument><argument name='username'><type><or><void/><string/></or></type></argument><argument name='passwd'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_dbs'><doc><text><p>Returns an array containing the names of all databases availible on
 the system. Will throw an exception if there is no server connected.
 If an argument is specified, it will return only those databases
 whose name matches the given glob.</p>
</text></doc>
<method name='list_dbs'>
<arguments><argument name='wild'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_tables'><doc><text><p>Returns an array containing the names of all the tables in the currently
 selected database. Will throw an exception if we aren't connected to
 a database.
 If an argument is specified, it will return only those tables
 whose name matches the given glob.</p>
</text></doc>
<method name='list_tables'>
<arguments><argument name='wild'><type><or><void/><string/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='select_db'><doc><text><p>Before querying a database you have to select it. This can be accomplished
 in two ways: the first is calling the <ref resolved='predef::Msql.msql.create'>create</ref> function with two arguments,
 another is calling it with one or no argument and then calling <ref resolved='predef::Msql.msql.select_db'>select_db</ref>.
 You can also use this function to change the database you're querying,
 as long as it is on the same server you are connected to.</p>
</text><group><throws/><text><p>This function CAN raise exceptions in case something goes wrong
 (for example: unexistant database, insufficient permissions, whatever).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Msql.msql.create'>create</ref>, <ref resolved='predef::Msql.msql.error'>error</ref></p>
</text></group></doc>
<method name='select_db'>
<arguments><argument name='dbname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='query'><doc><text><p>This is all you need to query the database. It takes as argument an SQL
 query string (i.e.: "SELECT foo,bar FROM baz WHERE name like '%kinkie%'"
 or "INSERT INTO baz VALUES ('kinkie','made','this')")
 and returns a data structure containing the returned values.
 The structure is an array (one entry for each returned row) of mappings
 which have the column name as index and the column contents as data.
 So to access a result from the first example you would have to do
 "results[0]-&gt;foo".</p>
<p> A query which returns no data results in an empty array (and NOT in a 0).
 Also notice that when there is a column name clash (that is: when you
 join two or more tables which have columns with the same name), the
 clashing columns are renamed to &lt;tablename&gt;+"."+&lt;column name&gt;.
 To access those you'll have to use the indexing operator '[]
 (i.e.: results[0]["foo.bar"]).</p>
</text><group><throws/><text><p>Errors (both from the interface and the SQL server) are reported via
 exceptions, and you definitely want to catch them. Error messages are
 not particularly verbose, since they account only for errors inside the
 driver. To get server-related error messages, you have to use the
 <ref resolved='predef::Msql.msql.error'>error</ref> function.</p>
</text></group><group><note/><text><p>Note that if the query is NOT a of SELECT type, but UPDATE or
 MODIFY, the returned value is an empty array.
 <b>This is not an error</b>. Errors are reported <b>only</b> via exceptions.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Msql.msql.error'>error</ref></p>
</text></group></doc>
<method name='query'>
<arguments><argument name='sqlquery'><type><string/></type></argument></arguments>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='server_info'><doc><text><p>This function returns a string describing the server we are talking
 to. It has the form "servername/serverversion" (like the HTTP protocol
 description) and is most useful in conjunction with the generic SQL-server
 module.</p>
</text></doc>
<method name='server_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='host_info'><doc><text><p>This function returns a string describing what host are we talking to,
 and how (TCP/IP or UNIX sockets).</p>
</text></doc>
<method name='host_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='error'><doc><text><p>This function returns the textual description of the last server-related
 error. Returns 0 if no error has occurred yet. It is not cleared upon
 reading (can be invoked multiple times, will return the same result
 until a new error occurs).</p>
</text><group><seealso/><text><p><ref resolved='predef::Msql.msql.query'>query</ref></p>
</text></group></doc>
<method name='error'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create_db'><doc><text><p>This function creates a new database with the given name (assuming we
 have enough permissions to do this).</p>
</text><group><seealso/><text><p><ref resolved='predef::Msql.msql.drop_db'>drop_db</ref></p>
</text></group></doc>
<method name='create_db'>
<arguments><argument name='dbname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='drop_db'><doc><text><p>This function destroys a database and all the data it contains (assuming
 we have enough permissions to do so). USE WITH CAUTION!</p>
</text><group><seealso/><text><p><ref resolved='predef::Msql.msql.create_db'>create_db</ref></p>
</text></group></doc>
<method name='drop_db'>
<arguments><argument name='dbname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_fields'><doc><text><p>Returns a mapping describing the fields of a table in the database.
 The returned value is a mapping, indexed on the column name,
 of mappings.The glob argument, if present, filters out the fields
 not matching the glob. These contain currently the fields:</p>
<mapping><group><member><type><string/></type><index>"type"</index></member><text><p>Describes the field's mSQL data type ("char","integer",...)</p>
</text></group><group><member><type><int/></type><index>"length"</index></member><text><p>It describes the field's length. It is only interesting for
      char() fields, in fact.  Also
      notice that the strings returned by msql-&gt;query() have the correct length.
      This field only specifies the _maximum_ length a "char()" field can have.</p>
</text></group><group><member><type><string/></type><index>"table"</index></member><text><p>The table this field is in. Added only for interface compliancy.</p>
</text></group><group><member><type><multiset><indextype><string/></indextype></multiset></type><index>"flags"</index></member><text><p>It's a multiset containing textual
      descriptions of the server's flags associated with the current field.
      Currently it can be empty, or contain "unique" or "not null".</p>
</text></group></mapping>
</text><group><note/><text><p>The version of this function in the Msql.msql() program is <b>not</b>
   sql-interface compliant (this is the main reason why using that program
   directly is deprecated). Use <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Msql.msql.query'>query</ref></p>
</text></group></doc>
<method name='list_fields'>
<arguments><argument name='table'><type><string/></type></argument><argument name='glob'><type><or><void/><string/></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='affected_rows'><doc><text><p>This function returns how many rows in the database were affected by
 our last SQL query.</p>
</text><group><note/><text><p>This function is availible only if you're using mSQL version 2
  or later. (That means: if the includes and library of version 2 of mSQL
  were availible when the module was compiled).</p>
<p>  This function is <b>not</b> part of the standard interface, so it is <b>not</b>
  availible through the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> interface, but only through <ref resolved='predef::Sql.msql'>Sql.msql</ref> and
  <ref resolved='predef::Msql.msql'>Msql.msql</ref> programs</p>
</text></group></doc>
<method name='affected_rows'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_index'><doc><text><p>This function returns an array describing the index structure for the
 given table and index name, as defined by the non-standard SQL query
 'create index' (see the mSQL documentation for further informations).
 More than one index can be created for a table. There's currently NO way
 to have a listing of the indexes defined for a table (blame it on
 the mSQL API).</p>
</text><group><note/><text><p>This function is availible if you're using mSQL version 2
  or later.</p>
<p>  This function is <b>not</b> part of the standard interface, so it is <b>not</b>
  availible through the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> interface, but only through <ref resolved='predef::Sql.msql'>Sql.msql</ref> and
  <ref resolved='predef::Msql.msql'>Msql.msql</ref> programs.</p>
</text></group></doc>
<method name='list_index'>
<arguments><argument name='tablename'><type><string/></type></argument><argument name='indexname'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='version'><doc><text><p>Should you need to report a bug to the author, please submit along with
 the report the driver version number, as returned by this call.</p>
</text></doc>
<constant name='version'><source-position first-line='952' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Msql/msqlmod.c'/></constant>
</docgroup>
</module>











<module name='Regexp'>

<class name='SimpleRegexp'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='13'/><docgroup homogen-name='_SimpleRegexp' homogen-type='inherit'><doc>
</doc>
<inherit name='_SimpleRegexp'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='15'/><classname>_SimpleRegexp</classname></inherit>
</docgroup>
<docgroup homogen-name='replace' homogen-type='method'><doc/>
<method name='replace'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='22'/>
<arguments><argument name='in'><type><string/></type></argument><argument name='transform'><type><or><string/><function><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Regexp objects can be encoded and decoded.</p>
</text><group><seealso/><text><p><ref resolved='predef::encode_value'>encode_value</ref>, <ref resolved='predef::decode_value'>decode_value</ref></p>
</text></group></doc>
<method name='_encode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='73'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
<method name='_decode'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='74'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<doc><text><p>This class implements the interface to a simple regexp engine
 with the following capabilities:</p>
<p> <matrix>
 <r><c>.</c>     <c>Matches any character.</c></r>
 <r><c>[abc]</c> <c>Matches a, b or c.</c></r>
 <r><c>[a-z]</c> <c>Matches any character a to z inclusive.</c></r>
 <r><c>[^ac]</c> <c>Matches any character except a and c.</c></r>
 <r><c>(x)</c>   <c>Matches x (x might be any regexp) If used with split, this
                    also puts the string matching x into the result array.</c></r>
 <r><c>x*</c>    <c>Matches zero or more occurances of 'x'
                    (x may be any regexp).</c></r>
 <r><c>x+</c>    <c>Matches one or more occurances of 'x'
                    (x may be any regexp).</c></r>
 <r><c>x|y</c>   <c>Matches x or y. (x or y may be any regexp).</c></r>
 <r><c>xy</c>    <c>Matches xy (x and y may be any regexp).</c></r>
 <r><c>^</c>     <c>Matches beginning of string (but no characters).</c></r>
 <r><c>$</c>     <c>Matches end of string (but no characters).</c></r>
 <r><c>\&lt;</c> <c>Matches the beginning of a word (but no characters).</c></r>
 <r><c>\&gt;</c> <c>Matches the end of a word (but no characters).</c></r>
 </matrix></p>
<p> Note that \ can be used to quote these characters in which case
 they match themselves, nothing else. Also note that when quoting
 these something in Pike you need two \ because Pike also uses
 this character for quoting.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>When create is called, the current regexp bound to this object is
 cleared. If a string is sent to create(), this string will be compiled
 to an internal representation of the regexp and bound to this object
 for laters calls to e.g. <ref resolved='predef::Regexp.SimpleRegexp.match'>match</ref> or <ref resolved='predef::Regexp.SimpleRegexp.split'>split</ref>. Calling create() without
 an argument can be used to free up a little memory after the regexp has
 been used.</p>
</text></doc>
<method name='create'>
<arguments><argument name='re'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='match' homogen-type='method'><doc><text><p>Returns 1 if <ref resolved='predef::Regexp.SimpleRegexp.match.str'>str</ref> matches the regexp bound to the regexp object.
 Zero otherwise.</p>
</text></doc>
<method name='match'>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='match' homogen-type='method'><doc><text><p>Returns an array containing strings in <ref resolved='predef::Regexp.SimpleRegexp.match.strs'>strs</ref> that match the
 regexp bound to the regexp object.</p>
</text><group><bugs/><text><p>The current implementation doesn't support searching
   in strings containing the NUL character or any
   wide character.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Regexp.SimpleRegexp.split'>split</ref></p>
</text></group></doc>
<method name='match'>
<arguments><argument name='strs'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='split' homogen-type='method'><doc><text><p>Works as <ref resolved='predef::Regexp.SimpleRegexp.match'>match</ref>, but returns an array of the strings that
 matched the subregexps. Subregexps are those contained in "( )" in
 the regexp. Subregexps that were not matched will contain zero.
 If the total regexp didn't match, zero is returned.</p>
</text><group><bugs/><text><p>You can currently only have 39 subregexps.</p>
</text></group><group><bugs/><text><p>The current implementation doesn't support searching
   in strings containing the NUL character or any
   wide character.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Regexp.SimpleRegexp.match'>match</ref></p>
</text></group></doc>
<method name='split'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='10'/><classname>"___"</classname></inherit>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Convenience/compatibility method to get a <ref resolved='predef::Regexp.SimpleRegexp'>SimpleRegexp</ref> object.</p>
</text></doc>
<method name='`()'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='78'/>
<arguments><argument name='regexp'><type><or><void/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Regexp.SimpleRegexp'>SimpleRegexp</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='match' homogen-type='method'><doc><text><p>Calls <ref>Regexp.PCRE.Plain.match</ref> in a temporary regexp object.
 Faster to type but slower to run...</p>
</text></doc>
<method name='match'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='87'/>
<arguments><argument name='regexp'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='split' homogen-type='method'><doc><text><p>Calls <ref>Regexp.PCRE.Plain.split</ref> in a temporary regexp object.
 Faster to type but slower to run...</p>
</text></doc>
<method name='split'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='93'/>
<arguments><argument name='regexp'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='split2' homogen-type='method'><doc><text><p>Calls <ref>Regexp.PCRE.Plain.split2</ref> in a temporary regexp object.
 Faster to type but slower to run...</p>
</text></doc>
<method name='split2'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='99'/>
<arguments><argument name='regexp'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace' homogen-type='method'><doc><text><p>Calls <ref>Regexp.PCRE.Plain.replace</ref> in a temporary regexp object.
 Faster to type but slower to run...</p>
</text></doc>
<method name='replace'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Regexp/module.pmod.in' first-line='105'/>
<arguments><argument name='regexp'><type><string/></type></argument><argument name='data'><type><string/></type></argument><argument name='transform'><type><or><string/><function><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>




<module name='PCRE'>

<class name='_pcre'><docgroup homogen-name='create' homogen-type='method'><doc><text><p>The option bits are:</p>
<int><group><value>OPTION.ANCHORED</value><text><p>Force pattern anchoring</p>
</text></group><group><value>OPTION.CASELESS</value><text><p>Do caseless matching</p>
</text></group><group><value>OPTION.DOLLAR_ENDONLY</value><text><p>$ not to match newline at end</p>
</text></group><group><value>OPTION.DOTALL</value><text><p>. matches anything including NL</p>
</text></group><group><value>OPTION.EXTENDED</value><text><p>Ignore whitespace and # comments</p>
</text></group><group><value>OPTION.EXTRA</value><text><p>PCRE extra features (not much use currently)</p>
</text></group><group><value>OPTION.MULTILINE</value><text><p>^ and $ match newlines within data</p>
</text></group><group><value>OPTION.NO_AUTO_CAPTURE</value><text><p>Disable numbered capturing parentheses (named ones available)</p>
</text></group><group><value>OPTION.UNGREEDY</value><text><p>Invert greediness of quantifiers</p>
</text></group><group><value>OPTION.UTF8</value><text><p>Run in UTF-8 mode</p>
</text></group></int></text></doc>
<method name='create'>
<arguments><argument name='pattern'><type><string/></type></argument><argument name='options'><type><or><void/><int/></or></type></argument><argument name='table'><type><or><void/><object resolved='predef::Regexp.PCRE._pcre.create'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='study' homogen-type='method'><doc><text><p>(from the pcreapi man-page)
  "When  a pattern is going to be used several times, it is worth spending
  more time analyzing it in order to speed up the time taken  for  match-
  ing."</p>
</text></doc>
<method name='study'>
<arguments/>
<returntype><object resolved='predef::Regexp.PCRE._pcre.study'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'><modifiers><static/></modifiers>
<arguments><argument name='c'><type><int/></type></argument><argument name='flags'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='info' homogen-type='method'><doc><text><p>Returns additional information about a compiled pattern. Only
 available if PCRE was compiled with Fullinfo.</p>
</text><group><returns/><text><mapping><group><member><type><int/></type><index>"backrefmax"</index></member><text><p>Return the number of the highest back reference in the
     pattern. The fourth argument should point to an int
     variable. Zero is returned if there are no back references.</p>
</text></group><group><member><type><int/></type><index>"capturecount"</index></member><text><p>Return the number of capturing subpatterns in the pattern.
     The fourth argument should point to an int variable.</p>
</text></group><group><member><type><int/></type><index>"firstbyte"</index></member><text><p>Return information about the first byte of any matched
     string, for a non-anchored pattern. (This option used to be
     called PCRE_INFO_FIRSTCHAR; the old name is still
     recognized for backwards compatibility.)</p>
<p>     If there is a fixed first byte, e.g. from a pattern such as
     (cat|cow|coyote), it is returned in the integer pointed to
     by where. Otherwise, if either</p>
<p>     (a) the pattern was compiled with the PCRE_MULTILINE
     option, and every branch starts with <expr>"^"</expr>, or</p>
<p>     (b) every branch of the pattern starts with <expr>".*"</expr>
     and PCRE_DOTALL is not set (if it were set, the pattern
     would be anchored),</p>
<p>     <expr>-1</expr> is returned, indicating that the pattern matches
     only at the start of a subject string or after any newline
     within the string. Otherwise <expr>-2</expr> is returned. For
     anchored patterns, <expr>-2</expr> is returned.</p>
</text></group><group><member><type><int/></type><index>"lastliteral"</index></member><text><p>Return the value of the rightmost literal byte that must
     exist in any matched string, other than at its start, if
     such a byte has been recorded. The fourth argument should
     point to an int variable. If there is no such byte,
     <expr>-1</expr> is returned. For anchored patterns, a last
     literal byte is recorded only if it follows something of
     variable length. For example, for the pattern /^a\d+z\d+/
     the returned value is <expr>"z"</expr>, but for /^a\dz\d/ the
     returned value is <expr>-1</expr>.</p>
</text></group><group><member><type><int/></type><index>"namecount"</index></member><member><type><int/></type><index>"nameentrysize"</index></member></group><group><member><type><int/></type><index>"options"</index></member><text><p>Return a copy of the options with which the pattern was
     compiled. The fourth argument should point to an unsigned
     long int variable. These option bits are those specified in
     the call to pcre_compile(), modified by any top-level
     option settings within the pattern itself.</p>
<p>     A pattern is automatically anchored by PCRE if all of its
     top-level alternatives begin with one of the following:</p>
<p> <matrix>
 <r><c>^</c><c>unless PCRE_MULTILINE is set</c></r>
 <r><c>\A</c><c>always</c></r>
 <r><c>\G</c><c>always</c></r>
 <r><c>.*</c><c>if PCRE_DOTALL is set and there are no back
 references to the subpattern in which .* appears</c></r>
 </matrix></p>
<p>     For such patterns, the PCRE_ANCHORED bit is set in the
     options returned.</p>
</text></group><group><member><type><int/></type><index>"size"</index></member><text><p>Return the size of the compiled pattern, that is, the
      value that was passed as the argument to pcre_malloc()
      when PCRE was getting memory in which to place the
      compiled data. The fourth argument should point to a
      size_t variable.</p>
</text></group><group><member><type><int/></type><index>"studysize"</index></member><text><p>Returns the size of the data block pointed to by the
      study_data field in a pcre_extra block. That is, it is the
      value that was passed to pcre_malloc() when PCRE was
      getting memory into which to place the data created by
      pcre_study(). The fourth argument should point to a size_t
      variable.</p>
</text></group></mapping></text></group></doc>
<method name='info'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exec' homogen-type='method'><doc><text><p>match a regexp; will return an array of 2*n integers
	where n is the number of hits;
	returns an int upon failure</p>
<p>	Error codes:</p>
<int><group><value>ERROR.NOMATCH</value><text><p>The subject string did not match the pattern.</p>
</text></group><group><value>ERROR.NULL</value><text><p>Either code or subject was passed as NULL, or ovector was NULL
   and oversize was not zero.</p>
</text></group><group><value>ERROR.BADOPTION</value><text><p>An unrecognized bit was set in the options argument.</p>
</text></group><group><value>ERROR.BADMAGIC</value><text><p>PCRE stores a 4-byte "magic number" at the start of the compiled
   code, to catch the case when it is passed a junk pointer. This
   is the error it gives when the magic number isn't present.</p>
</text></group><group><value>ERROR.UNKNOWN_NODE</value><text><p>While running the pattern match, an unknown item was encountered
   in the compiled pattern. This error could be caused by a bug in
   PCRE or by overwriting of the compiled pattern.</p>
</text></group><group><value>ERROR.NOMEMORY</value><text><p>If a pattern contains back references, but the ovector that is
   passed to pcre_exec() is not big enough to remember the
   referenced substrings, PCRE gets a block of memory at the start
   of matching to use for this purpose. If the call via
   pcre_malloc() fails, this error is given. The memory is freed at
   the end of matching.</p>
</text></group><group><value>ERROR.NOSUBSTRING</value><text><p>This error is used by the pcre_copy_substring(),
   pcre_get_substring(), and pcre_get_substring_list() functions
   (see below). It is never returned by pcre_exec().</p>
</text></group><group><value>ERROR.MATCHLIMIT</value><text><p>The recursion and backtracking limit, as specified by the
   match_limit field in a pcre_extra structure (or defaulted) was
   reached. See the description above.</p>
</text></group><group><value>ERROR.CALLOUT</value><text><p>This error is never generated by pcre_exec() itself. It is
   provided for use by callout functions that want to yield a
   distinctive error code. See the pcrecallout documentation for
   details.</p>
</text></group></int></text></doc>
<method name='exec'>
<arguments><argument name='subject'><type><string/></type></argument><argument name='startoffset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><int/><array/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_stringnumber' homogen-type='method'><doc><text><p>returns the number of a named subpattern</p>
</text></doc>
<method name='get_stringnumber'>
<arguments><argument name='stringname'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<module name='OPTION'><doc><text><p>contains all option constants</p>
</text></doc><docgroup homogen-name='ANCHORED' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If this bit is set, the pattern is forced to be "anchored", that is, it
  is constrained to match only at the first matching point in the  string
  which is being searched (the "subject string"). This effect can also be
  achieved by appropriate constructs in the pattern itself, which is  the
  only way to do it in Perl.</p>
</text></doc>
<constant name='ANCHORED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='804'/></constant>
</docgroup>
<docgroup homogen-name='CASELESS' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If  this  bit is set, letters in the pattern match both upper and lower
  case letters. It is equivalent to Perl's  /i  option,  and  it  can  be
  changed within a pattern by a (?i) option setting.</p>
</text></doc>
<constant name='CASELESS'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='814'/></constant>
</docgroup>
<docgroup homogen-name='DOLLAR_ENDONLY' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If  this bit is set, a dollar metacharacter in the pattern matches only
  at the end of the subject string. Without this option,  a  dollar  also
  matches  immediately before the final character if it is a newline (but
  not before any  other  newlines).  The  PCRE_DOLLAR_ENDONLY  option  is
  ignored if PCRE_MULTILINE is set. There is no equivalent to this option
  in Perl, and no way to set it within a pattern.</p>
</text></doc>
<constant name='DOLLAR_ENDONLY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='822'/></constant>
</docgroup>
<docgroup homogen-name='DOTALL' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If this bit is set, a dot  metacharater  in  the  pattern  matches  all
  characters, including newlines. Without it, newlines are excluded. This
  option is equivalent to Perl's /s option, and it can be changed  within
  a  pattern  by  a  (?s)  option  setting. A negative class such as [^a]
  always matches a newline character, independent of the setting of  this
  option.</p>
</text></doc>
<constant name='DOTALL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='833'/></constant>
</docgroup>
<docgroup homogen-name='EXTENDED' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If  this  bit  is  set,  whitespace  data characters in the pattern are
  totally ignored except  when  escaped  or  inside  a  character  class.
  Whitespace  does  not  include the VT character (code 11). In addition,
  characters between an unescaped # outside a  character  class  and  the
  next newline character, inclusive, are also ignored. This is equivalent
  to Perl's /x option, and it can be changed within a pattern by  a  (?x)
  option setting.</p>
<p>  This  option  makes  it possible to include comments inside complicated
  patterns.  Note, however, that this applies only  to  data  characters.
  Whitespace   characters  may  never  appear  within  special  character
  sequences in a pattern, for  example  within  the  sequence  (?(  which
  introduces a conditional subpattern.</p>
</text></doc>
<constant name='EXTENDED'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='844'/></constant>
</docgroup>
<docgroup homogen-name='EXTRA' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  This  option  was invented in order to turn on additional functionality
  of PCRE that is incompatible with Perl, but it  is  currently  of  very
  little  use. When set, any backslash in a pattern that is followed by a
  letter that has no special meaning  causes  an  error,  thus  reserving
  these  combinations  for  future  expansion.  By default, as in Perl, a
  backslash followed by a letter with no special meaning is treated as  a
  literal.  There  are  at  present  no other features controlled by this
  option. It can also be set by a (?X) option setting within a pattern.</p>
</text></doc>
<constant name='EXTRA'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='862'/></constant>
</docgroup>
<docgroup homogen-name='MULTILINE' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  By default, PCRE treats the subject string as consisting  of  a  single
  "line"  of  characters (even if it actually contains several newlines).
  The "start of line" metacharacter (^) matches only at the start of  the
  string,  while  the "end of line" metacharacter ($) matches only at the
  end of the string, or before a terminating  newline  (unless  PCRE_DOL-
  LAR_ENDONLY is set). This is the same as Perl.</p>
<p>  When  PCRE_MULTILINE  it  is set, the "start of line" and "end of line"
  constructs match immediately following or immediately before  any  new-
  line  in the subject string, respectively, as well as at the very start
  and end. This is equivalent to Perl's /m option, and it can be  changed
  within a pattern by a (?m) option setting. If there are no "\n" charac-
  ters in a subject string, or no occurrences of ^ or  $  in  a  pattern,
  setting PCRE_MULTILINE has no effect.</p>
</text></doc>
<constant name='MULTILINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='875'/></constant>
</docgroup>
<docgroup homogen-name='NO_AUTO_CAPTURE' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  If this option is set, it disables the use of numbered capturing paren-
  theses in the pattern. Any opening parenthesis that is not followed  by
  ?  behaves as if it were followed by ?: but named parentheses can still
  be used for capturing (and they acquire  numbers  in  the  usual  way).
  There is no equivalent of this option in Perl.</p>
</text></doc>
<constant name='NO_AUTO_CAPTURE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='896'/></constant>
</docgroup>
<docgroup homogen-name='UNGREEDY' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  This  option  inverts  the "greediness" of the quantifiers so that they
  are not greedy by default, but become greedy if followed by "?". It  is
  not  compatible  with Perl. It can also be set by a (?U) option setting
  within the pattern.</p>
</text></doc>
<constant name='UNGREEDY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='907'/></constant>
</docgroup>
<docgroup homogen-name='UTF8' homogen-type='constant'><doc><text><p>(from the pcreapi manpage)
  This option causes PCRE to regard both the pattern and the  subject  as
  strings  of  UTF-8 characters instead of single-byte character strings.
  However, it is available only if PCRE has been built to  include  UTF-8
  support.  If  not, the use of this option provokes an error. Details of
  how this option changes the behaviour of PCRE are given in the  section
  on UTF-8 support in the main pcre page.</p>
</text></doc>
<constant name='UTF8'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='917'/></constant>
</docgroup>
</module>

<module name='ERROR'><docgroup homogen-type='constant'><doc><text><p>Documented in <ref>exec</ref>.</p>
</text></doc>
<constant name='NOMATCH'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='948'/></constant>
<constant name='NULL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='949'/></constant>
<constant name='BADOPTION'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='950'/></constant>
<constant name='BADMAGIC'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='951'/></constant>
<constant name='UNKNOWN_NODE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='952'/></constant>
<constant name='NOMEMORY'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='953'/></constant>
<constant name='NOSUBSTRING'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='954'/></constant>
<constant name='MATCHLIMIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='955'/></constant>
<constant name='CALLOUT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='956'/></constant>
</docgroup>
</module><docgroup homogen-name='split_subject' homogen-type='method'><doc><text><p>Convenience function that
 splits a subject string on the result from _pcre-&gt;exec()</p>
<p> equal to
 map(previous_result/2,
     lambda(array v) { return subject[v[0]..v[1]-1]; })</p>
</text></doc>
<method name='split_subject'>
<arguments><argument name='subject'><type><string/></type></argument><argument name='previous_result'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='buildconfig_UTF8' homogen-type='constant'><doc><text><p>(from the pcreapi man-page)
     "The output is an integer that is set to one if UTF-8 support
     is available; otherwise it is set to zero."
	This constant is calculated when the module is initiated
	by using pcre_config(3).</p>
</text></doc>
<constant name='buildconfig_UTF8'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='717'/></constant>
</docgroup>
<docgroup homogen-name='buildconfig_NEWLINE' homogen-type='constant'><doc><text><p>(from the pcreapi man-page)
     "The output is an integer that is set to  the  value  of  the
     code  that  is  used for the newline character. It is either
     linefeed (10) or carriage return (13), and  should  normally
     be the standard character for your operating system."
	This constant is calculated when the module is initiated
	by using pcre_config(3).</p>
</text></doc>
<constant name='buildconfig_NEWLINE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='724'/></constant>
</docgroup>
<docgroup homogen-name='buildconfig_LINK_SIZE' homogen-type='constant'><doc><text><p>(from the pcreapi man-page)
     "The output is an integer that contains the number  of  bytes
     used  for  internal linkage in compiled regular expressions.
     The value is 2, 3, or 4. Larger values allow larger  regular
     expressions  to be compiled, at the expense of slower match-
     ing. The default value of 2 is sufficient for  all  but  the
     most  massive patterns, since it allows the compiled pattern
     to be up to 64K in size."
	This constant is calculated when the module is initiated
	by using pcre_config(3).</p>
</text></doc>
<constant name='buildconfig_LINK_SIZE'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='733'/></constant>
</docgroup>
<docgroup homogen-name='buildconfig_POSIX_MALLOC_THRESHOLD' homogen-type='constant'><doc><text><p>(from the pcreapi man-page)
     "The output is an integer that contains the  threshold  above
     which  the POSIX interface uses malloc() for output vectors.
     Further details are given in the pcreposix documentation."
	This constant is calculated when the module is initiated
	by using pcre_config(3).</p>
</text></doc>
<constant name='buildconfig_POSIX_MALLOC_THRESHOLD'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='745'/></constant>
</docgroup>
<docgroup homogen-name='buildconfig_MATCH_LIMIT' homogen-type='constant'><doc><text><p>(from the pcreapi man-page)
     "The output is an integer that gives the  default  limit  for
     the   number  of  internal  matching  function  calls  in  a
     pcre_exec()  execution.  Further  details  are  given   with
     pcre_exec() below."
	This constant is calculated when the module is initiated
	by using pcre_config(3).</p>
</text></doc>
<constant name='buildconfig_MATCH_LIMIT'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/pcre_glue.c' first-line='753'/></constant>
</docgroup>
<module name='_Regexp_PCRE'>

<class name='Plain'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='20'/><doc><text><p>The main regexp class. Will provide anything needed 
 for matching regexps. </p>
<p> There are subclasses that adds wrappers for widestrings,
 and to optimize the regexp pattern.</p>
</text></doc><docgroup homogen-name='_pcre' homogen-type='inherit'><doc>
</doc>
<inherit name='_pcre'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='22'/><classname resolved='predef::Regexp.PCRE._pcre'>_pcre</classname></inherit>
</docgroup>
<docgroup homogen-name='split2' homogen-type='method'><doc><text><p>Matches a subject against the pattern,
 returns an array where the first element are the whole match,
 and the subsequent are the matching subpatterns.
 Returns 0 if there was no match.</p>
<p> example:
 &gt; Regexp.PCRE.Plain("i\(.*\) is \(.*\)u")-&gt;split2("pike is fun");
 Result: ({ 
              "ike is fu",
              "ke",
              "f"
          })</p>
</text></doc>
<method name='split2'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='62'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='startoffset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><array><valuetype><string/></valuetype></array><int><min>0</min><max>0</max></int></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='split' homogen-type='method'><doc><text><p>Matches a subject against the pattern,
 compatible with the old split method:
 returns an array of the subpatterns,
 or if there are no subpattern but still a match, ({0}).
 Returns 0 if there was no match.</p>
<p> example:
 &gt; Regexp.PCRE.Plain("i\(.*\) is \(.*\)u")-&gt;split("pike is fun");
 (1) Result: ({
                 "ke",
                 "f"
             })
 &gt; Regexp.PCRE.Plain("is fun")-&gt;split("pike is fun"); 
 (4) Result: ({
                 0
             })</p>
</text></doc>
<method name='split'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='85'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='startoffset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><array><valuetype><string/></valuetype></array><int><min>0</min><max>0</max></int></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='match' homogen-type='method'><doc><text><p>returns true (1) if a match is found,
 false otherwise</p>
<p> example:
 &gt; Regexp.PCRE.Plain("is fun")-&gt;match("pike is fun");
 Result: 1
 &gt; Regexp.PCRE.Plain("is fun")-&gt;match("pike isn't fun");
 Result: 0</p>
</text></doc>
<method name='match'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='101'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='startoffset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace' homogen-type='method'><doc><text><p>replace all occurances of a pattern in a subject;
 callbacks and replacements will be from the first occurance,
 not from the last as in Regexp.Builtin.replace.</p>
<p> example:
 &gt; Regexp.PCRE("b[^-]*m")-&gt;replace("abam-boom-fooabadoom","gurka");
 Result: "agurka-gurka-fooagurka"
 &gt; Regexp.PCRE("b[^-]*m")-&gt;replace("abam-boom-fooabadoom",
      lambda(string s) { werror("%O\n",s); return "gurka"; });
 "bam"
 "boom"
 "badoom"
 Result: "agurka-gurka-fooagurka"</p>
</text></doc>
<method name='replace'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='121'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='with'><type><or><string/><function><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='replace1' homogen-type='method'><doc><text><p>replace one (first) occurance of a pattern in a subject</p>
<p> example:
 &gt; Regexp.PCRE("b[^-]*m")-&gt;replace1("abam-boom-fooabadoom","gurka");
 Result: "agurka-boom-fooabadoom"</p>
</text></doc>
<method name='replace1'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='149'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='with'><type><or><string/><function><argtype><string/></argtype><returntype><string/></returntype></function></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='matchall' homogen-type='method'><doc><text><p>Will give a callback for each match in a subject.
 Called arguments will be matching patterns and subpatterns
 in an array and as second argument the exec result array.</p>
<p> returns called object</p>
<p> example:
 &gt; Regexp.PCRE("b(a*)([^-\1234]*)(\1234*)m")
     -&gt;matchall("abam-boom-fooabado\1234m",
                lambda(mixed s) { werror("%O\n",s); return "gurka"; });
 ({ /* 4 elements */
     "bam",
     "a",
     "",
     ""
 })
 ({ /* 4 elements */
     "boom",
     "",
     "oo",
     ""
 })
 ({ /* 4 elements */
     "bado\1234m",
     "a",
     "do",
     "\1234"
 })
 Result: Regexp.PCRE.StudiedWidestring("b(a*)([^-Ê\234]*)(Ê\234*)m")</p>
</text></doc>
<method name='matchall'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='195'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='callback'><type><function><argtype><or><array><valuetype><string/></valuetype></array><void/></or></argtype><argtype><or><array><valuetype><int/></valuetype></array><void/></or></argtype><returntype><or><mixed/><void/></or></returntype></function></type></argument></arguments>
<returntype><object resolved='predef::Regexp.PCRE._Regexp_PCRE.Plain'>this_program</object></returntype>
</method>
</docgroup>
</class>

<class name='Studied'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='228'/><doc><text><p>Same as Plain,
 but will be studied to match faster; useful if you're doing
 many matches on the same pattern</p>
</text></doc><docgroup homogen-name='Plain' homogen-type='inherit'><doc>
</doc>
<inherit name='Plain'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='230'/><classname resolved='predef::Regexp.PCRE._Regexp_PCRE.Plain'>Plain</classname></inherit>
</docgroup>
</class>

<class name='Widestring'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='252'/><doc><text><p>Wrapper class around Plain, that will allow widestring
 patterns and subjects.</p>
<p> Widestring support and this class will not be implemented if the
 linked libpcre lacks UTF8 support.</p>
</text></doc><docgroup homogen-name='Plain' homogen-type='inherit'><doc>
</doc>
<inherit name='Plain'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='254'/><classname resolved='predef::Regexp.PCRE._Regexp_PCRE.Plain'>Plain</classname></inherit>
</docgroup>
<docgroup homogen-name='exec' homogen-type='method'><doc><text><p>The exec function is wrapped to give the correct indexes for 
 the widestring.</p>
</text></doc>
<method name='exec'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='283'/>
<arguments><argument name='subject'><type><string/></type></argument><argument name='startoffset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><array><valuetype><int/></valuetype></array><int/></or></returntype>
</method>
</docgroup>
</class>

<class name='StudiedWidestring'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='321'/><doc><text><p>Same as Widestring,
 but will be studied to match faster; useful if you're doing
 many matches on the same pattern</p>
</text></doc><docgroup homogen-name='Widestring' homogen-type='inherit'><doc>
</doc>
<inherit name='Widestring'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='323'/><classname resolved='predef::Regexp.PCRE._Regexp_PCRE.Widestring'>Widestring</classname></inherit>
</docgroup>
</class><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='7'/><classname>"___"</classname></inherit>
</docgroup>
<docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Convenience function to create a suitable PCRE Regexp object;
 will create a StudiedWidestring from the arguments.</p>
<p> That means the result will be able to handle widestrings,
 and will produce fast matchings by studying the pattern, but the
 widestring wrapping will on the other hand add overhead.</p>
<p> If you need a faster regexp and doesn't use widestring,
 create a Regexp.PCRE.Studied instead.</p>
<p> Widestring support will not be used if the linked libpcre
 lacks UTF8 support. This can be tested with
 checking that the Regexp.PCRE.Widestring class exist.</p>
</text></doc>
<method name='`()'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Regexp_PCRE/module.pmod.in' first-line='343'/>
<arguments><argument name='pattern'><type><string/></type></argument><argument name='options'><type><or><void/><int/></or></type></argument><argument name='table'><type><or><void/><object resolved='predef::Regexp.PCRE._Regexp_PCRE.`()'/></or></type></argument></arguments>
<returntype><object>GOOD</object></returntype>
</method>
</docgroup>
</module></module></module>



<module name='_Roxen'>

<class name='HeaderParser'><docgroup homogen-type='method' homogen-name='feed'><doc/>
<method name='feed'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><mapping/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='make_http_headers'><doc/>
<method name='make_http_headers'>
<arguments><argument name='headers'><type><mapping><indextype><string/></indextype><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></type></argument><argument name='no_terminator'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='http_decode_string'><doc><text><p>Decodes an http transport-encoded string.</p>
</text></doc>
<method name='http_decode_string'>
<arguments><argument name='encoded'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='html_encode_string'><doc><text><p>Encodes the <ref resolved='predef::_Roxen.html_encode_string.in'>in</ref> data as an HTML safe string.</p>
</text></doc>
<method name='html_encode_string'>
<arguments><argument name='in'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>

<module name='Math'>

<class name='Angle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='32'/><doc><text><p>Represents an angle.</p>
</text></doc><docgroup homogen-name='angle' homogen-type='variable'><doc><text><p>The actual keeper of the angle value.</p>
</text></doc>
<variable name='angle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='37'/><type><or><int/><float/></or></type></variable>
</docgroup>
<docgroup homogen-name='type' homogen-type='variable'><doc><text><p>The type of the angle value. Is either "deg", "rad", "gon" or "str".</p>
</text></doc>
<variable name='type'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='40'/><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>If an angle object is created without arguments it
 will have the value 0 radians.</p>
</text></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='radians'><type><or><int/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='angle'><type><or><int/><float/></or></type></argument><argument name='type'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='clone_me' homogen-type='method'><doc><text><p>Returns a copy of the object.</p>
</text></doc>
<method name='clone_me'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='58'/>
<arguments/>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get' homogen-type='method'><doc><text><p>Gets the value in the provided type.</p>
</text></doc>
<method name='get'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='63'/>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><or><int/><float/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set' homogen-type='method'><doc><text><p>Sets the angle value and type to the given value
 and type.</p>
</text></doc>
<method name='set'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='75'/>
<arguments><argument name='type'><type><string/></type></argument><argument name='_angle'><type><or><int/><float/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='normalize' homogen-type='method'><doc><text><p>Normalizes the angle to be within one turn.</p>
</text></doc>
<method name='normalize'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='86'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='degree' homogen-type='method'><doc><text><p>Returns the number of degrees, including minutes and
 seconds as decimals.</p>
</text></doc>
<method name='degree'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='108'/>
<arguments/>
<returntype><or><int/><float/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='minute' homogen-type='method'><doc><text><p>Returns the number of minute.</p>
</text></doc>
<method name='minute'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='113'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='second' homogen-type='method'><doc><text><p>Returns the number of seconds.</p>
</text></doc>
<method name='second'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='120'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_dms' homogen-type='method'><doc><text><p>Set degrees, minues and seconds. Returns the current angle object.</p>
</text></doc>
<method name='set_dms'>
<arguments><argument name='degrees'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='set_dms'>
<arguments><argument name='degrees'><type><int/></type></argument><argument name='minutes'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='set_dms'>
<arguments><argument name='degrees'><type><int/></type></argument><argument name='minutes'><type><int/></type></argument><argument name='seconds'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='format_dms' homogen-type='method'><doc><text><p>Returns degrees, minutes and seconds as a string, e.g.
 47°6'36.00".</p>
</text></doc>
<method name='format_dms'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='137'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_degree' homogen-type='method'><doc><text><p>Sets the angle to the provided degree. Alters the type to degrees.
 Returns the current object.</p>
</text></doc>
<method name='set_degree'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='143'/>
<arguments><argument name='degree'><type><or><int/><float/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gon' homogen-type='method'><doc><text><p>Returns the number of gons.</p>
</text></doc>
<method name='gon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='153'/>
<arguments/>
<returntype><or><int/><float/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_gon' homogen-type='method'><doc><text><p>Set the angle to the provided gons. Alters the type to gons.
 Returns the current angle object.</p>
</text></doc>
<method name='set_gon'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='159'/>
<arguments><argument name='gon'><type><or><int/><float/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='rad' homogen-type='method'><doc><text><p>Returns the number of radians.</p>
</text></doc>
<method name='rad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='171'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_rad' homogen-type='method'><doc><text><p>Set the angle to the provided radians. Alters the type to radians.
 Returns the current angle object.</p>
</text></doc>
<method name='set_rad'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='177'/>
<arguments><argument name='rad'><type><or><int/><float/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='streck' homogen-type='method'><doc><text><p>Returns the number of strecks.</p>
</text></doc>
<method name='streck'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='187'/>
<arguments/>
<returntype><or><float/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_streck' homogen-type='method'><doc><text><p>Set the angle to the provided strecks. Alters the type to streck.
 Returns the current angle object.</p>
</text></doc>
<method name='set_streck'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='193'/>
<arguments><argument name='str'><type><or><int/><float/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='about_face' homogen-type='method'><doc><text><p>Turns the direction of the angle half a turn. Equal to
 <expr>add(180,"deg")</expr>.</p>
</text></doc>
<method name='about_face'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='204'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='right_face' homogen-type='method'><doc><text><p>Turns the direction of the angle a quarter of a turn to the right.
 Equal to <expr>subtract(90,"deg")</expr>.</p>
</text></doc>
<method name='right_face'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='210'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='left_face' homogen-type='method'><doc><text><p>Turns the direction of the angle a quarter of a turn to the left.
 Equal to <expr>add(90,"deg")</expr>.</p>
</text></doc>
<method name='left_face'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='216'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sin' homogen-type='method'><doc><text><p>Returns the sinus for the angle.</p>
</text></doc>
<method name='sin'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='221'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cos' homogen-type='method'><doc><text><p>Returns the cosinus for the angle.</p>
</text></doc>
<method name='cos'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='226'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tan' homogen-type='method'><doc><text><p>Returns the tangen for the angle.</p>
</text></doc>
<method name='tan'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='231'/>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>An angle can be casted to float, int and string.</p>
</text></doc>
<method name='cast'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='236'/>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><or><float/><int/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Returns the sum of this angle and what it is added with. If
 added with an angle, a new angle object is returnes.</p>
</text></doc>
<method name='`+'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='247'/>
<arguments><argument name='_angle'><type><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></type></argument></arguments>
<returntype><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='add' homogen-type='method'><doc><text><p>Adds the provided angle to the current angle. The result is
 normalized within 360 degrees.</p>
</text></doc>
<method name='add'>
<arguments><argument name='angle'><type><or><float/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='add'>
<arguments><argument name='angle'><type><or><float/><int/></or></type></argument><argument name='type'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='add'>
<arguments><argument name='angle'><type><object resolved='predef::Math.Angle'>Angle</object></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Returns the difference between this angle and the provided value.
 If differenced with an angle, a new angle object is returned.</p>
</text></doc>
<method name='`-'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='269'/>
<arguments><argument name='_angle'><type><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></type></argument></arguments>
<returntype><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='subtract' homogen-type='method'><doc><text><p>Subtracts the provided angle from the current angle. The result is
 normalized within 360 degrees.</p>
</text></doc>
<method name='subtract'>
<arguments><argument name='angle'><type><or><float/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='subtract'>
<arguments><argument name='angle'><type><or><float/><int/></or></type></argument><argument name='type'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
<method name='subtract'>
<arguments><argument name='angle'><type><object resolved='predef::Math.Angle'>Angle</object></type></argument></arguments>
<returntype><object resolved='predef::Math.Angle'>Angle</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*' homogen-type='method'><doc><text><p>Returns the product between this angle and the provided value.
 If differenced with an angle, a new angle object is returned.</p>
</text></doc>
<method name='`*'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='291'/>
<arguments><argument name='_angle'><type><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></type></argument></arguments>
<returntype><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='`/' homogen-type='method'><doc><text><p>Returns the fraction between this angle and the provided value.
 If differenced with an angle, a new angle object is returned.</p>
</text></doc>
<method name='`/'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='298'/>
<arguments><argument name='_angle'><type><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></type></argument></arguments>
<returntype><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='`%' homogen-type='method'><doc><text><p>Returns this result of this angle modulo the provided value.
 If differenced with an angle, a new angle object is returned.</p>
</text></doc>
<method name='`%'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='305'/>
<arguments><argument name='_angle'><type><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></type></argument></arguments>
<returntype><or><float/><int/><object resolved='predef::Math.Angle'>Angle</object></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='__hash' homogen-type='method'><doc/>
<method name='__hash'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='311'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Compares the unnormalized angle of two Angle objects.</p>
</text></doc>
<method name='`=='><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='316'/>
<arguments><argument name='_angle'><type><object resolved='predef::Math.Angle'>Angle</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc><text><p>Compares the unnormalized angle of two Angle objects.</p>
</text></doc>
<method name='`&lt;'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='321'/>
<arguments><argument name='_angle'><type><object resolved='predef::Math.Angle'>Angle</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p>Compares the unnormalized angle of two Angle objects.</p>
</text></doc>
<method name='`&gt;'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='326'/>
<arguments><argument name='_angle'><type><object resolved='predef::Math.Angle'>Angle</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='5'/><classname>"___"</classname></inherit>
</docgroup>
<docgroup homogen-name='convert_angle' homogen-type='method'><doc><text><p>This function converts between degrees, radians and gons. The
 <ref resolved='predef::Math.convert_angle.from'>from</ref> and <ref resolved='predef::Math.convert_angle.to'>to</ref> arguments may be any of the follwoing
 strings: "deg", "rad", "gon" and "str" for degrees, radians, gon
 and streck respectivly. The output is not guaranteed to be within
 the first turn, e.g. converting 10 radians yields almost 573
 degrees as output.</p>
</text></doc>
<method name='convert_angle'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='18'/>
<arguments><argument name='angle'><type><or><int/><float/></or></type></argument><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><or><int/><float/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='choose' homogen-type='method'><doc><text><p>Calculate binomial koefficient <ref resolved='predef::Math.choose.n'>n</ref> choose <ref resolved='predef::Math.choose.k'>k</ref>.</p>
<p> This is equvivalent to <tt><ref resolved='predef::Math.choose.n'>n</ref>!/(<ref resolved='predef::Math.choose.k'>k</ref>!*(<ref resolved='predef::Math.choose.n'>n</ref>-<ref resolved='predef::Math.choose.k'>k</ref>)!)</tt>.</p>
</text></doc>
<method name='choose'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='349'/>
<arguments><argument name='n'><type><int/></type></argument><argument name='k'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='log10' homogen-type='method'><doc><text><p>The 10-logarithm of <ref resolved='predef::Math.log10.x'>x</ref>.</p>
</text></doc>
<method name='log10'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='363'/>
<arguments><argument name='x'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='factor' homogen-type='method'><doc><text><p>Factorize the integer <ref resolved='predef::Math.factor.x'>x</ref>. The returned list of factors will
 be sorted biggest to smallest factor.</p>
</text><group><note/><text><p>This function is only available when Pike has been compiled with
   bignums.</p>
</text></group></doc>
<method name='factor'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/module.pmod.in' first-line='375'/>
<arguments><argument name='x'><type><int/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>


<class name='Matrix'><doc><text><p>Matrix representation with double precision floating point values.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes the matrix as a 1D or 2D matrix, e.g.
  <expr>Math.Matrix( ({({1,2}),({3,4})}) )</expr>.</p>
</text></doc>
<method name='create'>
<arguments><argument name='matrix_2d'><type><array><valuetype><array><valuetype><or><int/><float/></or></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='matrix_1d'><type><array><valuetype><or><int/><float/></or></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initializes the matrix as to be a <ref resolved='predef::Math.Matrix.create.n'>n</ref>*<ref resolved='predef::Math.Matrix.create.m'>m</ref> matrix with <ref resolved='predef::Math.Matrix.create.init'>init</ref> in
 every value. If no third argument is given, or the third argument
 is <expr>"identity"</expr>, the matrix will be initialized with all
 zeroes except for the diagonal which will be <expr>1</expr>.</p>
</text></doc>
<method name='create'>
<arguments><argument name='n'><type><int/></type></argument><argument name='m'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='n'><type><int/></type></argument><argument name='m'><type><int/></type></argument><argument name='type'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='n'><type><int/></type></argument><argument name='m'><type><int/></type></argument><argument name='init'><type><or><float/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>When <ref resolved='predef::Math.Matrix.create.type'>type</ref> is <expr>"identity"</expr> the matrix is initializes as a
 square identity matrix.</p>
</text></doc>
<method name='create'>
<arguments><argument name='type'><type><string/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>When <ref resolved='predef::Math.Matrix.create.type'>type</ref> is <expr>"rotate"</expr> the matrix is initialized as a
 rotation matrix.</p>
</text></doc>
<method name='create'>
<arguments><argument name='type'><type><string/></type></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>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='type'><type><string/></type></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>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast the matrix to an array and get back a
 double array of floats with the matrix values.</p>
</text><group><seealso/><text><p><ref resolved='predef::Math.Matrix.vect'>vect</ref></p>
</text></group></doc>
<method name='cast'>
<arguments><argument name='to_what'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
<method name='cast'>
<arguments><argument name='to_what'><type><string/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='vect' homogen-type='method'><doc><text><p>Return all the elements of the matrix as an array of numbers</p>
</text></doc>
<method name='vect'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-name='transpose' homogen-type='method'><doc><text><p>Returns the transpose of the matrix as a new object.</p>
</text></doc>
<method name='transpose'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Norm of the matrix, and the square of the norm
	of the matrix. (The later method is because you
	may skip a square root sometimes.)</p>
<p>	This equals |A| or sqrt( A<sub>0</sub><sup>2</sup> +
	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>	<expr>m-&gt;normv()</expr> is equal to <expr>m*(1.0/m-&gt;norm())</expr>,
	with the exception that the zero vector will still be
	the zero vector (no error).</p>
</text></doc>
<method name='norm'>
<arguments/>
<returntype><float/></returntype>
</method>
<method name='norm2'>
<arguments/>
<returntype><float/></returntype>
</method>
<method name='normv'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Add this matrix to another matrix. A new matrix is returned.
	The matrices must have the same size.</p>
</text></doc>
<method name='`+'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`+'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='``+'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`+'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='add'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`+'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Subtracts this matrix from another. A new matrix is returned.
	<expr>-m</expr> is equal to <expr>-1*m</expr>.</p>
</text></doc>
<method name='`-'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='`-'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`-'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='``-'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`-'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='sub'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`-'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sum' homogen-type='method'><doc><text><p>Produces the sum of all the elements in the matrix.</p>
</text></doc>
<method name='sum'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Produces the maximum or minimum value of all the elements in the
 matrix.</p>
</text></doc>
<method name='max'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='min'>
<arguments/>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Matrix multiplication.</p>
</text></doc>
<method name='`*'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`*'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='``*'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`*'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
<method name='mult'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.`*'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='cross' homogen-type='method'><doc><text><p>Matrix cross-multiplication.</p>
</text></doc>
<method name='cross'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.cross'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='dot_product' homogen-type='method'><doc><text><p>Matrix dot product.</p>
</text></doc>
<method name='dot_product'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.dot_product'/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='convolve' homogen-type='method'><doc><text><p>Convolve called matrix with the argument.</p>
</text></doc>
<method name='convolve'>
<arguments><argument name='with'><type><object resolved='predef::Math.Matrix.convolve'/></type></argument></arguments>
<returntype><object resolved='predef::Math.Matrix'>Matrix</object></returntype>
</method>
</docgroup>
</class>

<class name='FMatrix'><doc><text><p>Matrix representation with single precision floating point values.</p>
</text></doc><docgroup homogen-name='Matrix' homogen-type='inherit'><doc>
</doc>
<inherit name='Matrix'><classname resolved='predef::Math.Matrix'>Matrix</classname></inherit>
</docgroup>
</class>

<class name='LMatrix'><doc><text><p>Matrix representation with 64 bit integer values.</p>
</text></doc><docgroup homogen-name='Matrix' homogen-type='inherit'><doc>
</doc>
<inherit name='Matrix'><classname resolved='predef::Math.Matrix'>Matrix</classname></inherit>
</docgroup>
</class>

<class name='IMatrix'><doc><text><p>Matrix representation with 32 bit integer values.</p>
</text></doc><docgroup homogen-name='Matrix' homogen-type='inherit'><doc>
</doc>
<inherit name='Matrix'><classname resolved='predef::Math.Matrix'>Matrix</classname></inherit>
</docgroup>
</class>

<class name='SMatrix'><doc><text><p>Matrix representation with 16 bit integer values.</p>
</text></doc><docgroup homogen-name='Matrix' homogen-type='inherit'><doc>
</doc>
<inherit name='Matrix'><classname resolved='predef::Math.Matrix'>Matrix</classname></inherit>
</docgroup>
</class>

<module name='Transforms'>

<class name='FFT'><docgroup homogen-name='rFFT' homogen-type='method'><doc><text><p>Returns the FFT of the input array.
   The input must be real and the output is complex.
   The output consists of an array. It's first element is the amplitudes and the
   second element is the phases.</p>
</text><group><param name='real_input'/><text><p>The array of floats and/or ints to transform.</p>
</text></group><group><note/><text><p>rIFFT(rFFT()) returns the input array scaled by n=sizeof(input array).
   This is due to the nature of the DFT algorithm.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Math.Transforms.FFT.rIFFT'>rIFFT()</ref></p>
</text></group></doc>
<method name='rFFT'>
<arguments><argument name='real_input'><type><array><valuetype><or><int/><float/></or></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><float/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='rIFFT' homogen-type='method'><doc><text><p>Returns the inverse FFT of the input array.
   The input must be complex and guaranteed to generate a real output.</p>
<p>   The input is an array. It's first element is the amplitudes and the
   second element is the phases.</p>
<p>   The output is an array of the real values for the iFFT.</p>
</text><group><param name='real_input'/><text><p>The array of floats and/or ints to transform.</p>
</text></group><group><note/><text><p>rIFFT(rFFT()) returns the input array scaled by n=sizeof(input array).
   This is due to the nature of the DFT algorithm.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Math.Transforms.FFT.rFFT'>rFFT()</ref></p>
</text></group></doc>
<method name='rIFFT'>
<arguments><argument name='input'><type><array><valuetype><array><valuetype><float/></valuetype></array></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Creates a new transform object. If n is specified, a plan
  is created for transformations of n-size arrays.</p>
</text><group><param name='n'/><text><p>Size of the transform to be preformed. Note that the transform object
   will be initialized for this size, but if an array of different size is
   sent to the object, it will be reinitialized. This can be used to gain
   preformace if all transforms will be of a given size.</p>
</text></group><group><param name='exact'/><text><p>If exact is 1, a "better" plan for the transform will be created. This
   will take more time though. Use only if preformance is needed.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='n'><type><or><void/><int/></or></type></argument><argument name='exact'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module><docgroup homogen-name='pi' homogen-type='constant'><doc><text><p>The constant pi (3.14159265358979323846).</p>
</text></doc>
<constant name='pi'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/math_module.c' first-line='48'/></constant>
</docgroup>
<docgroup homogen-name='e' homogen-type='constant'><doc><text><p>The constant e (2.7182818284590452354).</p>
</text></doc>
<constant name='e'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/math_module.c' first-line='52'/></constant>
</docgroup>
<docgroup homogen-name='inf' homogen-type='constant'><doc><text><p>Floating point infinity.</p>
</text></doc>
<constant name='inf'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/math_module.c' first-line='56'/></constant>
</docgroup>
<docgroup homogen-name='nan' homogen-type='constant'><doc><text><p>Floating point not-a-number (e.g. inf/inf).</p>
</text></doc>
<constant name='nan'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Math/math_module.c' first-line='60'/></constant>
</docgroup>
</module>







<module name='spider'>

<docgroup homogen-name='parse_accessed_database' homogen-type='method'><doc/>
<method name='parse_accessed_database'>
<arguments><argument name='database'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping><int/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_html' homogen-type='method'><doc/>
<method name='parse_html'>
<arguments><argument name='html'><type><string/></type></argument><argument name='tag_callbacks'><type><mapping><indextype><string/></indextype><valuetype><function><argtype><string/></argtype><argtype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><string/><array/></or></returntype></function></valuetype></mapping></type></argument><argument name='container_callbacks'><type><mapping><indextype><string/></indextype><valuetype><function><argtype><string/></argtype><argtype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></argtype><argtype><string/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><string/><array/></or></returntype></function></valuetype></mapping></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='parse_html_lines' homogen-type='method'><doc/>
<method name='parse_html_lines'>
<arguments><argument name='html'><type><string/></type></argument><argument name='tag_callbacks'><type><mapping><indextype><string/></indextype><valuetype><function><argtype><string/></argtype><argtype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></argtype><argtype><int/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><string/><array/></or></returntype></function></valuetype></mapping></type></argument><argument name='container_callbacks'><type><mapping><indextype><string/></indextype><valuetype><function><argtype><string/></argtype><argtype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></argtype><argtype><string/></argtype><argtype><int/></argtype><argtype><varargs><mixed/></varargs></argtype><returntype><or><string/><array/></or></returntype></function></valuetype></mapping></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_end_quote' homogen-type='method'><doc/>
<method name='set_end_quote'>
<arguments><argument name='quote'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_start_quote' homogen-type='method'><doc/>
<method name='set_start_quote'>
<arguments><argument name='quote'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all_active_fds' homogen-type='method'><doc/>
<method name='get_all_active_fds'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='fd_info' homogen-type='method'><doc/>
<method name='fd_info'>
<arguments><argument name='fd'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_low_program_name' homogen-type='method'><doc/>
<method name='_low_program_name'>
<arguments><argument name='prog'><type><program/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_dump_obj_table' homogen-type='method'><doc/>
<method name='_dump_obj_table'>
<arguments/>
<returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='stardate' homogen-type='method'><doc/>
<method name='stardate'>
<arguments><argument name='time'><type><int/></type></argument><argument name='precision'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='discdate' homogen-type='method'><doc/>
<method name='discdate'>
<arguments><argument name='time'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module>







<module name='CommonLog'><doc><text><p>The CommonLog module is used to parse the lines in a www server's logfile,
 which must be in "common log" format -- such as used by default for the
 access log by Roxen, Caudium, Apache et al.</p>
</text></doc><docgroup homogen-type='method' homogen-name='read'><doc><text><p>Reads the log file and calls the callback function for every parsed line.
 For lines that fails to be parsed the callback is not called not is any
 error thrown. The number of bytes read are returned.</p>
</text><group><param name='callback'/><text><p>The callbacks first argument is an array with the different parts of the
 log entry.</p>
<array><group><elem><type><string/></type><index>remote_host</index></elem></group><group><elem><type><or><int><min>0</min><max>0</max></int><string/></or></type><index>ident_user</index></elem></group><group><elem><type><or><int><min>0</min><max>0</max></int><string/></or></type><index>auth_user</index></elem></group><group><elem><type><int/></type><index>year</index></elem></group><group><elem><type><int/></type><index>month</index></elem></group><group><elem><type><int/></type><index>day</index></elem></group><group><elem><type><int/></type><index>hours</index></elem></group><group><elem><type><int/></type><index>minutes</index></elem></group><group><elem><type><int/></type><index>seconds</index></elem></group><group><elem><type><int/></type><index>timezone</index></elem></group><group><elem><type><or><int><min>0</min><max>0</max></int><string/></or></type><index>method</index></elem><text><p>One of "GET", "POST", "HEAD" etc.</p>
</text></group><group><elem><type><or><int><min>0</min><max>0</max></int><string/></or></type><index>path</index></elem></group><group><elem><type><string/></type><index>protocol</index></elem><text><p>E.g. "HTTP/1.0"</p>
</text></group><group><elem><type><int/></type><index>reply_code</index></elem><text><p>One of 200, 404 etc.</p>
</text></group><group><elem><type><int/></type><index>bytes</index></elem></group></array><p>The second callback argument is the current offset to the end of the
 current line.</p>
</text></group><group><param name='offset'/><text><p>The position in the file where the parser should begin.</p>
</text></group></doc>
<method name='read'>
<arguments><argument name='callback'><type><function><argtype><array><valuetype><or><int/><string/></or></valuetype></array></argtype><argtype><int/></argtype><returntype><void/></returntype></function></type></argument><argument name='logfile'><type><or><object resolved='predef::Stdio.File'>Stdio.File</object><string/></or></type></argument><argument name='offset'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</module>

<module name='DVB'><doc><text><p>Implements Digital Video Broadcasting interface</p>
</text><group><note/><text><p>Only Linux version is supported.</p>
</text></group></doc>

<class name='dvb'><doc><text><p>Main class.</p>
</text></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Create a DVB object.</p>
</text><group><param name='card_number'/><text><p>The number of card equipment.</p>
</text></group><group><note/><text><p>The number specifies which device will be opened.
   Ie. /dev/ost/demux0, /dev/ost/demux1 ... for
   DVB v0.9.4  or /dev/dvb/demux0, /dev/dvb/demux1 ...
   for versions 2.0+</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='card_number'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fe_status'><doc><text><p>Return status of a DVB object's frondend device.</p>
</text><group><returns/><text><p>The resulting mapping contains the following fields:</p>
<mapping><group><member><type><string/></type><index>"power"</index></member><text><p>If 1 the frontend is powered up and is ready to be used.</p>
</text></group><group><member><type><string/></type><index>"signal"</index></member><text><p>If 1 the frontend detects a signal above a normal noise level</p>
</text></group><group><member><type><string/></type><index>"lock"</index></member><text><p>If 1 the frontend successfully locked to a DVB signal</p>
</text></group><group><member><type><string/></type><index>"carrier"</index></member><text><p>If 1 carrier dectected in signal</p>
</text></group><group><member><type><string/></type><index>"biterbi"</index></member><text><p>If 1 then lock at viterbi state</p>
</text></group><group><member><type><string/></type><index>"sync"</index></member><text><p>If 1 then TS sync byte detected</p>
</text></group><group><member><type><string/></type><index>"tuner_lock"</index></member><text><p>If 1 then tuner has a frequency lock</p>
</text></group></mapping></text></group></doc>
<method name='fe_status'>
<arguments/>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fe_info'><doc><text><p>Return info of a frondend device.</p>
</text><group><note/><text><p>The information heavily depends on driver. Many fields
   contain dumb values.</p>
</text></group></doc>
<method name='fe_info'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tune'><doc><text><p>Tunes to apropriate transponder's parameters.</p>
</text><group><param name='lnb'/><text><p>DiSeQc number of LNB.</p>
</text></group><group><param name='freq'/><text><p>Frequency divided by 1000.</p>
</text></group><group><param name='pol'/><text><p>Polarization. <expr>0</expr> or <expr>"v"</expr> for vertical type,
  <expr>1</expr> or <expr>"h"</expr> for horizontal one.</p>
</text></group><group><param name='sr'/><text><p>The service rate parameter.</p>
</text></group></doc>
<method name='tune'>
<arguments><argument name='lnb'><type><int><min>0</min><max>3</max></int></type></argument><argument name='freq'><type><int/></type></argument><argument name='pol'><type><or><int><min>0</min><max>1</max></int><string/></or></type></argument><argument name='sr'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_pids'><doc><text><p>Returns mapping with info of currently tuned program's pids.</p>
</text><group><seealso/><text><p><ref resolved='predef::DVB.dvb.tune'>tune()</ref></p>
</text></group></doc>
<method name='get_pids'>
<arguments/>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='analyze_pat'><doc><text><p>Return mapping of all PMT.</p>
<p> sid:prognum</p>
</text></doc>
<method name='analyze_pat'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='analyze_pmt'><doc><text><p>Parse PMT table.</p>
</text><group><seealso/><text><p><ref resolved='predef::DVB.dvb.analyze_pat'>analyze_pat()</ref></p>
</text></group></doc>
<method name='analyze_pmt'>
<arguments><argument name='sid'><type><int/></type></argument><argument name='prognum'><type><int/></type></argument></arguments>
<returntype><or><array><valuetype><mapping/></valuetype></array><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='stream'><doc><text><p>Create a new stream reader object for PID.</p>
</text><group><param name='pid'/><text><p>PID of stream.</p>
</text></group><group><param name='rcb'/><text><p>Callback function called whenever there is the data to read
   from stream. Only for nonblocking mode.</p>
</text></group><group><param name='ptype'/><text><p>Type of payload data to read. By default, audio data is fetched.</p>
</text></group><group><note/><text><p>Setting async callback doesn't set the object to nonblocking state.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::DVB.Stream.read'>DVB.Stream()-&gt;read()</ref></p>
</text></group></doc>
<method name='stream'>
<arguments><argument name='pid'><type><int/></type></argument><argument name='rcb'><type><or><int/><function/></or></type></argument><argument name='ptype'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::DVB.Stream'>DVB.Stream</object></returntype>
</method>
<method name='stream'>
<arguments><argument name='pid'><type><int/></type></argument><argument name='rcb'><type><or><int/><function/></or></type></argument></arguments>
<returntype><object resolved='predef::DVB.Stream'>DVB.Stream</object></returntype>
</method>
<method name='stream'>
<arguments><argument name='pid'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::DVB.Stream'>DVB.Stream</object></returntype>
</method>
</docgroup>
</class>

<class name='Stream'><doc><text><p>Represents an elementary data stream (PES).</p>
</text></doc><docgroup homogen-type='method' homogen-name='destroy'><doc><text><p>Purge a stream reader.</p>
</text><group><seealso/><text><p><ref resolved='predef::DVB.dvb.stream'>DVB.dvb()-&gt;stream()</ref>, <ref resolved='predef::DVB.Stream.read'>read()</ref></p>
</text></group></doc>
<method name='destroy'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read'><doc><text><p>Read data from a stream. It reads up to read buffer size data.</p>
</text><group><note/><text><p>Read buffer size is 4096 by default.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::DVB.dvb.stream'>DVB.dvb()-&gt;stream()</ref>, <ref resolved='predef::DVB.Stream.close'>close()</ref></p>
</text></group></doc>
<method name='read'>
<arguments/>
<returntype><or><string/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='close'><doc><text><p>Closes an open stream.</p>
</text><group><seealso/><text><p><ref resolved='predef::DVB.Stream.read'>read()</ref></p>
</text></group></doc>
<method name='close'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Audio'><doc><text><p>Object for controlling an audio subsystem on full featured cards.</p>
</text></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Create a Audio object.</p>
</text><group><param name='card_number'/><text><p>The number of card equipment.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='card_number'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mute'><doc><text><p>Mute or unmute audio device.</p>
</text></doc>
<method name='mute'>
<arguments><argument name='mute'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mute'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='status'><doc><text><p>Returns mapping of current audio device status.</p>
</text></doc>
<method name='status'>
<arguments/>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mixer'><doc><text><p>Sets output level on DVB audio device.</p>
</text></doc>
<method name='mixer'>
<arguments><argument name='left'><type><int/></type></argument><argument name='right'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mixer'>
<arguments><argument name='both'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class></module>

<module name='Perl'><doc><text><p>This module allows access to an embedded Perl interpreter, if
 a libperl.so (or equivalent) was found during the installation
 of Pike.</p>
</text></doc>

<class name='Perl'><doc><text><p>An object of this class is a Perl interpreter.</p>
</text></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Create a Perl interpreter object. There can only be one Perl
 interpreter object at the same time, unless Perl was compiled
 with the MULTIPLICITY option, and Pike managed to figure this
 out during installation. An error will be thrown if no Perl
 interpreter is available.</p>
</text></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='parse'><doc><text><p>Parse a Perl script file and set up argument and environment for it.
 Returns zero on success, and non-zero if the parsing failed.</p>
</text><group><param name='args'/><text><p>Arguments in the style of argv, i.e. with the name of the script first.</p>
</text></group><group><param name='env'/><text><p>Environment mapping, mapping environment variable names to
   to their values.</p>
</text></group></doc>
<method name='parse'>
<arguments><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='parse'>
<arguments><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='env'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='run'><doc><text><p>Run a previously parsed Perl script file. Returns a status code.</p>
</text></doc>
<method name='run'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='eval'><doc><text><p>Evalute a Perl expression in a scalar context, and return the
 result if it is a simple value type. Unsupported value types
 are rendered as 0.</p>
</text></doc>
<method name='eval'>
<arguments><argument name='expression'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='eval_list'><doc><text><p>Evalute a Perl expression in a list context, and return the
 result if it is a simple value type, or an array of simple value
 types. Unsupported value types are rendered as 0.</p>
</text></doc>
<method name='eval_list'>
<arguments><argument name='expression'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='call'><doc><text><p>Call a Perl subroutine in a scalar context, and return the
 result if it is a simple value type. Unsupported value types are
 rendered as 0.</p>
</text><group><param name='name'/><text><p>The name of the subroutine to call, as an 8-bit string.</p>
</text></group><group><param name='arguments'/><text><p>Zero or more arguments to the function. Only simple value
   types are supported. Unsupported value types will cause an
   error to be thrown.</p>
</text></group></doc>
<method name='call'>
<arguments><argument name='name'><type><string/></type></argument><argument name='arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='call_list'><doc><text><p>Call a Perl subroutine in a list context, and return the
 result if it is a simple value type, or an array of simple
 value types. Unsupported value types are rendered as 0.</p>
</text><group><param name='name'/><text><p>The name of the subroutine to call, as an 8-bit string.</p>
</text></group><group><param name='arguments'/><text><p>Zero or more arguments to the function. Only simple value
   types are supported. Unsupported value types will cause an
   error to be thrown.</p>
</text></group></doc>
<method name='call_list'>
<arguments><argument name='name'><type><string/></type></argument><argument name='arguments'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_scalar'><doc><text><p>Get the value of a Perl scalar variable. Returns the value, or a
 plain 0 if the value type was not supported.</p>
</text><group><param name='name'/><text><p>Name of the scalar variable, as an 8-bit string.</p>
</text></group></doc>
<method name='get_scalar'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_scalar'><doc><text><p>Set the value of a Perl scalar variable.</p>
</text><group><param name='name'/><text><p>Name of the scalar variable, as an 8-bit string.</p>
</text></group><group><param name='value'/><text><p>The new value. Only simple value types are supported. Throws
   an error for unsupported value types.</p>
</text></group></doc>
<method name='set_scalar'>
<arguments><argument name='name'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_array_item'><doc><text><p>Get the value of an entry in a Perl array variable. Returns the
 value, or a zero-type value if indexing outside the array, or a
 plain zero if the value type was not supported.</p>
</text><group><param name='name'/><text><p>Name of the array variable, as an 8-bit string.</p>
</text></group><group><param name='index'/><text><p>Array index. An error is thrown if the index is negative,
   non-integer or a bignum.</p>
</text></group></doc>
<method name='get_array_item'>
<arguments><argument name='name'><type><string/></type></argument><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_array_item'><doc><text><p>Set the value of an entry in a Perl array variable. Only simple
 value types are supported. Throws an error for unsupported
 value types.</p>
</text><group><param name='name'/><text><p>Name of the array variable, as an 8-bit string.</p>
</text></group><group><param name='index'/><text><p>Array index. An error is thrown if the index is negative,
   non-integer or a bignum.</p>
</text></group><group><param name='value'/><text><p>New value. Only simple value types are supported. An error is
   thrown for unsupported value types.</p>
</text></group></doc>
<method name='set_array_item'>
<arguments><argument name='name'><type><string/></type></argument><argument name='index'><type><int/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_hash_item'><doc><text><p>Get the value of an entry in a Perl hash variable. Returns the value,
 or a zero-type value if the hash had no entry for the given key, or
 a plain 0 if the returned value type was not supported.</p>
</text><group><param name='name'/><text><p>Name of the array variable, as an 8-bit string.</p>
</text></group><group><param name='key'/><text><p>Hash key. Only simple value types are supported. An error is
   thrown for unsupported value types.</p>
</text></group></doc>
<method name='get_hash_item'>
<arguments><argument name='name'><type><string/></type></argument><argument name='key'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_hash_item'><doc><text><p>Set the value of an entry in a Perl hash variable.</p>
</text><group><param name='name'/><text><p>Name of the hash variable, as an 8-bit string.</p>
</text></group><group><param name='key'/><text><p>Hash key. Only simple value types are supported. An error is
   thrown for unsupported value types.</p>
</text></group><group><param name='value'/><text><p>New value. Only simple value types are supported. An error is
   thrown for unsupported value types.</p>
</text></group></doc>
<method name='set_hash_item'>
<arguments><argument name='name'><type><string/></type></argument><argument name='key'><type><mixed/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='array_size'><doc><text><p>Get the size of the Perl array variable with the given name.</p>
</text><group><param name='name'/><text><p>Name of the array variable, as an 8-bit string.</p>
</text></group></doc>
<method name='array_size'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_array'><doc><text><p>Get the contents of a Perl array variable as a Pike array. If the
 size of the array is larger than the specified array size limit,
 the returned Pike array will be truncated according to the limit.</p>
</text><group><param name='name'/><text><p>Name of the array variable, as an 8-bit string.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Perl.Perl.array_size_limit'>array_size_limit()</ref></p>
</text></group></doc>
<method name='get_array'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_hash_keys'><doc><text><p>Get the keys (indices) of a Perl hash variable as a Pike array. If
 the size of the resulting array is larger than the specified array
 size limit, an error will be thrown.</p>
</text><group><param name='name'/><text><p>Name of the hash variable, as an 8-bit string.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Perl.Perl.array_size_limit'>array_size_limit()</ref></p>
</text></group></doc>
<method name='get_hash_keys'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='array_size_limit'><doc><text><p>Get (and optionally set) the array size limit for this interpreter
 instance. Without arguments, the current limit is returned. With
 an integer argument, the limit is set to that value, and the same
 value is returned.</p>
<p> The array size limit is mainly a way of ensuring that there isn't
 a sudden explosion in memory usage and data conversion time in this
 embedding interface. There is no particular limit other than available
 memory in Perl itself.</p>
</text><group><note/><text><p>The default array size limit is 500 elements, but this may change
   in future releases of Pike.</p>
<p>   The maximum array size limit is the highest number representable
   as a non-bignum integer (which is typically 2147483647 on a
   traditional 32-bit architecture).</p>
</text></group><group><param name='limit'/><text><p>The new array size limit.</p>
</text></group></doc>
<method name='array_size_limit'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='array_size_limit'>
<arguments><argument name='limit'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class></module>












<module name='SANE'><doc><text><p>This module enables access to the SANE (Scanner Access Now Easy)
  library from pike</p>
</text></doc>

<class name='Scanner'><docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_options'><doc><text><p>This method returns an array where every element is a
 mapping, layed out as follows.</p>
<mapping><group><member><type><string/></type><index>"name"</index></member></group><group><member><type><string/></type><index>"title"</index></member></group><group><member><type><string/></type><index>"desc"</index></member></group><group><member><type><string/></type><index>"type"</index></member><text><string><group><value>"boolean"</value><value>"int"</value><value>"float"</value><value>"string"</value><value>"button"</value><value>"group"</value></group></string></text></group><group><member><type><string/></type><index>"unit"</index></member><text><string><group><value>"none"</value><value>"pixel"</value><value>"bit"</value><value>"mm"</value><value>"dpi"</value><value>"percent"</value><value>"microsend"</value></group></string></text></group><group><member><type><int/></type><index>"size"</index></member></group><group><member><type><multiset/></type><index>"cap"</index></member><text><multiset><group><index><value>"soft_select"</value></index><index><value>"hard_select"</value></index><index><value>"emulate"</value></index><index><value>"automatic"</value></index><index><value>"inactive"</value></index><index><value>"advanced"</value></index></group></multiset></text></group><group><member><type><or><int><min>0</min><max>0</max></int><mapping/></or></type><index>"constraint"</index></member><text><p>Constraints can be of three different types; range, word list or string
     list. Constraint contains 0 if there are no constraints.</p>
<mapping name='range'><group><member><type><string/></type><index>"type"</index></member><text><p>Contains the value "range".</p>
</text></group><group><member><type><int/></type><index>"max"</index></member><member><type><int/></type><index>"min"</index></member><member><type><int/></type><index>"quant"</index></member></group></mapping>
<mapping name='word list'><group><member><type><string/></type><index>"type"</index></member><text><p>Contains the value "list".</p>
</text></group><group><member><type><array><valuetype><or><float/><int/></or></valuetype></array></type><index>"list"</index></member></group></mapping>
<mapping name='string list'><group><member><type><string/></type><index>"type"</index></member><text><p>Contains the value "list".</p>
</text></group><group><member><type><array><valuetype><string/></valuetype></array></type><index>"list"</index></member></group></mapping></text></group></mapping></text></doc>
<method name='list_options'>
<arguments/>
<returntype><array><valuetype><mapping/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_option'><doc><text><p>If no value is specified, the option is set to it's default value</p>
</text></doc>
<method name='set_option'>
<arguments><argument name='name'><type><string/></type></argument><argument name='new_value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='set_option'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_option'><doc/>
<method name='get_option'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_parameters'><doc><group><returns/><text><mapping><group><member><type><int/></type><index>"format"</index></member><member><type><int/></type><index>"last_frame"</index></member><member><type><int/></type><index>"lines"</index></member><member><type><int/></type><index>"depth"</index></member><member><type><int/></type><index>"pixels_per_line"</index></member><member><type><int/></type><index>"bytes_per_line"</index></member></group></mapping></text></group></doc>
<method name='get_parameters'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='simple_scan'><doc/>
<method name='simple_scan'>
<arguments/>
<returntype><object resolved='predef::Image.Image'>Image.Image</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='row_scan'><doc/>
<method name='row_scan'>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Image.Image'>Image.Image</object></argtype><argtype><int/></argtype><argtype><object resolved='predef::SANE.Scanner'>Scanner</object></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='nonblocking_row_scan'><doc/>
<method name='nonblocking_row_scan'>
<arguments><argument name='callback'><type><function><argtype><object resolved='predef::Image.Image'>Image.Image</object></argtype><argtype><int/></argtype><argtype><object resolved='predef::SANE.Scanner'>Scanner</object></argtype><argtype><int/></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cancel_scan'><doc/>
<method name='cancel_scan'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='list_scanners'><doc><text><p>Returns an array with all available scanners.</p>
</text><group><example/><text><p>Pike v0.7 release 120 running Hilfe v2.0 (Incremental Pike Frontend)
   &gt; SANE.list_scanners();
     Result: ({
            ([
              "model":"Astra 1220S     ",
              "name":"umax:/dev/scg1f",
              "type":"flatbed scanner",
              "vendor":"UMAX    "
            ]),
            ([
              "model":"Astra 1220S     ",
              "name":"net:lain.idonex.se:umax:/dev/scg1f",
              "type":"flatbed scanner",
              "vendor":"UMAX    "
            ])
        })</p>
</text></group></doc>
<method name='list_scanners'>
<arguments/>
<returntype><array><valuetype><mapping/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant'><doc/>
<constant name='FrameGray'><source-position first-line='759' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/SANE/sane.c'/></constant>
<constant name='FrameRGB'><source-position first-line='760' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/SANE/sane.c'/></constant>
<constant name='FrameRed'><source-position first-line='761' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/SANE/sane.c'/></constant>
<constant name='FrameGreen'><source-position first-line='762' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/SANE/sane.c'/></constant>
<constant name='FrameBlue'><source-position first-line='763' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/SANE/sane.c'/></constant>
</docgroup>
</module>




























































































<module name='System'><docgroup homogen-name='setpwent' homogen-type='method'><doc><text><p>Resets the <ref resolved='predef::System.getpwent'>getpwent</ref> function to the first entry in the passwd source
   using the systemfunction <tt>setpwent(3)</tt>.</p>
</text><group><returns/><text><p>Always <expr>0</expr> (zero)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::get_all_users'>get_all_users()</ref>
   <ref resolved='predef::System.getpwent'>getpwent()</ref>
   <ref resolved='predef::System.endpwent'>endpwent()</ref></p>
</text></group></doc>
<method name='setpwent'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='endpwent' homogen-type='method'><doc><text><p>Closes the passwd source opened by <ref resolved='predef::System.getpwent'>getpwent</ref> function using the
   systemfunction <tt>endpwent(3)</tt>.</p>
</text><group><returns/><text><p>Always <expr>0</expr> (zero)</p>
</text></group><group><seealso/><text><p><ref resolved='predef::get_all_users'>get_all_users()</ref>
   <ref resolved='predef::System.getpwent'>getpwent()</ref>
   <ref resolved='predef::System.setpwent'>setpwent()</ref></p>
</text></group></doc>
<method name='endpwent'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getpwent' homogen-type='method'><doc><text><p>When first called, the <ref resolved='predef::System.getpwent'>getpwent</ref> function opens the passwd source
   and returns the first record using the systemfunction <tt>getpwent(3)</tt>.
   For each following call, it returns the next record until EOF.</p>
<p>   Call <ref resolved='predef::System.endpwent'>endpwent</ref> when done using <ref resolved='predef::System.getpwent'>getpwent</ref>.</p>
</text><group><returns/><text><p>An array with the information about the user</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Users username (loginname)</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>User password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>Users ID</p>
</text></group><group><elem><type><int/></type><index>3</index></elem><text><p>Users primary group ID</p>
</text></group><group><elem><type><string/></type><index>4</index></elem><text><p>Users real name an possibly some other info</p>
</text></group><group><elem><type><string/></type><index>5</index></elem><text><p>Users home directory</p>
</text></group><group><elem><type><string/></type><index>6</index></elem><text><p>Users shell</p>
</text></group></array><p>0 if EOF.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::get_all_users'>get_all_users()</ref>
   <ref resolved='predef::getpwnam'>getpwnam()</ref>
   <ref resolved='predef::System.getpwent'>getpwent()</ref>
   <ref resolved='predef::System.setpwent'>setpwent()</ref>
   <ref resolved='predef::System.endpwent'>endpwent()</ref></p>
</text></group></doc>
<method name='getpwent'>
<arguments/>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='setgrent' homogen-type='method'><doc><text><p>Rewinds the <ref resolved='predef::System.getgrent'>getgrent</ref> pointer to the first entry</p>
</text><group><seealso/><text><p><ref resolved='predef::get_all_groups'>get_all_groups()</ref>
   <ref resolved='predef::System.getgrent'>getgrent()</ref>
   <ref resolved='predef::System.endgrent'>endgrent()</ref></p>
</text></group></doc>
<method name='setgrent'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='endgrent' homogen-type='method'><doc><text><p>Closes the /etc/groups file after using the <ref resolved='predef::System.getgrent'>getgrent</ref> function.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_all_groups'>get_all_groups()</ref>
   <ref resolved='predef::System.getgrent'>getgrent()</ref>
   <ref resolved='predef::System.setgrent'>setgrent()</ref></p>
</text></group></doc>
<method name='endgrent'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getgrent' homogen-type='method'><doc><text><p>Get a group entry from /etc/groups file.
   <ref resolved='predef::System.getgrent'>getgrent</ref> interates thru the groups source and returns
   one entry per call using the systemfunction <tt>getgrent(3)</tt>.</p>
<p>   Always call <ref resolved='predef::System.endgrent'>endgrent</ref> when done using <ref resolved='predef::System.getgrent'>getgrent</ref>!</p>
</text><group><returns/><text><p>An array with the information about the group</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Group name</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>Group password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>ID of the group</p>
</text></group><group><elem><type><array/></type><minindex>3</minindex></elem><text><p>Array with UIDs of group members</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::get_all_groups'>get_all_groups()</ref>
   <ref resolved='predef::getgrnam'>getgrnam()</ref>
   <ref resolved='predef::getgrgid'>getgrgid()</ref></p>
</text></group></doc>
<method name='getgrent'>
<arguments/>
<returntype><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>


<class name='Memory'><doc><text><p>A popular demand is a class representing a raw piece
	of memory or a <tt>mmap</tt>'ed file. This is usually not the most
	effective way of solving a problem, but it might help in
	rare situations.</p>
<p>	Using <tt>mmap</tt> can lead to segmentation faults in some cases.
	Beware, and read about <tt>mmap</tt> before you try anything.
	Don't blame Pike if you shoot your foot off.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Will call <ref resolved='predef::System.Memory.mmap'>mmap()</ref> or <ref resolved='predef::System.Memory.allocate'>allocate()</ref>
	depending on argument, either <tt>mmap</tt>'ing a file
	(in shared mode, writeable if possible) or allocating
	a chunk of memory.</p>
</text></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='filename_to_mmap'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='shmkey'><type><int/></type></argument><argument name='shmsize'><type><int/></type></argument><argument name='shmflg'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='bytes_to_allocate'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p><tt>mmap</tt> a file. This will always try to mmap the file in
	PROT_READ|PROT_WRITE, readable and writable, but if it fails
	it will try once more in PROT_READ only.</p>
</text></doc>
<method name='mmap'>
<arguments><argument name='file'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mmap'>
<arguments><argument name='file'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument><argument name='offset'><type><int/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mmap_private'>
<arguments><argument name='file'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mmap_private'>
<arguments><argument name='file'><type><or><string/><object resolved='predef::Stdio.File'>Stdio.File</object></or></type></argument><argument name='offset'><type><int/></type></argument><argument name='size'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='allocate' homogen-type='method'><doc/>
<method name='allocate'>
<arguments><argument name='bytes'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='allocate'>
<arguments><argument name='bytes'><type><int/></type></argument><argument name='fill'><type><int><min>0</min><max>255</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='free' homogen-type='method'><doc><text><p>Free the allocated or &lt;tt&gt;mmap&lt;/tt&gt;ed memory.</p>
</text></doc>
<method name='free'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>returns the size of the memory (bytes).
 note: throws if not allocated</p>
</text></doc>
<method name='_sizeof'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='valid' homogen-type='method'><doc><text><p>returns 1 if the memory is valid, 0 if not allocated</p>
</text></doc>
<method name='valid'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='writeable' homogen-type='method'><doc><text><p>returns 1 if the memory is writeable, 0 if not</p>
</text></doc>
<method name='writeable'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Cast to string or array.</p>
</text><group><note/><text><p>Throws if not allocated.</p>
</text></group></doc>
<method name='cast'>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><or><string/><array/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Read a string from the memory. The 16 and 32 variants reads
	widestrings, 16 or 32 bits (2 or 4 bytes) wide, the i variants
	in intel byteorder, the normal in network byteorder, and the n
	variants in native byteorder.</p>
<p>	<ref resolved='predef::System.Memory.pread.len'>len</ref> is the number of characters, wide or not. <ref resolved='predef::System.Memory.pread.pos'>pos</ref>
	is the byte position (!).</p>
</text></doc>
<method name='pread'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread16'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread32'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread16i'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread32i'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread16n'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='pread32n'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Write a string to the memory (and to the file, if it's mmap()ed). 
	The 16 and 32 variants writes widestrings, 
	16 or 32 bits (2 or 4 bytes) wide,
	the 'i' variants in intel byteorder, the other in network byteorder.</p>
<p> returns the number of bytes (not characters) written</p>
</text></doc>
<method name='pwrite'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='pwrite16'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='pwrite32'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='pwrite16i'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='pwrite32i'>
<arguments><argument name='pos'><type><int><min>0</min><max/></int></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]' homogen-type='method'><doc/>
<method name='`[]'>
<arguments><argument name='pos'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='pos1'><type><int/></type></argument><argument name='pos2'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`[]=' homogen-type='method'><doc/>
<method name='`[]='>
<arguments><argument name='pos'><type><int/></type></argument><argument name='char'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='pos1'><type><int/></type></argument><argument name='pos2'><type><int/></type></argument><argument name='str'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='RegGetValue' homogen-type='method'><doc><text><p>Get a single value from the register.</p>
</text><group><param name='hkey'/><text><p>One of the following:</p>
<int><group><value>HKEY_CLASSES_ROOT</value><value>HKEY_LOCAL_MACHINE</value><value>HKEY_CURRENT_USER</value><value>HKEY_USERS</value></group></int>
</text></group><group><param name='key'/><text><p>Registry key.</p>
</text></group><group><param name='index'/><text><p>Value name.</p>
</text></group><group><returns/><text><p>Returns the value stored at the specified location in the register
   if any. Throws errors on failure.</p>
</text></group><group><note/><text><p>This function is only available on Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.RegGetValues'>RegGetValues()</ref>, <ref resolved='predef::System.RegGetKeyNames'>RegGetKeyNames()</ref></p>
</text></group></doc>
<method name='RegGetValue'>
<arguments><argument name='hkey'><type><int/></type></argument><argument name='key'><type><string/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><or><string/><int/><array><valuetype><string/></valuetype></array></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='RegGetKeyNames' homogen-type='method'><doc><text><p>Get a list of value key names from the register.</p>
</text><group><param name='hkey'/><text><p>One of the following:</p>
<int><group><value>HKEY_CLASSES_ROOT</value><value>HKEY_LOCAL_MACHINE</value><value>HKEY_CURRENT_USER</value><value>HKEY_USERS</value></group></int>
</text></group><group><param name='key'/><text><p>A registry key.</p>
</text></group><group><returns/><text><p>Returns an array of value keys stored at the specified location if any.
   Throws errors on failure.</p>
</text></group><group><example/><text><p>&gt; RegGetKeyNames(HKEY_CURRENT_USER, "Keyboard Layout");
  (1) Result: ({
    "IMEtoggle",
    "Preload",
    "Substitutes",
    "Toggle"
   })</p>
</text></group><group><note/><text><p>This function is only available on Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.RegGetValue'>RegGetValue()</ref>, <ref resolved='predef::System.RegGetValues'>RegGetValues()</ref></p>
</text></group></doc>
<method name='RegGetKeyNames'>
<arguments><argument name='hkey'><type><int/></type></argument><argument name='key'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='RegGetValues' homogen-type='method'><doc><text><p>Get multiple values from the register.</p>
</text><group><param name='hkey'/><text><p>One of the following:</p>
<int><group><value>HKEY_CLASSES_ROOT</value><value>HKEY_LOCAL_MACHINE</value><value>HKEY_CURRENT_USER</value><value>HKEY_USERS</value></group></int>
</text></group><group><param name='key'/><text><p>Registry key.</p>
</text></group><group><returns/><text><p>Returns a mapping with all the values stored at the specified location
   in the register if any. Throws errors on failure.</p>
</text></group><group><example/><text><p>&gt; RegGetValues(HKEY_CURRENT_USER, "Keyboard Layout\\Preload");
(5) Result: ([
  "1":"0000041d"
 ])</p>
</text></group><group><note/><text><p>This function is only available on Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.RegGetValue'>RegGetValue()</ref>, <ref resolved='predef::System.RegGetKeyNames'>RegGetKeyNames()</ref></p>
</text></group></doc>
<method name='RegGetValues'>
<arguments><argument name='hkey'><type><int/></type></argument><argument name='key'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><or><string/><int/><array><valuetype><string/></valuetype></array></or></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='LogonUser' homogen-type='method'><doc><text><p>Logon a user.</p>
</text><group><param name='username'/><text><p>User name of the user to login.</p>
</text></group><group><param name='domain'/><text><p>Domain to login on, or zero if local logon.</p>
</text></group><group><param name='password'/><text><p>Password to login with.</p>
</text></group><group><param name='logon_type'/><text><p>One of the following values:</p>
<int><group><value>LOGON32_LOGON_BATCH</value><value>LOGON32_LOGON_INTERACTIVE</value><value>LOGON32_LOGON_SERVICE</value></group><group><value>LOGON32_LOGON_NETWORK</value><text><p>This is the default.</p>
</text></group></int>
</text></group><group><param name='logon_provider'/><text><p>One of the following values:</p>
<int><group><value>LOGON32_PROVIDER_DEFAULT</value><text><p>This is the default.</p>
</text></group></int>
</text></group><group><returns/><text><p>Returns a login token object on success, and zero on failure.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group></doc>
<method name='LogonUser'>
<arguments><argument name='username'><type><string/></type></argument><argument name='domain'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='password'><type><string/></type></argument><argument name='logon_type'><type><or><int/><void/></or></type></argument><argument name='logon_provider'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::System.LogonUser'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetUserGetInfo' homogen-type='method'><doc><text><p>Get information about a network user.</p>
</text><group><param name='username'/><text><p>User name of the user to get information about.</p>
</text></group><group><param name='server'/><text><p>Server the user exists on.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value><value>2</value><value>3</value><value>10</value><value>11</value><value>20</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>, <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>
   <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>, <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>,
   <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetUserGetInfo'>
<arguments><argument name='username'><type><string/></type></argument><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><or><string/><array><valuetype><or><string/><int/></or></valuetype></array></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetUserEnum' homogen-type='method'><doc><text><p>Get information about network users.</p>
</text><group><param name='server'/><text><p>Server the users exist on.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value><value>2</value><value>3</value><value>10</value><value>11</value><value>20</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>
   <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>, <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>,
   <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetUserEnum'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int><void/></or></type></argument><argument name='level'><type><or><int/><void/></or></type></argument><argument name='filter'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><or><string/><int/></or></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetGroupEnum' homogen-type='method'><doc><text><p>Get information about network groups.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value><value>2</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>, <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>,
   <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetGroupEnum'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int><void/></or></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><or><string/><int/></or></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetLocalGroupEnum' homogen-type='method'><doc><text><p>Get information about local network groups.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>,
   <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetLocalGroupEnum'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int><void/></or></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetUserGetGroups' homogen-type='method'><doc><text><p>Get information about group membership for a network user.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='user'/><text><p>User to retrieve groups for.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetUserGetGroups'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='user'><type><string/></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><or><string/><int/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetUserGetLocalGroups' homogen-type='method'><doc><text><p>Get information about group membership for a local network user.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='user'/><text><p>User to retrieve groups for.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value></group></int>
</text></group><group><param name='flags'/><text><p>Zero, of one of the following:</p>
<int><group><value>LG_INCLUDE_INDIRECT</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>, <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetUserGetLocalGroups'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='user'><type><string/></type></argument><argument name='level'><type><or><int/><void/></or></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetGroupGetUsers' homogen-type='method'><doc><text><p>Get information about group membership for a network group.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='group'/><text><p>Group to retrieve members for.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>, <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>,
   <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetGroupGetUsers'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='group'><type><string/></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><or><int/><string/></or></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetLocalGroupGetMembers' homogen-type='method'><doc><text><p>Get information about group membership for a network group.</p>
</text><group><param name='server'/><text><p>Server the groups exist on.</p>
</text></group><group><param name='group'/><text><p>Group to retrieve members for.</p>
</text></group><group><param name='level'/><text><p>Information level. One of:</p>
<int><group><value>0</value><value>1</value><value>2</value><value>3</value></group></int>
</text></group><group><returns/><text><p>Returns an array on success. Throws errors on failure.</p>
</text></group><group><fixme/><text><p>Document the return value.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>, <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>,
   <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>, <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetLocalGroupGetMembers'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='group'><type><string/></type></argument><argument name='level'><type><or><int/><void/></or></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><or><int/><string/></or></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetGetDCName' homogen-type='method'><doc><text><p>Get name of the domain controller from a server.</p>
</text><group><param name='server'/><text><p>Server the domain exists on.</p>
</text></group><group><param name='domain'/><text><p>Domain to get the domain controller for.</p>
</text></group><group><returns/><text><p>Returns the name of the domain controller on success.
   Throws errors on failure.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>, <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>,
   <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>, <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>,
   <ref resolved='predef::System.NetGetAnyDCName'>NetGetAnyDCName()</ref></p>
</text></group></doc>
<method name='NetGetDCName'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='domain'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetGetAnyDCName' homogen-type='method'><doc><text><p>Get name of a domain controller from a server.</p>
</text><group><param name='server'/><text><p>Server the domain exists on.</p>
</text></group><group><param name='domain'/><text><p>Domain to get a domain controller for.</p>
</text></group><group><returns/><text><p>Returns the name of a domain controller on success.
   Throws errors on failure.</p>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.NetUserGetInfo'>NetUserGetInfo()</ref>, <ref resolved='predef::System.NetUserEnum'>NetUserEnum()</ref>,
   <ref resolved='predef::System.NetGroupEnum'>NetGroupEnum()</ref>, <ref resolved='predef::System.NetLocalGroupEnum'>NetLocalGroupEnum()</ref>,
   <ref resolved='predef::System.NetUserGetGroups'>NetUserGetGroups()</ref>, <ref resolved='predef::System.NetUserGetLocalGroups'>NetUserGetLocalGroups()</ref>,
   <ref resolved='predef::System.NetGroupGetUsers'>NetGroupGetUsers()</ref>, <ref resolved='predef::System.NetLocalGroupGetMembers'>NetLocalGroupGetMembers()</ref>,
   <ref resolved='predef::System.NetGetDCName'>NetGetDCName()</ref></p>
</text></group></doc>
<method name='NetGetAnyDCName'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='domain'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetSessionEnum' homogen-type='method'><doc><text><p>Get session information.</p>
</text><group><param name='level'/><text><p>One of</p>
<int><group><value>0</value><value>1</value><value>2</value><value>10</value><value>502</value></group></int>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group></doc>
<method name='NetSessionEnum'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='client'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='user'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='level'><type><int/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='NetWkstaUserEnum' homogen-type='method'><doc><group><param name='level'/><text><p>One of</p>
<int><group><value>0</value><value>1</value></group></int>
</text></group><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group></doc>
<method name='NetWkstaUserEnum'>
<arguments><argument name='server'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='level'><type><int/></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='normalize_path' homogen-type='method'><doc><text><p>Normalize an NT filesystem path.</p>
<p>   The following transformations are currently done:</p>
<ul><group><item/><text><p>Trailing slashes are removed.</p>
</text></group><group><item/><text><p>Extraneous empty extensions are removed.</p>
</text></group><group><item/><text><p>Short filenames are expanded to their corresponding long
       variants.</p>
</text></group><group><item/><text><p>Forward slashes ('/') are converted to backward slashes ('\').</p>
</text></group><group><item/><text><p>Current- and parent-directory paths are removed ("." and "..").</p>
</text></group><group><item/><text><p>Relative paths are expanded to absolute paths.</p>
</text></group><group><item/><text><p>Case-information is restored.</p>
</text></group></ul>
</text><group><returns/><text><p>A normalized absolute path without trailing slashes.</p>
<p>   Throws errors on failure, e.g. if the file or directory doesn't
   exist.</p>
</text></group><group><note/><text><p>File fork information is currently not supported (invalid data).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::combine_path'>combine_path()</ref>, <ref resolved='predef::combine_path'>combine_path_nt()</ref></p>
</text></group></doc>
<method name='normalize_path'>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='GetFileAttributes' homogen-type='method'><doc><text><p>Get the file attributes for the specified file.</p>
</text><group><note/><text><p>This function is only available on Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.SetFileAttributes'>SetFileAttributes()</ref></p>
</text></group></doc>
<method name='GetFileAttributes'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='SetFileAttributes' homogen-type='method'><doc><text><p>Set the file attributes for the specified file.</p>
</text><group><note/><text><p>This function is only available on Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.GetFileAttributes'>GetFileAttributes()</ref></p>
</text></group></doc>
<method name='SetFileAttributes'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='LookupAccountName' homogen-type='method'><doc><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group></doc>
<method name='LookupAccountName'>
<arguments><argument name='sys'><type><or><string/><int><min>0</min><max>0</max></int></or></type></argument><argument name='account'><type><string/></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='SetNamedSecurityInfo' homogen-type='method'><doc><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.GetNamedSecurityInfo'>GetNamedSecurityInfo()</ref></p>
</text></group></doc>
<method name='SetNamedSecurityInfo'>
<arguments><argument name='name'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='GetNamedSecurityInfo' homogen-type='method'><doc><group><note/><text><p>This function is only available on some Win32 systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.SetNamedSecurityInfo'>SetNamedSecurityInfo()</ref></p>
</text></group></doc>
<method name='GetNamedSecurityInfo'>
<arguments><argument name='name'><type><string/></type></argument><argument name='type'><type><or><int/><void/></or></type></argument><argument name='flags'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping><indextype><mixed/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='openlog' homogen-type='method'><doc><text><p>Initializes the connection to syslogd.</p>
</text><group><param name='ident.'/><text><p>The <ref resolved='predef::System.openlog.ident'>ident</ref> argument specifies an identifier to tag all logentries
 with.</p>
</text></group><group><param name='options'/><text><p>A bitfield specifying the behaviour of the message
 logging. Valid options are:</p>
<int><group><value>LOG_PID</value><text><p>Log the process ID with each message.</p>
</text></group><group><value>LOG_CONS</value><text><p>Write messages to the console if they can't be sent to syslogd.</p>
</text></group><group><value>LOG_NDELAY</value><text><p>Open the connection to syslogd now and not later.</p>
</text></group><group><value>LOG_NOWAIT</value><text><p>Do not wait for subprocesses talking to syslogd.</p>
</text></group></int>
</text></group><group><param name='facility'/><text><p>Specifies what subsystem you want to log as. Valid
 facilities are:</p>
<int><group><value>LOG_AUTH</value><text><p>Authorization subsystem</p>
</text></group><group><value>LOG_AUTHPRIV</value></group><group><value>LOG_CRON</value><text><p>Crontab subsystem</p>
</text></group><group><value>LOG_DAEMON</value><text><p>System daemons</p>
</text></group><group><value>LOG_KERN</value><text><p>Kernel subsystem (NOT USABLE)</p>
</text></group><group><value>LOG_LOCAL</value><value>LOG_LOCAL1</value><value>LOG_LOCAL2</value><value>LOG_LOCAL3</value><value>LOG_LOCAL4</value><value>LOG_LOCAL5</value><value>LOG_LOCAL6</value><value>LOG_LOCAL7</value><text><p>For local use</p>
</text></group><group><value>LOG_LPR</value><text><p>Line printer spooling system</p>
</text></group><group><value>LOG_MAIL</value><text><p>Mail subsystem</p>
</text></group><group><value>LOG_NEWS</value><text><p>Network news subsystem</p>
</text></group><group><value>LOG_SYSLOG</value></group><group><value>LOG_USER</value></group><group><value>LOG_UUCP</value><text><p>UUCP subsystem</p>
</text></group></int>
</text></group><group><note/><text><p>Only available on systems with syslog(3).</p>
</text></group><group><bugs/><text><p>LOG_NOWAIT should probably always be specified.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.syslog'>syslog</ref>, <ref resolved='predef::System.closelog'>closelog</ref></p>
</text></group></doc>
<method name='openlog'>
<arguments><argument name='ident'><type><string/></type></argument><argument name='options'><type><int/></type></argument><argument><value>facility</value></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='syslog' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='syslog'>
<arguments><argument name='a'><type><int/></type></argument><argument name='b'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='closelog' homogen-type='method'><doc><group><fixme/><text><p>Document this function.</p>
</text></group></doc>
<method name='closelog'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<doc><text><p>This module embodies common operating system calls, making them
 available to the Pike programmer.</p>
</text></doc><docgroup homogen-name='hardlink' homogen-type='method'><doc><text><p>Create a hardlink named <ref resolved='predef::System.hardlink.to'>to</ref> from the file <ref resolved='predef::System.hardlink.from'>from</ref>.</p>
</text><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.symlink'>symlink()</ref>, <ref resolved='predef::mv'>mv()</ref>, <ref resolved='predef::rm'>rm()</ref></p>
</text></group></doc>
<method name='hardlink'>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='symlink' homogen-type='method'><doc><text><p>Create a symbolic link named <ref resolved='predef::System.symlink.to'>to</ref> that points to <ref resolved='predef::System.symlink.from'>from</ref>.</p>
</text><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.hardlink'>hardlink()</ref>, <ref resolved='predef::System.readlink'>readlink()</ref>, <ref resolved='predef::mv'>mv()</ref>, <ref resolved='predef::rm'>rm()</ref></p>
</text></group></doc>
<method name='symlink'>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='readlink' homogen-type='method'><doc><text><p>Returns what the symbolic link <ref resolved='predef::System.readlink.path'>path</ref> points to.</p>
</text><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.symlink'>symlink()</ref></p>
</text></group></doc>
<method name='readlink'>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='resolvepath' homogen-type='method'><doc><text><p>Resolve all symbolic links of a pathname.</p>
</text><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.readlink'>readlink()</ref>, <ref resolved='predef::System.symlink'>symlink()</ref></p>
</text></group></doc>
<method name='resolvepath'>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='umask' homogen-type='method'><doc><text><p>Set the current umask to <ref resolved='predef::System.umask.mask'>mask</ref>.</p>
<p> If <ref resolved='predef::System.umask.mask'>mask</ref> is not specified the current umask will not be changed.</p>
</text><group><returns/><text><p>Returns the old umask setting.</p>
</text></group></doc>
<method name='umask'>
<arguments><argument name='mask'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chmod' homogen-type='method'><doc><text><p>Sets the protection mode of the specified path.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.open'>Stdio.File-&gt;open()</ref>, <ref resolved='predef::errno'>errno()</ref></p>
</text></group></doc>
<method name='chmod'>
<arguments><argument name='path'><type><string/></type></argument><argument name='mode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chown' homogen-type='method'><doc><text><p>Sets the owner and group of the specified path.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group></doc>
<method name='chown'>
<arguments><argument name='path'><type><string/></type></argument><argument name='uid'><type><int/></type></argument><argument name='gid'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='utime' homogen-type='method'><doc><text><p>Set the last access time and last modification time for the
 path <ref resolved='predef::System.utime.path'>path</ref> to <ref resolved='predef::System.utime.atime'>atime</ref> and <ref resolved='predef::System.utime.mtime'>mtime</ref> repectively.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group></doc>
<method name='utime'>
<arguments><argument name='path'><type><string/></type></argument><argument name='atime'><type><int/></type></argument><argument name='mtime'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='initgroups' homogen-type='method'><doc><text><p>Initializes the supplemental group access list according to the system
 group database. <ref resolved='predef::System.initgroups.base_gid'>base_gid</ref> is also added to the group access
 list.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.setuid'>setuid()</ref>, <ref resolved='predef::System.getuid'>getuid()</ref>, <ref resolved='predef::System.setgid'>setgid()</ref>, <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.seteuid'>seteuid()</ref>,
   <ref resolved='predef::System.geteuid'>geteuid()</ref>, <ref resolved='predef::System.setegid'>setegid()</ref>, <ref resolved='predef::System.getegid'>getegid()</ref>, <ref resolved='predef::System.getgroups'>getgroups()</ref>, <ref resolved='predef::System.setgroups'>setgroups()</ref></p>
</text></group></doc>
<method name='initgroups'>
<arguments><argument name='name'><type><string/></type></argument><argument name='base_gid'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cleargroups' homogen-type='method'><doc><text><p>Clear the supplemental group access list.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.setgroups'>setgroups()</ref>, <ref resolved='predef::System.initgroups'>initgroups()</ref>, <ref resolved='predef::System.getgroups'>getgroups()</ref></p>
</text></group></doc>
<method name='cleargroups'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setgroups' homogen-type='method'><doc><text><p>Set the supplemental group access list for this process.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.initgroups'>initgroups()</ref>, <ref resolved='predef::System.cleargroups'>cleargroups()</ref>, <ref resolved='predef::System.getgroups'>getgroups()</ref>,
   <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.getegid'>getegid()</ref>, <ref resolved='predef::System.setegid'>setegid()</ref></p>
</text></group></doc>
<method name='setgroups'>
<arguments><argument name='gids'><type><array><valuetype><int/></valuetype></array></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getgroups' homogen-type='method'><doc><text><p>Get the current supplemental group access list for this process.</p>
</text><group><note/><text><p>Throws errors on failure.</p>
<p>   This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.setgroups'>setgroups()</ref>, <ref resolved='predef::System.cleargroups'>cleargroups()</ref>, <ref resolved='predef::System.initgroups'>initgroups()</ref>,
   <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.getegid'>getegid()</ref>, <ref resolved='predef::System.setegid'>setegid()</ref></p>
</text></group></doc>
<method name='getgroups'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='innetgr' homogen-type='method'><doc><text><p>Searches for matching entries in the netgroup database (usually
 <tt>/etc/netgroup</tt>). If any of the <ref resolved='predef::System.innetgr.machine'>machine</ref>, <ref resolved='predef::System.innetgr.user'>user</ref> or <ref resolved='predef::System.innetgr.domain'>domain</ref>
 arguments are zero or missing, those fields will match any
 value in the selected <ref resolved='predef::System.innetgr.netgroup'>netgroup</ref>.</p>
</text><group><note/><text><p>This function isn't available on all platforms.</p>
</text></group></doc>
<method name='innetgr'>
<arguments><argument name='netgroup'><type><string/></type></argument><argument name='machine'><type><or><string/><void/></or></type></argument><argument name='user'><type><or><string/><void/></or></type></argument><argument name='domain'><type><or><string/><void/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='setuid' homogen-type='method'><doc><text><p>Sets the real user ID, effective user ID and saved user ID to <ref resolved='predef::System.setuid.uid'>uid</ref>.</p>
</text><group><returns/><text><p>Returns the current errno.</p>
</text></group><group><note/><text><p>This function isn't available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getuid'>getuid()</ref>, <ref resolved='predef::System.setgid'>setgid()</ref>, <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.seteuid'>seteuid()</ref>, <ref resolved='predef::System.geteuid'>geteuid()</ref>,
   <ref resolved='predef::System.setegid'>setegid()</ref>, <ref resolved='predef::System.getegid'>getegid()</ref></p>
</text></group></doc>
<method name='setuid'>
<arguments><argument name='uid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setgid' homogen-type='method'><doc><text><p>Sets the real group ID, effective group ID and saved group ID to <ref resolved='predef::System.setgid.gid'>gid</ref>.
 If <ref resolved='predef::System.setgid.gid'>gid</ref> is <expr>-1</expr> the uid for "nobody" will be used.</p>
</text><group><throws/><text><p>Throws an error if no "nobody" user when <ref resolved='predef::System.setgid.gid'>gid</ref> is <expr>-1</expr>.</p>
</text></group><group><returns/><text><p>Returns the current errno.</p>
</text></group><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getuid'>getuid()</ref>, <ref resolved='predef::System.setuid'>setuid()</ref>, <ref resolved='predef::System.getgid'>getgid()</ref>, <ref resolved='predef::System.seteuid'>seteuid()</ref>, <ref resolved='predef::System.geteuid'>geteuid()</ref>,
   <ref resolved='predef::System.setegid'>setegid()</ref>, <ref resolved='predef::System.getegid'>getegid()</ref></p>
</text></group></doc>
<method name='setgid'>
<arguments><argument name='gid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='seteuid' homogen-type='method'><doc><text><p>Set the effective user ID to <ref resolved='predef::System.seteuid.euid'>euid</ref>. If <ref resolved='predef::System.seteuid.euid'>euid</ref> is
 <expr>-1</expr> the uid for "nobody" will be used.</p>
</text><group><returns/><text><p>Returns the current errno.</p>
</text></group><group><throws/><text><p>Throws an error if there is no
 "nobody" user when <ref resolved='predef::System.seteuid.euid'>euid</ref> is <expr>-1</expr>.</p>
</text></group><group><note/><text><p>This function isn't available on all platforms.</p>
</text></group></doc>
<method name='seteuid'>
<arguments><argument name='euid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setegid' homogen-type='method'><doc><text><p>Set the effective group ID to <ref resolved='predef::System.setegid.egid'>egid</ref>. If <ref resolved='predef::System.setegid.egid'>egid</ref> is
 <expr>-1</expr> the uid for "nobody" will be used.</p>
</text><group><returns/><text><p>Returns the current errno.</p>
</text></group><group><throws/><text><p>Throws an error if there is no "nobody" user when
 <ref resolved='predef::System.setegid.egid'>egid</ref> is <expr>-1</expr>.</p>
</text></group><group><note/><text><p>This function isn't available on all platforms.</p>
</text></group></doc>
<method name='setegid'>
<arguments><argument name='egid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getpgrp' homogen-type='method'><doc><text><p>Get the process group id for the process <ref resolved='predef::System.getpgrp.pid'>pid</ref>.
 With no argguments or with 'pid' equal to zero,
 returns the process group ID of this process.</p>
</text><group><note/><text><p>Not all platforms support getting the process group for other processes.</p>
<p>   Not supported on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getpid'>getpid</ref>, <ref resolved='predef::System.getppid'>getppid</ref></p>
</text></group></doc>
<method name='getpgrp'>
<arguments><argument name='pid'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setpgrp' homogen-type='method'><doc><text><p>Make this process a process group leader.</p>
</text><group><note/><text><p>Not supported on all platforms.</p>
</text></group></doc>
<method name='setpgrp'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getsid' homogen-type='method'><doc><text><p>Get the process session ID for the given process. If pid is
   not specified, the session ID for the current process will
   be returned.</p>
</text><group><note/><text><p>This function is not available on all platforms.</p>
</text></group><group><throws/><text><p>Throws an error if the system call fails.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getpid'>getpid</ref>, <ref resolved='predef::System.getpgrp'>getpgrp</ref>, <ref resolved='predef::System.setsid'>setsid</ref></p>
</text></group></doc>
<method name='getsid'>
<arguments><argument name='pid'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setsid' homogen-type='method'><doc><text><p>Set a new process session ID for the current process, and return it.</p>
</text><group><note/><text><p>This function isn't available on all platforms.</p>
</text></group><group><throws/><text><p>Throws an error if the system call fails.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getpid'>getpid</ref>, <ref resolved='predef::System.setpgrp'>setpgrp</ref>, <ref resolved='predef::System.getsid'>getsid</ref></p>
</text></group></doc>
<method name='setsid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='dumpable' homogen-type='method'><doc><text><p>Get and/or set whether this process should be able to
   dump core.</p>
</text><group><param name='val'/><text><p>Optional argument to set the core dumping state.</p>
<int><group><value>0</value><text><p>Disable core dumping for this process.</p>
</text></group><group><value>1</value><text><p>Enable core dumping for this process.</p>
</text></group></int>
</text></group><group><returns/><text><p>Returns <expr>1</expr> if this process currently is capable of dumping core,
   and <expr>0</expr> (zero) if not.</p>
</text></group><group><note/><text><p>This function is currently only available on some versions of Linux.</p>
</text></group></doc>
<method name='dumpable'>
<arguments><argument name='val'><type><or><int><min>0</min><max>1</max></int><void/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='setresuid' homogen-type='method'><doc><text><p>Sets the real, effective and saved set-user-ID to <ref resolved='predef::System.setresuid.ruid'>ruid</ref>,
 <ref resolved='predef::System.setresuid.euid'>euid</ref> and <ref resolved='predef::System.setresuid.suid'>suid</ref> respectively.</p>
</text><group><returns/><text><p>Returns zero on success and errno on failure.</p>
</text></group></doc>
<method name='setresuid'>
<arguments><argument name='ruid'><type><int/></type></argument><argument name='euid'><type><int/></type></argument><argument name='suid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='setresgid' homogen-type='method'><doc><text><p>Sets the real, effective and saved group ID to <ref resolved='predef::System.setresgid.rgid'>rgid</ref>,
 <ref resolved='predef::System.setresgid.egid'>egid</ref> and <ref resolved='predef::System.setresgid.sgid'>sgid</ref> respectively.</p>
</text><group><returns/><text><p>Returns zero on success and errno on failure.</p>
</text></group></doc>
<method name='setresgid'>
<arguments><argument name='rgid'><type><int/></type></argument><argument name='egid'><type><int/></type></argument><argument name='sgid'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getuid' homogen-type='method'><doc><text><p>Get the real user ID.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setuid'>setuid</ref>, <ref resolved='predef::System.setgid'>setgid</ref>, <ref resolved='predef::System.getgid'>getgid</ref>, <ref resolved='predef::System.seteuid'>seteuid</ref>,
   <ref resolved='predef::System.geteuid'>geteuid</ref>, <ref resolved='predef::System.setegid'>setegid</ref>, <ref resolved='predef::System.getegid'>getegid</ref></p>
</text></group></doc>
<method name='getuid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getgid' homogen-type='method'><doc><text><p>Get the real group ID.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setuid'>setuid</ref>, <ref resolved='predef::System.getuid'>getuid</ref>, <ref resolved='predef::System.setgid'>setgid</ref>,
   <ref resolved='predef::System.seteuid'>seteuid</ref>, <ref resolved='predef::System.geteuid'>geteuid</ref>, <ref resolved='predef::System.getegid'>getegid</ref>, <ref resolved='predef::System.setegid'>setegid</ref></p>
</text></group></doc>
<method name='getgid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='geteuid' homogen-type='method'><doc><text><p>Get the effective user ID.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setuid'>setuid</ref>, <ref resolved='predef::System.getuid'>getuid</ref>, <ref resolved='predef::System.setgid'>setgid</ref>, <ref resolved='predef::System.getgid'>getgid</ref>,
   <ref resolved='predef::System.seteuid'>seteuid</ref>, <ref resolved='predef::System.getegid'>getegid</ref>, <ref resolved='predef::System.setegid'>setegid</ref></p>
</text></group></doc>
<method name='geteuid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getegid' homogen-type='method'><doc><text><p>Get the effective group ID.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setuid'>setuid</ref>, <ref resolved='predef::System.getuid'>getuid</ref>, <ref resolved='predef::System.setgid'>setgid</ref>, <ref resolved='predef::System.getgid'>getgid</ref>,
   <ref resolved='predef::System.seteuid'>seteuid</ref>, <ref resolved='predef::System.geteuid'>geteuid</ref>, <ref resolved='predef::System.setegid'>setegid</ref></p>
</text></group></doc>
<method name='getegid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getpid' homogen-type='method'><doc><text><p>Returns the process ID of this process.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.getppid'>getppid</ref>, <ref resolved='predef::System.getpgrp'>getpgrp</ref></p>
</text></group></doc>
<method name='getpid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getppid' homogen-type='method'><doc><text><p>Returns the process ID of the parent process.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.getpid'>getpid</ref>, <ref resolved='predef::System.getpgrp'>getpgrp</ref></p>
</text></group></doc>
<method name='getppid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='chroot' homogen-type='method'><doc><text><p>Changes the root directory for this process to the indicated directory.</p>
</text><group><returns/><text><p>A nonzero value is returned if the call is successful. If
   there's an error then zero is returned and <ref resolved='predef::errno'>errno</ref> is set
   appropriately.</p>
</text></group><group><note/><text><p>Since this function modifies the directory structure as seen from
   Pike, you have to modify the environment variables PIKE_MODULE_PATH
   and PIKE_INCLUDE_PATH to compensate for the new root-directory.</p>
<p>   This function only exists on systems that have the chroot(2)
   system call.</p>
<p>   The second variant only works on systems that also have
   the fchroot(2) system call.</p>
</text></group></doc>
<method name='chroot'>
<arguments><argument name='newroot'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='chroot'>
<arguments><argument name='newroot'><type><object resolved='predef::Stdio.File'>Stdio.File</object></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='uname' homogen-type='method'><doc><text><p>Get operating system information.</p>
</text><group><returns/><text><p>The resulting mapping contains the following fields:</p>
<mapping><group><member><type><string/></type><index>"sysname"</index></member><text><p>Operating system name.</p>
</text></group><group><member><type><string/></type><index>"nodename"</index></member><text><p>Hostname.</p>
</text></group><group><member><type><string/></type><index>"release"</index></member><text><p>Operating system release.</p>
</text></group><group><member><type><string/></type><index>"version"</index></member><text><p>Operating system version.</p>
</text></group><group><member><type><string/></type><index>"machine"</index></member><text><p>Hardware architecture.</p>
</text></group><group><member><type><string/></type><index>"architecture"</index></member><text><p>Basic instruction set architecture.</p>
</text></group><group><member><type><string/></type><index>"isalist"</index></member><text><p>List of upported instruction set architectures.
       Usually space-separated.</p>
</text></group><group><member><type><string/></type><index>"platform"</index></member><text><p>Specific model of hardware.</p>
</text></group><group><member><type><string/></type><index>"hw provider"</index></member><text><p>Manufacturer of the hardware.</p>
</text></group><group><member><type><string/></type><index>"hw serial"</index></member><text><p>Serial number of the hardware.</p>
</text></group><group><member><type><string/></type><index>"srpc domain"</index></member><text><p>Secure RPC domain.</p>
</text></group></mapping>
</text></group><group><note/><text><p>This function only exists on systems that have the uname(2) or
   sysinfo(2) system calls.</p>
<p>   Only the first five elements are always available.</p>
</text></group></doc>
<method name='uname'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostname' homogen-type='method'><doc><text><p>Returns a string with the name of the host.</p>
</text><group><note/><text><p>This function only exists on systems that have the gethostname(2)
   or uname(2) system calls.</p>
</text></group></doc>
<method name='gethostname'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyaddr' homogen-type='method'><doc><text><p>Returns an array with information about the specified IP address.</p>
</text><group><returns/><text><p>The returned array contains the same information as that returned
   by <ref resolved='predef::System.gethostbyname'>gethostbyname()</ref>.</p>
</text></group><group><note/><text><p>This function only exists on systems that have the gethostbyaddr(2)
   or similar system call.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.gethostbyname'>gethostbyname()</ref></p>
</text></group></doc>
<method name='gethostbyaddr'>
<arguments><argument name='addr'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='gethostbyname' homogen-type='method'><doc><text><p>Returns an array with information about the specified host.</p>
</text><group><returns/><text><p>The returned array contains the following:</p>
<array><group><elem><type><string/></type><index>hostname</index></elem><text><p>Name of the host.</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>ips</index></elem><text><p>Array of IP numbers for the host.</p>
</text></group><group><elem><type><array><valuetype><string/></valuetype></array></type><index>aliases</index></elem><text><p>Array of alternative names for the host.</p>
</text></group></array>
</text></group><group><note/><text><p>This function only exists on systems that have the gethostbyname(2)
   or similar system call.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.gethostbyaddr'>gethostbyaddr()</ref></p>
</text></group></doc>
<method name='gethostbyname'>
<arguments><argument name='hostname'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='sleep' homogen-type='method'><doc><text><p>Call the system sleep() function.</p>
<p> This is not to be confused with the global function <ref resolved='predef::sleep'>predef::sleep()</ref>
 that does more elaborate things and can sleep with better precision
 (although dependant on a normal functioning system clock).</p>
</text><group><note/><text><p>The system's sleep function often utilizes the alarm(2) call and might
   not be perfectly thread safe in combination with simultaneous
   sleep()'s or alarm()'s. It might also be interrupted by other signals.</p>
<p>   If you don't need it to be independant of the system clock, use
   <ref resolved='predef::sleep'>predef::sleep()</ref> instead.</p>
<p>   May not be present; only exists if the function exists in the 
   current system.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sleep'>predef::sleep()</ref> <ref resolved='predef::System.usleep'>usleep()</ref> <ref resolved='predef::System.nanosleep'>nanosleep()</ref></p>
</text></group></doc>
<method name='sleep'>
<arguments><argument name='seconds'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='usleep' homogen-type='method'><doc><text><p>Call the system usleep() function. </p>
<p> This is not to be confused with the global function <ref resolved='predef::sleep'>predef::sleep()</ref>
 that does more elaborate things and can sleep with better precision
 (although dependant on a normal functioning system clock).</p>
</text><group><note/><text><p>The system's usleep function often utilizes the alarm(2) call and might
   not be perfectly thread safe in combination with simultaneous
   sleep()'s or alarm()'s. It might also be interrupted by other signals.</p>
<p>   If you don't need it to be independant of the system clock, use
   <ref resolved='predef::sleep'>predef::sleep()</ref> instead.</p>
<p>   May not be present; only exists if the function exists in the 
   current system.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sleep'>predef::sleep()</ref> <ref resolved='predef::System.sleep'>sleep()</ref> <ref resolved='predef::System.nanosleep'>nanosleep()</ref></p>
</text></group></doc>
<method name='usleep'>
<arguments><argument name='usec'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='nanosleep' homogen-type='method'><doc><text><p>Call the system nanosleep() function. </p>
<p> This is not to be confused with the global function <ref resolved='predef::sleep'>predef::sleep()</ref>
 that does more elaborate things and can sleep with better precision
 (although dependant on a normal functioning system clock).</p>
<p> Returns the remaining time to sleep (as the system function does).</p>
</text><group><seealso/><text><p><ref resolved='predef::sleep'>predef::sleep()</ref> <ref resolved='predef::System.sleep'>sleep()</ref> <ref resolved='predef::System.usleep'>usleep()</ref></p>
</text></group><group><note/><text><p>May not be present; only exists if the function exists in the 
   current system.</p>
</text></group></doc>
<method name='nanosleep'>
<arguments><argument name='seconds'><type><or><int/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getrlimit' homogen-type='method'><doc><text><p>Returns the current process limitation for the selected <ref resolved='predef::System.getrlimit.resource'>resource</ref>.</p>
</text><group><param name='resource'/><text><string><group><value>cpu</value><text><p>The CPU time limit in seconds.</p>
</text></group><group><value>fsize</value><text><p>The maximum size of files the process may create.</p>
</text></group><group><value>data</value><text><p>The maximum size of the process's data segment.</p>
</text></group><group><value>stack</value><text><p>The maximum size of process stack, in bytes.</p>
</text></group><group><value>core</value></group><group><value>rss</value><text><p>Specifies the limit of pages the process's resident set.</p>
</text></group><group><value>nproc</value><text><p>The maximum number of processes that can be created for
     the real user ID of the calling process.</p>
</text></group><group><value>nofile</value><text><p>The maximum number of file descriptors the process can
     open, +1.</p>
</text></group><group><value>memlock</value><text><p>The maximum number of bytes of virtual memory that
     may be locked into RAM.</p>
</text></group><group><value>as</value><value>vmem</value></group></string>
</text></group><group><returns/><text><array><group><elem><type><int/></type><index>0</index></elem><text><p>The soft limit for the resource.
     <expr>-1</expr> means no limit.</p>
</text></group><group><elem><type><int/></type><index>1</index></elem><text><p>The hard limit for the resource.
     <expr>-1</expr> means no limit.</p>
</text></group></array>
</text></group><group><note/><text><p>This function nor all the resources are available on all systems.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.getrlimits'>getrlimits</ref>, <ref resolved='predef::System.setrlimit'>setrlimit</ref></p>
</text></group></doc>
<method name='getrlimit'>
<arguments><argument name='resource'><type><string/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='getrlimits' homogen-type='method'><doc><text><p>Returns all process limits in a mapping.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.getrlimit'>getrlimit</ref>, <ref resolved='predef::System.setrlimit'>setrlimit</ref></p>
</text></group></doc>
<method name='getrlimits'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><array><valuetype><int/></valuetype></array></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='setrlimit' homogen-type='method'><doc><text><p>Sets the <ref resolved='predef::System.setrlimit.soft'>soft</ref> and the <ref resolved='predef::System.setrlimit.hard'>hard</ref> process limit on a <ref resolved='predef::System.setrlimit.resource'>resource</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.getrlimit'>getrlimit</ref>, <ref resolved='predef::System.getrlimits'>getrlimits</ref></p>
</text></group></doc>
<method name='setrlimit'>
<arguments><argument name='resource'><type><string/></type></argument><argument name='soft'><type><int/></type></argument><argument name='hard'><type><int/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='ITIMER_REAL' homogen-type='constant'><doc><text><p>Identifier for a timer that decrements in real time.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setitimer'>setitimer</ref>, <ref resolved='predef::System.getitimer'>getitimer</ref></p>
</text></group></doc>
<constant name='ITIMER_REAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/system/system.c' first-line='2530'/></constant>
</docgroup>
<docgroup homogen-name='ITIMER_VIRTUAL' homogen-type='constant'><doc><text><p>Identifier for a timer that decrements only when the
  process is executing.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setitimer'>setitimer</ref>, <ref resolved='predef::System.getitimer'>getitimer</ref></p>
</text></group></doc>
<constant name='ITIMER_VIRTUAL'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/system/system.c' first-line='2536'/></constant>
</docgroup>
<docgroup homogen-name='ITIMER_PROF' homogen-type='constant'><doc><text><p>Identifier for a timer that decrements both when the process
  is executing and when the system is executing on behalf of the
  process.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.setitimer'>setitimer</ref>, <ref resolved='predef::System.getitimer'>getitimer</ref></p>
</text></group></doc>
<constant name='ITIMER_PROF'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/system/system.c' first-line='2543'/></constant>
</docgroup>
<docgroup homogen-name='setitimer' homogen-type='method'><doc><text><p>Sets the <ref resolved='predef::System.setitimer.timer'>timer</ref> to the supplied <ref resolved='predef::System.setitimer.value'>value</ref>. Returns the
 current timer interval.</p>
</text><group><param name='timer'/><text><p>One of <ref resolved='predef::System.ITIMER_REAL'>ITIMER_REAL</ref>, <ref resolved='predef::System.ITIMER_VIRTUAL'>ITIMER_VIRTUAL</ref> and <ref resolved='predef::System.ITIMER_PROF'>ITIMER_PROF</ref>.</p>
</text></group></doc>
<method name='setitimer'>
<arguments><argument name='timer'><type><int/></type></argument><argument name='value'><type><or><int/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getitimer' homogen-type='method'><doc><text><p>Shows the state of the selected <ref resolved='predef::System.getitimer.timer'>timer</ref>.</p>
</text><group><returns/><text><array><group><elem><type><float/></type><index>0</index></elem><text><p>The interval of the timer.</p>
</text></group><group><elem><type><float/></type><index>1</index></elem><text><p>The value of the timer.</p>
</text></group></array>
</text></group><group><param name='timer'/><text><p>One of <ref resolved='predef::System.ITIMER_REAL'>ITIMER_REAL</ref>, <ref resolved='predef::System.ITIMER_VIRTUAL'>ITIMER_VIRTUAL</ref> and <ref resolved='predef::System.ITIMER_PROF'>ITIMER_PROF</ref>.</p>
</text></group></doc>
<method name='getitimer'>
<arguments><argument name='timer'><type><int/></type></argument></arguments>
<returntype><array><valuetype><float/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_netinfo_property' homogen-type='method'><doc><text><p>Queries a NetInfo server for property values at the given path.</p>
</text><group><param name='domain'/><text><p>NetInfo domain. Use "." for the local domain.</p>
</text></group><group><param name='path'/><text><p>NetInfo path for the property.</p>
</text></group><group><param name='property'/><text><p>Name of the property to return.</p>
</text></group><group><returns/><text><p>An array holding all property values. If the <ref resolved='predef::System.get_netinfo_property.path'>path</ref> or <ref resolved='predef::System.get_netinfo_property.property'>property</ref>
  cannot be not found 0 is returned instead. If the NetInfo <ref resolved='predef::System.get_netinfo_property.domain'>domain</ref>
  is not found or cannot be queried an exception is thrown.</p>
</text></group><group><example/><text><p>system.get_netinfo_property(".", "/locations/resolver", "domain");
   ({ 
      "idonex.se"
   })</p>
</text></group><group><note/><text><p>Only available on operating systems which have NetInfo libraries
  installed.</p>
</text></group></doc>
<method name='get_netinfo_property'>
<arguments><argument name='domain'><type><string/></type></argument><argument name='path'><type><string/></type></argument><argument name='property'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='rdtsc' homogen-type='method'><doc><text><p>Executes the rdtsc (clock pulse counter) instruction
 and returns the result.</p>
</text></doc>
<method name='rdtsc'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='gettimeofday' homogen-type='method'><doc><text><p>Calls gettimeofday(); the result is an array of
 seconds, microseconds, and possible tz_minuteswes, tz_dstttime
 as given by the gettimeofday(2) system call 
 (read the man page).</p>
</text><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::gethrtime'>gethrtime()</ref></p>
</text></group></doc>
<method name='gettimeofday'>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='CPU_TIME_IS_THREAD_LOCAL' homogen-type='variable'><doc><text><p>This string constant tells whether or not the CPU time returned by
 <ref resolved='predef::gethrvtime'>gethrvtime</ref> is thread local or not. The value is "yes" if it is
 and "no" if it isn't. The value is also "no" if there is no thread
 support.</p>
</text></doc>
<variable name='CPU_TIME_IS_THREAD_LOCAL'><type><string/></type></variable>
</docgroup>
<docgroup homogen-name='getrusage' homogen-type='method'><doc><text><p>Return resource usage about the current process. An error is
   thrown if it isn't supported or if the system fails to return
   any information.</p>
</text><group><returns/><text><p>Returns a mapping describing the current resource usage:</p>
<mapping><group><member><type><int/></type><index>"utime"</index></member><text><p>Time in milliseconds spent in user code.</p>
</text></group><group><member><type><int/></type><index>"stime"</index></member><text><p>Time in milliseconds spent in system calls.</p>
</text></group><group><member><type><int/></type><index>"maxrss"</index></member><text><p>Maximum used resident size in kilobytes. [1]</p>
</text></group><group><member><type><int/></type><index>"ixrss"</index></member><text><p>Quote from GNU libc: An integral value expressed in
       kilobytes times ticks of execution, which indicates the
       amount of memory used by text that was shared with other
       processes. [1]</p>
</text></group><group><member><type><int/></type><index>"idrss"</index></member><text><p>Quote from GNU libc: An integral value expressed the same
       way, which is the amount of unshared memory used for data.
       [1]</p>
</text></group><group><member><type><int/></type><index>"isrss"</index></member><text><p>Quote from GNU libc: An integral value expressed the same
       way, which is the amount of unshared memory used for stack
       space. [1]</p>
</text></group><group><member><type><int/></type><index>"minflt"</index></member><text><p>Minor page faults, i.e. TLB misses which required no disk I/O.</p>
</text></group><group><member><type><int/></type><index>"majflt"</index></member><text><p>Major page faults, i.e. paging with disk I/O required.</p>
</text></group><group><member><type><int/></type><index>"nswap"</index></member><text><p>Number of times the process has been swapped out entirely.</p>
</text></group><group><member><type><int/></type><index>"inblock"</index></member><text><p>Number of block input operations.</p>
</text></group><group><member><type><int/></type><index>"oublock"</index></member><text><p>Number of block output operations.</p>
</text></group><group><member><type><int/></type><index>"msgsnd"</index></member><text><p>Number of IPC messsages sent.</p>
</text></group><group><member><type><int/></type><index>"msgrcv"</index></member><text><p>Number of IPC messsages received.</p>
</text></group><group><member><type><int/></type><index>"nsignals"</index></member><text><p>Number of signals received.</p>
</text></group><group><member><type><int/></type><index>"nvcsw"</index></member><text><p>Number of voluntary context switches (usually to wait for
       some service).</p>
</text></group><group><member><type><int/></type><index>"nivcsw"</index></member><text><p>Number of preemptions, i.e. context switches due to expired
       time slices, or when processes with higher priority were
       scheduled.</p>
</text></group><group><member><type><int/></type><index>"sysc"</index></member><text><p>Number of system calls. [2]</p>
</text></group><group><member><type><int/></type><index>"ioch"</index></member><text><p>Number of characters read and written. [2]</p>
</text></group><group><member><type><int/></type><index>"rtime"</index></member><text><p>Elapsed real time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"ttime"</index></member><text><p>Elapsed system trap (system call) time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"tftime"</index></member><text><p>Text page fault sleep time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"dftime"</index></member><text><p>Data page fault sleep time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"kftime"</index></member><text><p>Kernel page fault sleep time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"ltime"</index></member><text><p>User lock wait sleep time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"slptime"</index></member><text><p>Other sleep time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"wtime"</index></member><text><p>Wait CPU (latency) time (ms). [2]</p>
</text></group><group><member><type><int/></type><index>"stoptime"</index></member><text><p>Time spent in stopped (suspended) state. [2]</p>
</text></group><group><member><type><int/></type><index>"brksize"</index></member><text><p>Heap size. [3]</p>
</text></group><group><member><type><int/></type><index>"stksize"</index></member><text><p>Stack size. [3]</p>
</text></group></mapping>
</text></group><group><note/><text><p>[1] Not if /proc rusage is used.</p>
<p>   [2] Only from (Solaris?) /proc rusage.</p>
<p>   [3] Only from /proc PRS usage.</p>
<p>   On some systems, only utime will be filled in.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::gethrvtime'>gethrvtime()</ref></p>
</text></group></doc>
<method name='getrusage'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>


<class name='Time'><doc><text><p>The current time as a structure containing a sec and a usec
 member.</p>
</text></doc><docgroup homogen-type='variable'><doc><text><p>The number of seconds and microseconds since the epoch and the
   last whole second, respectively. (See also <ref resolved='predef::time'>predef::time()</ref>)</p>
<p>   Please note that these variables will continually update when
   they are requested, there is no need to create new Time()
   objects.</p>
</text></doc>
<variable name='sec'><type><int/></type></variable>
<variable name='usec'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='variable' homogen-name='usec_full'><doc><text><p>The number of microseconds since the epoch. Please note that
   pike has to have been compiled with bignum support for this
   variable to contain sensible values.</p>
</text></doc>
<variable name='usec_full'><type><int/></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>If fast is true, do not request a new time from the system,
 instead use the global current time variable.</p>
<p> This will only work in callbacks, but can save significant amounts
 of CPU.</p>
</text></doc>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='fast'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='Timer'><docgroup homogen-type='method' homogen-name='peek'><doc><text><p>Return the time in seconds since the last time <ref resolved='predef::System.Timer.get'>get</ref> was called.</p>
</text></doc>
<method name='peek'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get'><doc><text><p>Return the time in seconds since the last time get was called.
   The first time this method is called the time since the object
   was created is returned instead.</p>
</text></doc>
<method name='get'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>Create a new timer object. The timer keeps track of relative time
   with sub-second precision.</p>
<p>   If fast is specified, the timer will not do system calls to get
   the current time but instead use the one maintained by pike. This
   will result in faster but somewhat more inexact timekeeping. 
   Also, if your program never utilizes the pike event loop the pike
   maintained current time never change.</p>
</text></doc>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='fast'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module><docgroup homogen-name='getgrgid' homogen-type='method'><doc><text><p>Get the group entry for the group with the id <ref resolved='predef::getgrgid.gid'>gid</ref> using the systemfunction
   <tt>getgrid(3)</tt>.</p>
</text><group><param name='gid'/><text><p>The id of the group</p>
</text></group><group><returns/><text><p>An array with the information about the group</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Group name</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>Group password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>ID of the group</p>
</text></group><group><elem><type><array/></type><minindex>3</minindex></elem><text><p>Array with UIDs of group members</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref>getgrent()</ref>
   <ref resolved='predef::getgrnam'>getgrnam()</ref></p>
</text></group></doc>
<method name='getgrgid'>
<arguments><argument name='gid'><type><int/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='getgrnam' homogen-type='method'><doc><text><p>Get the group entry for the group with the name <ref resolved='predef::getgrnam.str'>str</ref> using the
   systemfunction <tt>getgrnam(3)</tt>.</p>
</text><group><param name='str'/><text><p>The name of the group</p>
</text></group><group><returns/><text><p>An array with the information about the group</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Group name</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>Group password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>ID of the group</p>
</text></group><group><elem><type><array/></type><minindex>3</minindex></elem><text><p>Array with UIDs of group members</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref>getgrent()</ref>
   <ref resolved='predef::getgrgid'>getgrgid()</ref></p>
</text></group></doc>
<method name='getgrnam'>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='getpwnam' homogen-type='method'><doc><text><p>Get the user entry for login <ref resolved='predef::getpwnam.str'>str</ref> using the systemfunction <tt>getpwnam(3)</tt>.</p>
</text><group><param name='str'/><text><p>The login name of the user whos userrecord is requested.</p>
</text></group><group><returns/><text><p>An array with the information about the user</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Users username (loginname)</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>User password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>Users ID</p>
</text></group><group><elem><type><int/></type><index>3</index></elem><text><p>Users primary group ID</p>
</text></group><group><elem><type><string/></type><index>4</index></elem><text><p>Users real name an possibly some other info</p>
</text></group><group><elem><type><string/></type><index>5</index></elem><text><p>Users home directory</p>
</text></group><group><elem><type><string/></type><index>6</index></elem><text><p>Users shell</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::getpwuid'>getpwuid()</ref>
   <ref>getpwent()</ref></p>
</text></group></doc>
<method name='getpwnam'>
<arguments><argument name='str'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='getpwuid' homogen-type='method'><doc><text><p>Get the user entry for UID <ref resolved='predef::getpwuid.uid'>uid</ref> using the systemfunction <tt>getpwuid(3)</tt>.</p>
</text><group><param name='uid'/><text><p>The uid of the user whos userrecord is requested.</p>
</text></group><group><returns/><text><p>An array with the information about the user</p>
<array><group><elem><type><string/></type><index>0</index></elem><text><p>Users username (loginname)</p>
</text></group><group><elem><type><string/></type><index>1</index></elem><text><p>User password (encrypted)</p>
</text></group><group><elem><type><int/></type><index>2</index></elem><text><p>Users ID</p>
</text></group><group><elem><type><int/></type><index>3</index></elem><text><p>Users primary group ID</p>
</text></group><group><elem><type><string/></type><index>4</index></elem><text><p>Users real name an possibly some other info</p>
</text></group><group><elem><type><string/></type><index>5</index></elem><text><p>Users home directory</p>
</text></group><group><elem><type><string/></type><index>6</index></elem><text><p>Users shell</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::getpwnam'>getpwnam()</ref>
   <ref>getpwent()</ref></p>
</text></group></doc>
<method name='getpwuid'>
<arguments><argument name='uid'><type><int/></type></argument></arguments>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all_users' homogen-type='method'><doc><text><p>Returns an array with all users in the system.</p>
</text><group><returns/><text><p>An array with arrays of userinfo as in <ref>getpwent</ref>.</p>
</text></group><group><seealso/><text><p><ref>getpwent()</ref>
   <ref resolved='predef::getpwnam'>getpwnam()</ref>
   <ref resolved='predef::getpwuid'>getpwuid()</ref></p>
</text></group></doc>
<method name='get_all_users'>
<arguments/>
<returntype><array><valuetype><array><valuetype><or><int/><string/></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_all_groups' homogen-type='method'><doc><text><p>Returns an array of arrays with all groups in the system groups source.
   Each element in the returned array has the same structure as in
   <ref>getgrent</ref> function.</p>
</text><group><note/><text><p>The groups source is system dependant. Refer to your system manuals for information
   about how to set the source.</p>
</text></group><group><returns/><text><array><group><elem><type><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></type><minindex>0</minindex></elem><text><p>Array with info about the group</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref>getgrent()</ref></p>
</text></group></doc>
<method name='get_all_groups'>
<arguments/>
<returntype><array><valuetype><array><valuetype><or><int/><string/><array><valuetype><string/></valuetype></array></or></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_groups_for_user' homogen-type='method'><doc><text><p>Gets all groups which a given user is a member of.</p>
</text><group><param name='user'/><text><p>UID or loginname of the user</p>
</text></group><group><returns/><text><array><group><elem><type><array/></type><minindex>0</minindex></elem><text><p>Information about all the users groups</p>
</text></group></array>
</text></group><group><seealso/><text><p><ref resolved='predef::get_all_groups'>get_all_groups()</ref>
   <ref resolved='predef::getgrgid'>getgrgid()</ref>
   <ref resolved='predef::getgrnam'>getgrnam()</ref>
   <ref resolved='predef::getpwuid'>getpwuid()</ref>
   <ref resolved='predef::getpwnam'>getpwnam()</ref></p>
</text></group></doc>
<method name='get_groups_for_user'>
<arguments><argument name='user'><type><or><int/><string/></or></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>








<docgroup homogen-type='method' homogen-name='sin'><doc><text><p>Returns the sine value for <ref resolved='predef::sin.f'>f</ref>.
 <ref resolved='predef::sin.f'>f</ref> should be specified in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::asin'>asin()</ref>, <ref resolved='predef::cos'>cos()</ref>, <ref resolved='predef::tan'>tan()</ref></p>
</text></group></doc>
<method name='sin'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='asin'><doc><text><p>Return the arcus sine value for <ref resolved='predef::asin.f'>f</ref>.
 The result will be in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::sin'>sin()</ref>, <ref resolved='predef::acos'>acos()</ref></p>
</text></group></doc>
<method name='asin'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cos'><doc><text><p>Return the cosine value for <ref resolved='predef::cos.f'>f</ref>.
 <ref resolved='predef::cos.f'>f</ref> should be specified in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::sin'>sin()</ref>, <ref resolved='predef::tan'>tan()</ref></p>
</text></group></doc>
<method name='cos'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='acos'><doc><text><p>Return the arcus cosine value for <ref resolved='predef::acos.f'>f</ref>.
 The result will be in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::cos'>cos()</ref>, <ref resolved='predef::asin'>asin()</ref></p>
</text></group></doc>
<method name='acos'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tan'><doc><text><p>Returns the tangent value for <ref resolved='predef::tan.f'>f</ref>.
 <ref resolved='predef::tan.f'>f</ref> should be specified in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::atan'>atan()</ref>, <ref resolved='predef::sin'>sin()</ref>, <ref resolved='predef::cos'>cos()</ref></p>
</text></group></doc>
<method name='tan'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='atan'><doc><text><p>Returns the arcus tangent value for <ref resolved='predef::atan.f'>f</ref>.
 The result will be in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::tan'>tan()</ref>, <ref resolved='predef::asin'>asin()</ref>, <ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::atan2'>atan2()</ref></p>
</text></group></doc>
<method name='atan'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='atan2'><doc><text><p>Returns the arcus tangent value for <ref resolved='predef::atan2.f1'>f1</ref>/<ref resolved='predef::atan2.f2'>f2</ref>, and uses
 the signs of <ref resolved='predef::atan2.f1'>f1</ref> and <ref resolved='predef::atan2.f2'>f2</ref> to determine the quadrant.
 The result will be in radians.</p>
</text><group><seealso/><text><p><ref resolved='predef::tan'>tan()</ref>, <ref resolved='predef::asin'>asin()</ref>, <ref resolved='predef::acos'>acos()</ref>, <ref resolved='predef::atan'>atan()</ref></p>
</text></group></doc>
<method name='atan2'>
<arguments><argument name='f1'><type><float/></type></argument><argument name='f2'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sinh'><doc><text><p>Returns the hyperbolic sine value for <ref resolved='predef::sinh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::asinh'>asinh()</ref>, <ref resolved='predef::cosh'>cosh()</ref>, <ref resolved='predef::tanh'>tanh()</ref></p>
</text></group></doc>
<method name='sinh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='asinh'><doc><text><p>Return the hyperbolic arcus sine value for <ref resolved='predef::asinh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::sinh'>sinh()</ref>, <ref resolved='predef::acosh'>acosh()</ref></p>
</text></group></doc>
<method name='asinh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cosh'><doc><text><p>Return the hyperbolic cosine value for <ref resolved='predef::cosh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::acosh'>acosh()</ref>, <ref resolved='predef::sinh'>sinh()</ref>, <ref resolved='predef::tanh'>tanh()</ref></p>
</text></group></doc>
<method name='cosh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='acosh'><doc><text><p>Return the hyperbolic arcus cosine value for <ref resolved='predef::acosh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::cosh'>cosh()</ref>, <ref resolved='predef::asinh'>asinh()</ref></p>
</text></group></doc>
<method name='acosh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='tanh'><doc><text><p>Returns the hyperbolic tangent value for <ref resolved='predef::tanh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::atanh'>atanh()</ref>, <ref resolved='predef::sinh'>sinh()</ref>, <ref resolved='predef::cosh'>cosh()</ref></p>
</text></group></doc>
<method name='tanh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='atanh'><doc><text><p>Returns the hyperbolic arcus tangent value for <ref resolved='predef::atanh.f'>f</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::tanh'>tanh()</ref>, <ref resolved='predef::asinh'>asinh()</ref>, <ref resolved='predef::acosh'>acosh()</ref></p>
</text></group></doc>
<method name='atanh'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sqrt'><doc><text><p>Returns the square root of <ref resolved='predef::sqrt.f'>f</ref>, or in the integer case, the square root
 truncated to the closest lower integer. If the argument is an object,
 the lfun _sqrt in the object will be called.</p>
</text><group><seealso/><text><p><ref resolved='predef::pow'>pow()</ref>, <ref resolved='predef::log'>log()</ref>, <ref resolved='predef::exp'>exp()</ref>, <ref resolved='predef::floor'>floor()</ref>, <ref resolved='lfun::_sqrt'>lfun::_sqrt</ref></p>
</text></group></doc>
<method name='sqrt'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='sqrt'>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sqrt'>
<arguments><argument name='o'><type><object resolved='predef::sqrt'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>

<docgroup homogen-type='method' homogen-name='log'><doc><text><p>Return the natural logarithm of <ref resolved='predef::log.f'>f</ref>.
 <expr>exp( log(x) ) == x</expr> for x &gt; 0.</p>
</text><group><seealso/><text><p><ref resolved='predef::pow'>pow()</ref>, <ref resolved='predef::exp'>exp()</ref></p>
</text></group></doc>
<method name='log'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='exp'><doc><text><p>Return the natural exponential of <ref resolved='predef::exp.f'>f</ref>.
 <expr>log( exp( x ) ) == x</expr> as long as exp(x) doesn't overflow an int.</p>
</text><group><seealso/><text><p><ref resolved='predef::pow'>pow()</ref>, <ref resolved='predef::log'>log()</ref></p>
</text></group></doc>
<method name='exp'>
<arguments><argument name='f'><type><or><float/><int/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='pow'><doc><text><p>Return <ref resolved='predef::pow.n'>n</ref> raised to the power of <ref resolved='predef::pow.x'>x</ref>. If both <ref resolved='predef::pow.n'>n</ref>
 and <ref resolved='predef::pow.x'>x</ref> are integers the result will be an integer.
 If <ref resolved='predef::pow.n'>n</ref> is an object its pow method will be called with
 <ref resolved='predef::pow.x'>x</ref> as argument.</p>
</text><group><seealso/><text><p><ref resolved='predef::exp'>exp()</ref>, <ref resolved='predef::log'>log()</ref></p>
</text></group></doc>
<method name='pow'>
<arguments><argument name='n'><type><or><float/><int/></or></type></argument><argument name='x'><type><or><float/><int/></or></type></argument></arguments>
<returntype><or><int/><float/></or></returntype>
</method>
<method name='pow'>
<arguments><argument name='n'><type><object resolved='predef::pow'/></type></argument><argument name='x'><type><or><float/><int/><object resolved='predef::pow'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='floor'><doc><text><p>Return the closest integer value less or equal to <ref resolved='predef::floor.f'>f</ref>.</p>
</text><group><note/><text><p><ref resolved='predef::floor'>floor()</ref> does <b>not</b> return an <expr>int</expr>, merely an integer value
   stored in a <expr>float</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::ceil'>ceil()</ref>, <ref resolved='predef::round'>round()</ref></p>
</text></group></doc>
<method name='floor'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ceil'><doc><text><p>Return the closest integer value greater or equal to <ref resolved='predef::ceil.f'>f</ref>.</p>
</text><group><note/><text><p><ref resolved='predef::ceil'>ceil()</ref> does <b>not</b> return an <expr>int</expr>, merely an integer value
   stored in a <expr>float</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::floor'>floor()</ref>, <ref resolved='predef::round'>round()</ref></p>
</text></group></doc>
<method name='ceil'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='round'><doc><text><p>Return the closest integer value to <ref resolved='predef::round.f'>f</ref>.</p>
</text><group><note/><text><p><ref resolved='predef::round'>round()</ref> does <b>not</b> return an <expr>int</expr>, merely an integer value
   stored in a <expr>float</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::floor'>floor()</ref>, <ref resolved='predef::ceil'>ceil()</ref></p>
</text></group></doc>
<method name='round'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='min'><doc><text><p>Returns the smallest value among <ref resolved='predef::min.args'>args</ref>. Compared objects
 must implement the <ref resolved='lfun::`&lt;'>lfun::`&lt;</ref> method.</p>
</text><group><seealso/><text><p><ref resolved='predef::max'>max()</ref></p>
</text></group></doc>
<method name='min'>
<arguments><argument name='args'><type><varargs><or><int/><float/><object resolved='predef::min'/></or></varargs></type></argument></arguments>
<returntype><or><int/><float/><object resolved='predef::min'/></or></returntype>
</method>
<method name='min'>
<arguments><argument name='args'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='min'>
<arguments/>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='max'><doc><text><p>Returns the largest value among <ref resolved='predef::max.args'>args</ref>. Compared objects
 must implement the <ref resolved='lfun::`&lt;'>lfun::`&lt;</ref> method.</p>
</text><group><seealso/><text><p><ref resolved='predef::min'>min()</ref></p>
</text></group></doc>
<method name='max'>
<arguments><argument name='args'><type><varargs><or><int/><float/><object resolved='predef::max'/></or></varargs></type></argument></arguments>
<returntype><or><int/><float/><object resolved='predef::max'/></or></returntype>
</method>
<method name='max'>
<arguments><argument name='args'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='max'>
<arguments/>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='abs'><doc><text><p>Return the absolute value for <ref resolved='predef::abs.f'>f</ref>. If <ref resolved='predef::abs.f'>f</ref> is
 an object it must implement <ref resolved='lfun::`&lt;'>lfun::`&lt;</ref> and
 unary <ref resolved='lfun::`-'>lfun::`-</ref>.</p>
</text></doc>
<method name='abs'>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='abs'>
<arguments><argument name='f'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='abs'>
<arguments><argument name='f'><type><object resolved='predef::abs'/></type></argument></arguments>
<returntype><object resolved='predef::abs'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sgn'><doc><text><p>Check the sign of a value.</p>
</text><group><returns/><text><p>Returns <expr>-1</expr> if <ref resolved='predef::sgn.value'>value</ref> is less than <ref resolved='predef::sgn.zero'>zero</ref>,
   <expr>1</expr> if <ref resolved='predef::sgn.value'>value</ref> is greater than <ref resolved='predef::sgn.zero'>zero</ref> and <expr>0</expr>
   (zero) otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::abs'>abs()</ref></p>
</text></group></doc>
<method name='sgn'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sgn'>
<arguments><argument name='value'><type><mixed/></type></argument><argument name='zero'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>


<module name='PDF'>

<class name='PDFgen'><docgroup homogen-type='method' homogen-name='open_file'><doc/>
<method name='open_file'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='close'><doc/>
<method name='close'>
<arguments/>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='begin_page'><doc><text><p>note:
	Defaults to a4, portrait</p>
</text></doc>
<method name='begin_page'>
<arguments/>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
<method name='begin_page'>
<arguments><argument name='width'><type><float/></type></argument><argument name='height'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='end_page'><doc/>
<method name='end_page'>
<arguments/>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_value'><doc/>
<method name='get_value'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='get_value'>
<arguments><argument name='key'><type><string/></type></argument><argument name='modifier'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_value'><doc/>
<method name='set_value'>
<arguments><argument name='key'><type><string/></type></argument><argument name='value'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_parameter'><doc/>
<method name='get_parameter'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='get_parameter'>
<arguments><argument name='key'><type><string/></type></argument><argument name='modifier'><type><float/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_parameter'><doc/>
<method name='set_parameter'>
<arguments><argument name='key'><type><string/></type></argument><argument name='parameter'><type><string/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_info'><doc/>
<method name='set_info'>
<arguments><argument name='key'><type><string/></type></argument><argument name='info'><type><string/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='findfont'><doc/>
<method name='findfont'>
<arguments><argument name='fontname'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='findfont'>
<arguments><argument name='fontname'><type><string/></type></argument><argument name='encoding'><type><or><void/><string/></or></type></argument><argument name='embed'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setfont'><doc/>
<method name='setfont'>
<arguments><argument name='n'><type><int/></type></argument><argument name='size'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='show'><doc/>
<method name='show'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='showxy'><doc/>
<method name='showxy'>
<arguments><argument name='s'><type><string/></type></argument><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='continue_text'><doc/>
<method name='continue_text'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF'>PDF</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='show_boxed'><doc/>
<method name='show_boxed'>
<arguments><argument name='text'><type><string/></type></argument><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='width'><type><float/></type></argument><argument name='height'><type><float/></type></argument><argument name='mode'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='show_boxed'>
<arguments><argument name='text'><type><string/></type></argument><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='width'><type><float/></type></argument><argument name='height'><type><float/></type></argument><argument name='mode'><type><string/></type></argument><argument name='feature'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='stringwidth'><doc/>
<method name='stringwidth'>
<arguments><argument name='text'><type><string/></type></argument><argument name='font'><type><int/></type></argument><argument name='size'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_text_pos'><doc/>
<method name='set_text_pos'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.set_text_pos'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setdash'><doc/>
<method name='setdash'>
<arguments><argument name='b'><type><float/></type></argument><argument name='w'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setdash'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setflat'><doc/>
<method name='setflat'>
<arguments><argument name='flatness'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setflat'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setlinejoin'><doc/>
<method name='setlinejoin'>
<arguments><argument name='linejoin'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setlinejoin'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setlinecap'><doc/>
<method name='setlinecap'>
<arguments><argument name='linecap'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setlinecap'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setmiterlimit'><doc/>
<method name='setmiterlimit'>
<arguments><argument name='miter'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setmiterlimit'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setlinewidth'><doc/>
<method name='setlinewidth'>
<arguments><argument name='width'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setlinewidth'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='translate'><doc/>
<method name='translate'>
<arguments><argument name='tx'><type><float/></type></argument><argument name='ty'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.translate'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='scale'><doc/>
<method name='scale'>
<arguments><argument name='sx'><type><float/></type></argument><argument name='sy'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.scale'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='rotate'><doc/>
<method name='rotate'>
<arguments><argument name='phi'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.rotate'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='skew'><doc/>
<method name='skew'>
<arguments><argument name='alpha'><type><float/></type></argument><argument name='beta'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.skew'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='concat'><doc/>
<method name='concat'>
<arguments><argument name='a'><type><float/></type></argument><argument name='b'><type><float/></type></argument><argument name='c'><type><float/></type></argument><argument name='d'><type><float/></type></argument><argument name='e'><type><float/></type></argument><argument name='f'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.concat'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='moveto'><doc/>
<method name='moveto'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.moveto'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='lineto'><doc/>
<method name='lineto'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.lineto'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='curveto'><doc/>
<method name='curveto'>
<arguments><argument name='x1'><type><float/></type></argument><argument name='y1'><type><float/></type></argument><argument name='x2'><type><float/></type></argument><argument name='y2'><type><float/></type></argument><argument name='x3'><type><float/></type></argument><argument name='y3'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.curveto'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='circle'><doc/>
<method name='circle'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='r'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.circle'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='arc'><doc/>
<method name='arc'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='r'><type><float/></type></argument><argument name='start'><type><float/></type></argument><argument name='end'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.arc'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='rect'><doc/>
<method name='rect'>
<arguments><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='width'><type><float/></type></argument><argument name='height'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.rect'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setgray_fill'><doc/>
<method name='setgray_fill'>
<arguments><argument name='gray'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setgray_fill'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setgray_stroke'><doc/>
<method name='setgray_stroke'>
<arguments><argument name='gray'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setgray_stroke'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setgray'><doc/>
<method name='setgray'>
<arguments><argument name='gray'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setgray'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setrgbcolor_fill'><doc/>
<method name='setrgbcolor_fill'>
<arguments><argument name='red'><type><float/></type></argument><argument name='green'><type><float/></type></argument><argument name='blue'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setrgbcolor_fill'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setrgbcolor_stroke'><doc/>
<method name='setrgbcolor_stroke'>
<arguments><argument name='red'><type><float/></type></argument><argument name='green'><type><float/></type></argument><argument name='blue'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setrgbcolor_stroke'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='setrgbcolor'><doc/>
<method name='setrgbcolor'>
<arguments><argument name='red'><type><float/></type></argument><argument name='green'><type><float/></type></argument><argument name='blue'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.setrgbcolor'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='open_image_file'><doc/>
<method name='open_image_file'>
<arguments><argument name='type'><type><string/></type></argument><argument name='filename'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='open_image_file'>
<arguments><argument name='type'><type><string/></type></argument><argument name='filename'><type><string/></type></argument><argument name='stringparam'><type><or><void/><string/></or></type></argument><argument name='intparam'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='open_CCITT'><doc/>
<method name='open_CCITT'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='BitReverse'><type><int/></type></argument><argument name='K'><type><int/></type></argument><argument name='BlackIs1'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='open_image'><doc/>
<method name='open_image'>
<arguments><argument name='type'><type><string/></type></argument><argument name='source'><type><string/></type></argument><argument name='data'><type><string/></type></argument><argument name='width'><type><int/></type></argument><argument name='height'><type><int/></type></argument><argument name='components'><type><int/></type></argument><argument name='bpc'><type><int/></type></argument><argument name='params'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='close_image'><doc/>
<method name='close_image'>
<arguments><argument name='image'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.close_image'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='place_image'><doc/>
<method name='place_image'>
<arguments><argument name='image'><type><int/></type></argument><argument name='x'><type><float/></type></argument><argument name='y'><type><float/></type></argument><argument name='scale'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.place_image'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_bookmark'><doc/>
<method name='add_bookmark'>
<arguments><argument name='text'><type><string/></type></argument><argument name='parent'><type><int/></type></argument><argument name='open'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='attach_file'><doc/>
<method name='attach_file'>
<arguments><argument name='llx'><type><float/></type></argument><argument name='lly'><type><float/></type></argument><argument name='urx'><type><float/></type></argument><argument name='ury'><type><float/></type></argument><argument name='filename'><type><string/></type></argument><argument name='description'><type><string/></type></argument><argument name='author'><type><string/></type></argument><argument name='mimetype'><type><string/></type></argument><argument name='icon'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.attach_file'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_pdflink'><doc/>
<method name='add_pdflink'>
<arguments><argument name='llx'><type><float/></type></argument><argument name='lly'><type><float/></type></argument><argument name='urx'><type><float/></type></argument><argument name='ury'><type><float/></type></argument><argument name='filename'><type><string/></type></argument><argument name='page'><type><int/></type></argument><argument name='dest'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.add_pdflink'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_locallink'><doc/>
<method name='add_locallink'>
<arguments><argument name='llx'><type><float/></type></argument><argument name='lly'><type><float/></type></argument><argument name='urx'><type><float/></type></argument><argument name='ury'><type><float/></type></argument><argument name='page'><type><int/></type></argument><argument name='dest'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.add_locallink'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_launchlink'><doc/>
<method name='add_launchlink'>
<arguments><argument name='llx'><type><float/></type></argument><argument name='lly'><type><float/></type></argument><argument name='urx'><type><float/></type></argument><argument name='ury'><type><float/></type></argument><argument name='filename'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.add_launchlink'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_weblink'><doc/>
<method name='add_weblink'>
<arguments><argument name='llx'><type><float/></type></argument><argument name='lly'><type><float/></type></argument><argument name='urx'><type><float/></type></argument><argument name='ury'><type><float/></type></argument><argument name='url'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.add_weblink'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_border_style'><doc/>
<method name='set_border_style'>
<arguments><argument name='style'><type><string/></type></argument><argument name='width'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.set_border_style'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_border_color'><doc/>
<method name='set_border_color'>
<arguments><argument name='red'><type><float/></type></argument><argument name='green'><type><float/></type></argument><argument name='blue'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.set_border_color'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_border_dash'><doc/>
<method name='set_border_dash'>
<arguments><argument name='b'><type><float/></type></argument><argument name='w'><type><float/></type></argument></arguments>
<returntype><object resolved='predef::PDF.PDFgen.set_border_dash'/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant'><doc/>
<constant name='a0_width'><source-position first-line='1081' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a0_height'><source-position first-line='1082' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a1_width'><source-position first-line='1083' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a1_height'><source-position first-line='1084' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a2_width'><source-position first-line='1085' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a2_height'><source-position first-line='1086' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a3_width'><source-position first-line='1087' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a3_height'><source-position first-line='1088' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a4_width'><source-position first-line='1089' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a4_height'><source-position first-line='1090' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a5_width'><source-position first-line='1091' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a5_height'><source-position first-line='1092' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a6_width'><source-position first-line='1093' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='a6_height'><source-position first-line='1094' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='b5_width'><source-position first-line='1095' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='b5_height'><source-position first-line='1096' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='letter_width'><source-position first-line='1097' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='letter_height'><source-position first-line='1098' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='legal_width'><source-position first-line='1099' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='legal_height'><source-position first-line='1100' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='ledger_width'><source-position first-line='1101' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='ledger_height'><source-position first-line='1102' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='p11x17_width'><source-position first-line='1103' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
<constant name='p11x17_height'><source-position first-line='1104' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/PDF/pdflib_glue.c'/></constant>
</docgroup>
</module>

<module name='_Ffmpeg'>

<class name='ffmpeg'><doc><text><p>Implements support of all codecs from a nice project Ffmpeg.
 You can find more info about it at <url>http://ffmpeg.sf.net/</url>.</p>
</text></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Create decoder or encoder object.</p>
</text><group><param name='codec_name'/><text><p>Internal number of codec, eg. <ref resolved='predef::_Ffmpeg.CODEC_ID_MP2'>CODEC_ID_MP2</ref>.</p>
</text></group><group><param name='encoder'/><text><p>If <tt>true</tt>, encoder object will be created, decoder
   object otherwise.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='codec_name'><type><int/></type></argument><argument name='encoder'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_codec_info'><doc><text><p>Returns mapping with info of used codec.</p>
</text><group><seealso/><text><p><ref resolved='predef::_Ffmpeg.ffmpeg.list_codecs'>list_codecs()</ref></p>
</text></group></doc>
<method name='get_codec_info'>
<arguments/>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_codec_param'><doc><text><p>Sets one codec parameter</p>
</text><group><param name='name'/><text><p>The name of parameter. One of <expr>"sample_rate"</expr>,
   <expr>"bit_rate"</expr>, <expr>"channels"</expr>.</p>
</text></group><group><returns/><text><p>Returns 1 on success, 0 otherwise (parameter not known).</p>
</text></group><group><seealso/><text><p><ref>get_codec_params()</ref></p>
</text></group></doc>
<method name='set_codec_param'>
<arguments><argument name='name'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_codec_status'><doc><text><p>Returns a mapping with the actual codec parameters.</p>
</text><group><seealso/><text><p><ref resolved='predef::_Ffmpeg.ffmpeg.set_codec_param'>set_codec_param()</ref></p>
</text></group></doc>
<method name='get_codec_status'>
<arguments/>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode'><doc><text><p>Returns a mapping with the new decoded frame and lenght of
 <ref resolved='predef::_Ffmpeg.ffmpeg.decode.data'>data</ref> which was used for decoding.</p>
</text></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><or><mapping/><int/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode'><doc><text><p>Decode all <ref resolved='predef::_Ffmpeg.ffmpeg.decode.data'>data</ref> buffer and pass result to <ref resolved='predef::_Ffmpeg.ffmpeg.decode.shuffler'>shuffler</ref>.
 Returns <expr>1</expr> on success, <expr>0</expr> otherwise.</p>
</text><group><note/><text><p>Shuffler variant isn't implemented, yet.</p>
</text></group><group><note/><text><p>Usable only in decoder.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::_Ffmpeg.ffmpeg.create'>create()</ref></p>
</text></group></doc>
<method name='decode'>
<arguments><argument name='data'><type><string/></type></argument><argument name='shuffler'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='list_codecs'><doc><text><p>Gets all supported codecs.</p>
</text><group><returns/><text><p>Array of mapping with codec features.</p>
</text></group></doc>
<method name='list_codecs'>
<arguments/>
<returntype><array><valuetype><mapping/></valuetype></array></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant'><doc><text><p>Various audio and video codecs.</p>
</text><group><note/><text><p>The list of supported codecs depends on Ffmpeg library.</p>
</text></group></doc>
<constant name='CODEC_ID_NONE'><source-position first-line='458' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_AC3'><source-position first-line='459' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_ADPCM_IMA_QT'><source-position first-line='460' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_ADPCM_IMA_WAV'><source-position first-line='461' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_ADPCM_MS'><source-position first-line='462' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_H263'><source-position first-line='463' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_H263I'><source-position first-line='464' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_H263P'><source-position first-line='465' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MJPEG'><source-position first-line='466' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MPEG1VIDEO'><source-position first-line='467' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MPEG4'><source-position first-line='468' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MP2'><source-position first-line='469' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MP3LAME'><source-position first-line='470' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MSMPEG4V1'><source-position first-line='471' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MSMPEG4V2'><source-position first-line='472' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_MSMPEG4V3'><source-position first-line='473' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_ALAW'><source-position first-line='474' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_MULAW'><source-position first-line='475' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_S16BE'><source-position first-line='476' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_S16LE'><source-position first-line='477' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_S8'><source-position first-line='478' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_U16BE'><source-position first-line='479' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_U16LE'><source-position first-line='480' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_PCM_U8'><source-position first-line='481' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_RAWVIDEO'><source-position first-line='482' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_RV10'><source-position first-line='483' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_SVQ1'><source-position first-line='484' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_VORBIS'><source-position first-line='485' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_WMV1'><source-position first-line='486' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_ID_WMV2'><source-position first-line='487' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
</docgroup>
<docgroup homogen-type='constant'><doc><text><p>Type of codec.</p>
</text></doc>
<constant name='CODEC_TYPE_AUDIO'><source-position first-line='494' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
<constant name='CODEC_TYPE_VIDEO'><source-position first-line='495' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/_Ffmpeg/ffmpeg.c'/></constant>
</docgroup>
</module>

<module name='Gz'><doc><text><p>The Gz module contains functions to compress and uncompress strings using
 the same algorithm as the program <tt>gzip</tt>. Compressing can be done in
 streaming mode or all at once.</p>
<p> The Gz module consists of two classes; Gz.deflate and Gz.inflate.
 Gz.deflate is used to pack data
 and Gz.inflate is used to unpack data. (Think "inflatable boat")</p>
</text><group><note/><text><p>Note that this module is only available if the gzip library was
   available when Pike was compiled.</p>
<p>   Note that although these functions use the same <i>algorithm</i> as
   <tt>gzip</tt>, they do not use the exact same format, so you cannot directly
   unzip gzipped files with these routines. Support for this will be
   added in the future.</p>
</text></group></doc>

<class name='deflate'><doc><text><p>Gz_deflate is a builtin program written in C. It interfaces the
 packing 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.inflate'>Gz.inflate()</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>If given, <ref resolved='predef::Gz.deflate.create.level'>level</ref> should be a number from 0 to 9 indicating the
 packing / CPU ratio. Zero means no packing, 2-3 is considered 'fast',
 6 is default and higher is considered 'slow' but gives better packing.</p>
<p> This function can also be used to re-initialize a Gz.deflate object
 so it can be re-used.</p>
<p> If the argument is negative, no headers will be emitted. This is
 needed to produce ZIP-files, as an example. The negative value is
 then negated, and handled as a positive value.</p>
<p> <ref resolved='predef::Gz.deflate.create.strategy'>strategy</ref>, if given, should be one of DEFAULT_STRATEGY, FILTERED or
 HUFFMAN_ONLY.</p>
</text></doc>
<method name='create'>
<arguments><argument name='level'><type><or><int><min>0</min><max>9</max></int><void/></or></type></argument><argument name='strategy'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='deflate' homogen-type='method'><doc><text><p>This function performs gzip style compression on a string <ref resolved='predef::Gz.deflate.deflate.data'>data</ref> and
 returns the packed data. Streaming can be done by calling this
 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><string/></type></argument><argument name='flush'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='inflate'><doc><text><p>Gz_deflate is a builtin program written in C. It interfaces the
 unpacking 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></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><group><param name='magic'/><text><p>The window_size value is passed down to inflateInit2 in zlib.</p>
<p> If the argument is negative, no header checks are done, and no
 verification of the data will be done either. This is needed for
 uncompressing ZIP-files, as an example. The negative value is then
 negated, and handled as a positive value.</p>
<p> Positive arguments set the maximum dictionary size to an exponent
 of 2, such that 8 (the minimum) will cause the window size to be
 256, and 15 (the maximum, and default value) will cause it to be
 32Kb. Setting this to anything except 15 is rather pointless in
 Pike.</p>
<p> It can be used to limit the amount of memory that is used to
 uncompress files, but 32Kb is not all that much in the great
 scheme of things.</p>
<p> To decompress files compressed with level 9 compression, a 32Kb
 window size is needed. level 1 compression only requires a 256
 byte window.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='window_size'><type><or><int/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='inflate' homogen-type='method'><doc><text><p>This function performs gzip style decompression. It can inflate
 a whole file at once or in blocks.</p>
</text><group><example/><text><p>// whole file
 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></group><group><seealso/><text><p><ref resolved='predef::Gz.deflate.deflate'>Gz.deflate-&gt;deflate()</ref></p>
</text></group></doc>
<method name='inflate'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='end_of_stream' homogen-type='method'><doc><text><p>This function returns 0 if the end of stream marker has not yet
 been encountered, or a string (possibly empty) containg any extra data
 received following the end of stream marker if the marker has been
 encountered.  If the extra data is not needed, the result of this
 function can be treated as a logical value.</p>
</text></doc>
<method name='end_of_stream'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
</class><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/></type></argument><argument name='start_value'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>


<class name='_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='9'/><doc><text><p>Low-level implementation of read/write support for GZip files</p>
</text></doc><docgroup homogen-name='open' homogen-type='method'><doc><text><p>Opens a file for I/O.</p>
</text><group><param name='file'/><text><p>The filename or an open filedescriptor or Stream for the GZip
   file to use.</p>
</text></group><group><param name='mode'/><text><p>Mode for the fileoperations. Defaults to read only.</p>
</text></group><group><note/><text><p>If the object already has been opened, it will first be closed.</p>
</text></group></doc>
<method name='open'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='91'/>
<arguments><argument name='file'><type><or><string/><int/><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></or></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Opens a gzip file for reading.</p>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='126'/><modifiers><static/></modifiers>
<arguments><argument name='gzFile'><type><or><void/><string/><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></or></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>closes the file</p>
</text><group><returns/><text><p>1 if successful</p>
</text></group></doc>
<method name='close'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='135'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Reads len (uncompressed) bytes from the file.
 If read is unsuccessful, 0 is returned.</p>
</text></doc>
<method name='read'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='189'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><or><int/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='write' homogen-type='method'><doc><text><p>Writes the data to the file.</p>
</text><group><returns/><text><p>the number of bytes written to the file.</p>
</text></group></doc>
<method name='write'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='203'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><text><p>Seeks within the file.</p>
</text><group><param name='pos'/><text><p>Position relative to the searchtype.</p>
</text></group><group><param name='type'/><text><p>SEEK_SET = set current position in file to pos
   SEEK_CUR = new position is current+pos
   SEEK_END is not supported.</p>
</text></group><group><returns/><text><p>New position or negative number if seek failed.</p>
</text></group></doc>
<method name='seek'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='225'/>
<arguments><argument name='pos'><type><int/></type></argument><argument name='type'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tell' homogen-type='method'><doc><group><returns/><text><p>the current position within the file.</p>
</text></group></doc>
<method name='tell'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='269'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eof' homogen-type='method'><doc><group><returns/><text><p>1 if EOF has been reached.</p>
</text></group></doc>
<method name='eof'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='276'/>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='setparams' homogen-type='method'><doc><text><p>Sets the encoding level and strategy</p>
</text><group><param name='level'/><text><p>Level of the compression.
   0 is the least compression, 9 is max. 8 is default.</p>
</text></group><group><param name='strategy'/><text><p>Set strategy for encoding to one of the following:
   DEFAULT_STRATEGY
   FILTERED
   HUFFMAN_ONLY</p>
</text></group></doc>
<method name='setparams'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='294'/>
<arguments><argument name='level'><type><int/></type></argument><argument name='strategy'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class>

<class name='File'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='319'/><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
 after a write, you must close the file before calling open or
 strange effects might be the result.</p>
</text></group></doc><docgroup homogen-name='_file' homogen-type='inherit'><doc>
</doc>
<inherit name='_file'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='320'/><classname resolved='predef::Gz._file'>_file</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><group><param name='file'/><text><p>Filename or filedescriptor of the gzip file to open, or an already
 open Stream.</p>
</text></group><group><param name='mode'/><text><p>mode for the file. Defaults to "rb".</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Gz.File.open'>open</ref> <ref resolved='predef::Stdio.File'>Stdio.File</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='file'><type><or><void/><string/><int/><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></or></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='open' homogen-type='method'><doc><group><param name='file'/><text><p>Filename or filedescriptor of the gzip file to open, or an already
 open Stream.</p>
</text></group><group><param name='mode'/><text><p>mode for the file. Defaults to "rb".
 May be one of the following:</p>
<dl><group><item name='rb'/><text><p>read mode</p>
</text></group><group><item name='wb'/><text><p>write mode</p>
</text></group><group><item name='ab'/><text><p>append mode</p>
</text></group></dl><p>For the wb and ab mode, additional parameters may
 be specified. Please se zlib manual for more info.</p>
</text></group><group><returns/><text><p>non-zero if successful.</p>
</text></group></doc>
<method name='open'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='380'/>
<arguments><argument name='file'><type><or><string/><int/><object resolved='predef::Stdio.Stream'>Stdio.Stream</object></or></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Reads data from the file.
 If no argument is given, the whole file is read.</p>
</text></doc>
<method name='read'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='396'/>
<arguments><argument name='length'><type><or><void/><int/></or></type></argument></arguments>
<returntype><or><int/><string/></or></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Gz/module.pmod.in' first-line='4'/><classname>"___"</classname></inherit>
</docgroup>
</module>







<docgroup homogen-name='file_stat' homogen-type='method'><doc><text><p>Stat a file.</p>
<p> If the argument <ref resolved='predef::file_stat.symlink'>symlink</ref> is <expr>1</expr> symlinks will not be followed.</p>
</text><group><returns/><text><p>If the path specified by <ref resolved='predef::file_stat.path'>path</ref> doesn't exist <expr>0</expr> (zero) will
   be returned.</p>
<p>   Otherwise an object describing the properties of <ref resolved='predef::file_stat.path'>path</ref> will be
   returned.</p>
</text></group><group><note/><text><p>In Pike 7.0 and earlier this function returned an array with 7 elements.
   The old behaviour can be simulated with the following function:</p>
<code><text><p>array(int) file_stat(string path, void|int(0..1) symlink)
 {
   File.Stat st = predef::file_stat(path, symlink);
   if (!st) return 0;
   return (array(int))st;
 }</p>
</text></code>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.Stat'>Stdio.Stat</ref>, <ref resolved='predef::Stdio.File.stat'>Stdio.File-&gt;stat()</ref></p>
</text></group></doc>
<method name='file_stat'>
<arguments><argument name='path'><type><string/></type></argument><argument name='symlink'><type><or><void/><int><min>0</min><max>1</max></int></or></type></argument></arguments>
<returntype><object resolved='predef::Stdio.Stat'>Stdio.Stat</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='file_truncate' homogen-type='method'><doc><text><p>Truncates the file <ref resolved='predef::file_truncate.file'>file</ref> to the length specified in <ref resolved='predef::file_truncate.length'>length</ref>.</p>
</text><group><returns/><text><p>Returns 1 if ok, 0 if failed.</p>
</text></group></doc>
<method name='file_truncate'>
<arguments><argument name='file'><type><string/></type></argument><argument name='length'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='filesystem_stat' homogen-type='method'><doc><text><p>Returns a mapping describing the properties of the filesystem
 containing the path specified by <ref resolved='predef::filesystem_stat.path'>path</ref>.</p>
</text><group><returns/><text><p>If a filesystem cannot be determined <expr>0</expr> (zero) will be returned.</p>
<p>   Otherwise a mapping(string:int) with the following fields will be
   returned:</p>
<mapping><group><member><type><int/></type><index>"blocksize"</index></member><text><p>Size in bytes of the filesystem blocks.</p>
</text></group><group><member><type><int/></type><index>"blocks"</index></member><text><p>Size of the entire filesystem in blocks.</p>
</text></group><group><member><type><int/></type><index>"bfree"</index></member><text><p>Number of free blocks in the filesystem.</p>
</text></group><group><member><type><int/></type><index>"bavail"</index></member><text><p>Number of available blocks in the filesystem.
       This is usually somewhat less than the <expr>"bfree"</expr> value, and
       can usually be adjusted with eg tunefs(1M).</p>
</text></group><group><member><type><int/></type><index>"files"</index></member><text><p>Total number of files (aka inodes) allowed by this filesystem.</p>
</text></group><group><member><type><int/></type><index>"ffree"</index></member><text><p>Number of free files in the filesystem.</p>
</text></group><group><member><type><int/></type><index>"favail"</index></member><text><p>Number of available files in the filesystem.
       This is usually the same as the <expr>"ffree"</expr> value, and can
       usually be adjusted with eg tunefs(1M).</p>
</text></group><group><member><type><string/></type><index>"fsname"</index></member><text><p>Name assigned to the filesystem. This item is not available
       on all systems.</p>
</text></group><group><member><type><string/></type><index>"fstype"</index></member><text><p>Type of filesystem (eg <expr>"nfs"</expr>). This item is not
       available on all systems.</p>
</text></group></mapping>
</text></group><group><note/><text><p>Please note that not all members are present on all OSs.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::file_stat'>file_stat()</ref></p>
</text></group></doc>
<method name='filesystem_stat'>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='werror' homogen-type='method'><doc><text><p>Write to standard error.</p>
</text></doc>
<method name='werror'>
<arguments><argument name='msg'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='rm' homogen-type='method'><doc><text><p>Remove a file or directory.</p>
</text><group><returns/><text><p>Returns <expr>0</expr> (zero) on failure, <expr>1</expr> otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::mkdir'>mkdir()</ref>, <ref resolved='predef::Stdio.recursive_rm'>Stdio.recursive_rm()</ref></p>
</text></group></doc>
<method name='rm'>
<arguments><argument name='f'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mkdir' homogen-type='method'><doc><text><p>Create a directory.</p>
<p> If <ref resolved='predef::mkdir.mode'>mode</ref> is specified, it's will be used for the new directory after
 being <expr>&amp;</expr>'ed with the current umask (on OS'es that support this).</p>
</text><group><returns/><text><p>Returns <expr>0</expr> (zero) on failure, <expr>1</expr> otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::rm'>rm()</ref>, <ref resolved='predef::cd'>cd()</ref>, <ref resolved='predef::Stdio.mkdirhier'>Stdio.mkdirhier()</ref></p>
</text></group></doc>
<method name='mkdir'>
<arguments><argument name='dirname'><type><string/></type></argument><argument name='mode'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_dir' homogen-type='method'><doc><text><p>Returns an array of all filenames in the directory <ref resolved='predef::get_dir.dirname'>dirname</ref>, or
 <expr>0</expr> (zero) if the directory does not exist.</p>
</text><group><seealso/><text><p><ref resolved='predef::mkdir'>mkdir()</ref>, <ref resolved='predef::cd'>cd()</ref></p>
</text></group></doc>
<method name='get_dir'>
<arguments><argument name='dirname'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='cd' homogen-type='method'><doc><text><p>Change the current directory for the whole Pike process.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> for success, <expr>0</expr> (zero) otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::getcwd'>getcwd()</ref></p>
</text></group></doc>
<method name='cd'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='getcwd' homogen-type='method'><doc><text><p>Returns the current working directory.</p>
</text><group><seealso/><text><p><ref resolved='predef::cd'>cd()</ref></p>
</text></group></doc>
<method name='getcwd'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='exece' homogen-type='method'><doc><text><p>This function transforms the Pike process into a process running
   the program specified in the argument <ref resolved='predef::exece.file'>file</ref> with the arguments <ref resolved='predef::exece.args'>args</ref>.</p>
<p>   If the mapping <ref resolved='predef::exece.env'>env</ref> is present, it will completely replace all
   environment variables before the new program is executed.</p>
</text><group><returns/><text><p>This function only returns if something went wrong during <tt>exece(2)</tt>,
   and in that case it returns <expr>0</expr> (zero).</p>
</text></group><group><note/><text><p>The Pike driver _dies_ when this function is called. You must either
   use <ref resolved='predef::fork'>fork()</ref> or <ref resolved='predef::Process.create_process'>Process.create_process()</ref> if you wish to execute a
   program and still run the Pike runtime.</p>
<p>   This function is not available on all platforms.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref>, <ref resolved='predef::fork'>fork()</ref>, <ref resolved='predef::Stdio.File.pipe'>Stdio.File-&gt;pipe()</ref></p>
</text></group></doc>
<method name='exece'>
<arguments><argument name='file'><type><string/></type></argument><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='exece'>
<arguments><argument name='file'><type><string/></type></argument><argument name='args'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='env'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='mv' homogen-type='method'><doc><text><p>Rename or move a file or directory.</p>
<p> If the destination already exists, it will be replaced.
 Replacement often only works if <ref resolved='predef::mv.to'>to</ref> is of the same type as
 <ref resolved='predef::mv.from'>from</ref>, i.e. a file can only be replaced by another file and so
 on. Also, a directory will commonly be replaced only if it's
 empty.</p>
<p> On some OSs this function can't move directories, only rename
 them.</p>
</text><group><returns/><text><p>Returns <expr>0</expr> (zero) on failure, <expr>1</expr> otherwise. Call
   <ref resolved='predef::errno'>errno()</ref> to get more error info on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::rm'>rm()</ref></p>
</text></group></doc>
<method name='mv'>
<arguments><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='strerror' homogen-type='method'><doc><text><p>This function returns a description of an error code. The error
 code is usually obtained from eg <ref resolved='predef::Stdio.File.errno'>Stdio.File-&gt;errno()</ref>.</p>
</text><group><note/><text><p>On some platforms the string returned can be somewhat nondescriptive.</p>
</text></group></doc>
<method name='strerror'>
<arguments><argument name='errno'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='errno' homogen-type='method'><doc><text><p>This function returns the system error from the last file operation.</p>
</text><group><note/><text><p>Note that you should normally use <ref resolved='predef::Stdio.File.errno'>Stdio.File-&gt;errno()</ref> instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Stdio.File.errno'>Stdio.File-&gt;errno()</ref>, <ref resolved='predef::strerror'>strerror()</ref></p>
</text></group></doc>
<method name='errno'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>






<module name='Gdbm'>

<class name='gdbm'><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Without arguments, this function does nothing. With one argument it
 opens the given file as a gdbm database, if this fails for some
 reason, an error will be generated. If a second argument is present,
 it specifies how to open the database using one or more of the follow
 flags in a string:</p>
<string><group><value>r</value><text><p>Open database for reading</p>
</text></group><group><value>w</value><text><p>Open database for writing</p>
</text></group><group><value>c</value><text><p>Create database if it does not exist</p>
</text></group><group><value>t</value><text><p>Overwrite existing database</p>
</text></group><group><value>f</value><text><p>Fast mode</p>
</text></group></string><p>The fast mode prevents the database from syncronizing each change
 in the database immediately. This is dangerous because the database
 can be left in an unusable state if Pike is terminated abnormally.</p>
<p> The default mode is <expr>"rwc"</expr>.</p>
</text><group><note/><text><p>The gdbm manual states that it is important that the database is
  closed properly. Unfortunately this will not be the case if Pike
  calls exit() or returns from main(). You should therefore make sure
  you call close or destruct your gdbm objects when exiting your
  program. This will probably be done automatically in the future.</p>
</text></group></doc>
<method name='create'>
<arguments><argument name='file'><type><or><void/><string/></or></type></argument><argument name='mode'><type><or><void/><string/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Return the data associated with the key 'key' in the database.
 If there was no such key in the database, zero is returned.</p>
</text></doc>
<method name='fetch'>
<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-type='method' homogen-name='delete'><doc><text><p>Remove a key from the database. Returns 1 if successful,
 otherwise 0, e.g. when the item is not present or the
 database is read only.</p>
</text></doc>
<method name='delete'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='firstkey'><doc><text><p>Return the first key in the database, this can be any key in the
 database.</p>
</text></doc>
<method name='firstkey'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='nextkey'><doc><text><p>This returns the key in database that follows the key 'key' key.
 This is of course used to iterate over all keys in the database.</p>
</text><group><example/><text><p>// Write the contents of the database
  for(key=gdbm-&gt;firstkey(); k; k=gdbm-&gt;nextkey(k))
    write(k+":"+gdbm-&gt;fetch(k)+"\n");</p>
</text></group></doc>
<method name='nextkey'>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Associate the contents of 'data' with the key 'key'. If the key 'key'
 already exists in the database the data for that key will be replaced.
 If it does not exist it will be added. An error will be generated if
 the database was not open for writing.</p>
</text><group><example/><text><p>gdbm[key] = data;</p>
</text></group></doc>
<method name='store'>
<arguments><argument name='key'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='key'><type><string/></type></argument><argument name='data'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='reorganize'><doc><text><p>Deletions and insertions into the database can cause fragmentation
 which will make the database bigger. This routine reorganizes the
 contents to get rid of fragmentation. Note however that this function
 can take a LOT of time to run.</p>
</text></doc>
<method name='reorganize'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sync'><doc><text><p>When opening the database with the 'f' flag writings to the database
 can be cached in memory for a long time. Calling sync will write
 all such caches to disk and not return until everything is stored
 on the disk.</p>
</text></doc>
<method name='sync'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='close'><doc><text><p>Closes the database.</p>
</text></doc>
<method name='close'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<module name='Gmp'><doc><text><p>GMP is a free library for arbitrary precision arithmetic,
 operating on signed integers, rational numbers, and floating point
 numbers. There is no practical limit to the precision except the
 ones implied by the available memory in the machine GMP runs on.
 <url>http://www.swox.com/gmp/</url></p>
</text></doc>

<class name='bignum'><doc><text><p>This program is used by the internal auto-bignum conversion. It
 can be used to explicitly type integers that are too big to be
 INT_TYPE. Best is however to not use this program unless you
 really know what you are doing.</p>
</text></doc></class>

<class name='mpz'><doc><text><p>Gmp.mpz implements very large integers. In fact,
 the only limitation on these integers is the available memory.
 The mpz object implements all the normal integer operations.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Create and initialize a <ref resolved='predef::Gmp.mpz'>Gmp.mpz</ref> object.</p>
</text><group><param name='value'/><text><p>Initial value. If no value is specified, the object will be initialized
   to zero.</p>
</text></group><group><param name='base'/><text><p>Base the value is specified in. The default base is base 10.
   The base can be either a value in the range <tt>[2..36]</tt> (inclusive),
   in which case the numbers are taken from the ASCII range
   <tt>0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ</tt> (case-insensitive),
   or the value 256, in which case <ref resolved='predef::Gmp.mpz.create.value'>value</ref> is taken to be the binary
   representation in network byte order.</p>
</text></group><group><note/><text><p>Leading zeroes in <ref resolved='predef::Gmp.mpz.create.value'>value</ref> are not significant. In particular leading
   NUL characters are not preserved in base 256 mode.</p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='value'><type><or><string/><int/><float/><object resolved='predef::Gmp.mpz.create'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='value'><type><string/></type></argument><argument name='base'><type><or><int><min>2</min><max>36</max></int><int><min>256</min><max>256</max></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_int' homogen-type='method'><doc/>
<method name='cast_to_int'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='__hash' homogen-type='method'><doc/>
<method name='__hash'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_float' homogen-type='method'><doc/>
<method name='cast_to_float'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast_to_string' homogen-type='method'><doc/>
<method name='cast_to_string'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='digits' homogen-type='method'><doc><text><p>This function converts an mpz to a string. If a <ref resolved='predef::Gmp.mpz.digits.base'>base</ref> is given the
 number will be represented in that base. Valid bases are 2-36 and
 256. The default base is 10.</p>
</text><group><seealso/><text><p><ref resolved='predef::Gmp.mpz.cast_to_string'>cast_to_string</ref></p>
</text></group></doc>
<method name='digits'>
<arguments><argument name='base'><type><or><void/><int><min>2</min><max>36</max></int><int><min>256</min><max>256</max></int></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'>
<arguments><argument name='ind'><type><int/></type></argument><argument name='opt'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_is_type' homogen-type='method'><doc/>
<method name='_is_type'>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='size' homogen-type='method'><doc><text><p>This function returns how long the mpz would be represented in the
 specified <ref resolved='predef::Gmp.mpz.size.base'>base</ref>. The default base is 2.</p>
</text></doc>
<method name='size'>
<arguments><argument name='base'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast an mpz to a string, int or float.</p>
</text><group><seealso/><text><p><ref resolved='predef::Gmp.mpz.cast_to_int'>cast_to_int</ref>, <ref resolved='predef::Gmp.mpz.cast_to_float'>cast_to_float</ref>, <ref resolved='predef::Gmp.mpz.cast_to_string'>cast_to_string</ref></p>
</text></group></doc>
<method name='cast'>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc/>
<method name='`+'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``+' homogen-type='method'><doc/>
<method name='``+'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc/>
<method name='`+='>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*' homogen-type='method'><doc/>
<method name='`*'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``*' homogen-type='method'><doc/>
<method name='``*'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*=' homogen-type='method'><doc/>
<method name='`*='>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gcd' homogen-type='method'><doc><text><p>This function returns the greatest common divisor for <ref resolved='predef::Gmp.mpz.gcd.arg'>arg</ref> and mpz.</p>
</text></doc>
<method name='gcd'>
<arguments><argument name='arg'><type><or><object resolved='predef::Gmp.mpz.gcd'/><int/><float/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc/>
<method name='`-'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``-' homogen-type='method'><doc/>
<method name='``-'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`/' homogen-type='method'><doc/>
<method name='`/'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``/' homogen-type='method'><doc/>
<method name='``/'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`%' homogen-type='method'><doc/>
<method name='`%'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``%' homogen-type='method'><doc/>
<method name='``%'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='gcdext' homogen-type='method'><doc/>
<method name='gcdext'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='gcdext2' homogen-type='method'><doc/>
<method name='gcdext2'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='invert' homogen-type='method'><doc/>
<method name='invert'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&amp;' homogen-type='method'><doc/>
<method name='`&amp;'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`|' homogen-type='method'><doc/>
<method name='`|'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`^' homogen-type='method'><doc/>
<method name='`^'>
<arguments><argument name='x'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`~' homogen-type='method'><doc/>
<method name='`~'>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc/>
<method name='`&gt;'>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc/>
<method name='`&lt;'>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;=' homogen-type='method'><doc/>
<method name='`&gt;='>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;=' homogen-type='method'><doc/>
<method name='`&lt;='>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc/>
<method name='`=='>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!=' homogen-type='method'><doc/>
<method name='`!='>
<arguments><argument name='with'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='probably_prime_p' homogen-type='method'><doc><text><p>This function returns 1 if mpz is a prime, and 0 most of the time
 if it is not.</p>
</text></doc>
<method name='probably_prime_p'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='small_factor' homogen-type='method'><doc/>
<method name='small_factor'>
<arguments><argument name='limit'><type><or><void/><int><min>1</min><max/></int></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='next_prime' homogen-type='method'><doc/>
<method name='next_prime'>
<arguments><argument name='count'><type><or><void/><int/></or></type></argument><argument name='limit'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sgn' homogen-type='method'><doc/>
<method name='sgn'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sqrt' homogen-type='method'><doc><text><p>This function return the the truncated integer part of the square
 root of the value of mpz.</p>
</text></doc>
<method name='sqrt'>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='sqrtrem' homogen-type='method'><doc/>
<method name='sqrtrem'>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;&lt;' homogen-type='method'><doc/>
<method name='`&lt;&lt;'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;&gt;' homogen-type='method'><doc/>
<method name='`&gt;&gt;'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``&lt;&lt;' homogen-type='method'><doc/>
<method name='``&lt;&lt;'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``&gt;&gt;' homogen-type='method'><doc/>
<method name='``&gt;&gt;'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='powm' homogen-type='method'><doc><text><p>This function returns <tt>( mpz ** a ) % b</tt>.</p>
</text></doc>
<method name='powm'>
<arguments><argument name='a'><type><or><int/><string/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument><argument name='b'><type><or><int/><string/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='pow' homogen-type='method'><doc/>
<method name='pow'>
<arguments><argument name='x'><type><or><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc/>
<method name='`!'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='popcount' homogen-type='method'><doc><text><p>For values &gt;= 0, returns the population count (the number of set bits).
 For negative values (who have an infinite number of leading ones in a
 binary representation), -1 is returned.</p>
</text></doc>
<method name='popcount'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_random' homogen-type='method'><doc/>
<method name='_random'>
<arguments/>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='fac' homogen-type='method'><doc><text><p>Returns the factorial of <ref resolved='predef::Gmp.fac.x'>x</ref> (<ref resolved='predef::Gmp.fac.x'>x</ref>!).</p>
</text></doc>
<method name='fac'>
<arguments><argument name='x'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpz'>Gmp.mpz</object></returntype>
</method>
</docgroup>


<class name='mpq'><doc><text><p>Rational number stored in canonical form. The canonical from means
 that the denominator and the numerator have no common factors, and
 that the denominator is positive. Zero has the unique
 representation 0/1. All functions canonicalize their result.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='x'><type><or><void/><string/><int/><float/><object resolved='predef::Gmp.mpz'>Gmp.mpz</object><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='numerator'><type><int/></type></argument><argument name='denominator'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='x'><type><string/></type></argument><argument name='base'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_int' homogen-type='method'><doc/>
<method name='get_int'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='__hash' homogen-type='method'><doc/>
<method name='__hash'><modifiers><static/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_float' homogen-type='method'><doc/>
<method name='get_float'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_string' homogen-type='method'><doc/>
<method name='get_string'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'><modifiers><static/></modifiers>
<arguments><argument name='c'><type><int/></type></argument><argument name='flags'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_is_type' homogen-type='method'><doc/>
<method name='_is_type'><modifiers><static/></modifiers>
<arguments><argument name='arg'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc/>
<method name='cast'><modifiers><static/></modifiers>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><or><int/><string/><float/><object resolved='predef::Gmp.mpq.cast'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc/>
<method name='`+'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`+'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``+' homogen-type='method'><doc/>
<method name='``+'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.``+'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc/>
<method name='`+='><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`+='/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*' homogen-type='method'><doc/>
<method name='`*'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`*'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``*' homogen-type='method'><doc/>
<method name='``*'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.``*'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*=' homogen-type='method'><doc/>
<method name='`*='><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`*='/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc/>
<method name='`-'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`-'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``-' homogen-type='method'><doc/>
<method name='``-'><modifiers><static/></modifiers>
<arguments><argument name='sv'><type><or><int/><float/><object resolved='predef::Gmp.mpq.``-'/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`/' homogen-type='method'><doc/>
<method name='`/'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`/'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``/' homogen-type='method'><doc/>
<method name='``/'><modifiers><static/></modifiers>
<arguments><argument name='sv'><type><or><int/><float/><object resolved='predef::Gmp.mpq.``/'/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`%' homogen-type='method'><doc><text><p><expr>a%b =  a -  floor(a/b)*b </expr></p>
</text></doc>
<method name='`%'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpq.`%'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``%' homogen-type='method'><doc/>
<method name='``%'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><or><int/><float/><object resolved='predef::Gmp.mpq.``%'/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='invert' homogen-type='method'><doc/>
<method name='invert'>
<arguments/>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`~' homogen-type='method'><doc><text><p>Defined as <expr>-1-x</expr>.</p>
</text></doc>
<method name='`~'><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gmp.mpq'>Gmp.mpq</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc/>
<method name='`&gt;'><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc/>
<method name='`&lt;'><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;=' homogen-type='method'><doc/>
<method name='`&gt;='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;=' homogen-type='method'><doc/>
<method name='`&lt;='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc/>
<method name='`=='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!=' homogen-type='method'><doc/>
<method name='`!='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sgn' homogen-type='method'><doc/>
<method name='sgn'>
<arguments/>
<returntype><int><min>-1</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc/>
<method name='`!'><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class>

<class name='mpf'><doc><text><p>GMP floating point number.</p>
<p> The mantissa of each float has a user-selectable precision,
 limited only by available memory. Each variable has its own
 precision, and that can be increased or decreased at any time.</p>
<p> The exponent of each float is a fixed precision, one machine word
 on most systems. In the current implementation the exponent is a
 count of limbs, so for example on a 32-bit system this means a
 range of roughly 2^-68719476768 to 2^68719476736, or on a 64-bit
 system this will be greater.</p>
<p> Each variable keeps a size for the mantissa data actually in use.
 This means that if a float is exactly represented in only a few
 bits then only those bits will be used in a calculation, even if
 the selected precision is high.</p>
<p> All calculations are performed to the precision of the destination
 variable. Each function is defined to calculate with "infinite
 precision" followed by a truncation to the destination precision,
 but of course the work done is only what's needed to determine a
 result under that definition.</p>
<p> The precision selected for a variable is a minimum value, GMP may
 increase it a little to facilitate efficient calculation.
 Currently this means rounding up to a whole limb, and then
 sometimes having a further partial limb, depending on the high
 limb of the mantissa. But applications shouldn't be concerned by
 such details.</p>
<p> The mantissa in stored in binary, as might be imagined from the
 fact precisions are expressed in bits. One consequence of this is
 that decimal fractions like 0.1 cannot be represented exactly. The
 same is true of plain IEEE double floats. This makes both highly
 unsuitable for calculations involving money or other values that
 should be exact decimal fractions. (Suitably scaled integers, or
 perhaps rationals, are better choices.)</p>
<p> mpf functions and variables have no special notion of infinity or
 not-a-number, and applications must take care not to overflow the
 exponent or results will be unpredictable. This might change in a
 future release.</p>
<p> Note that the mpf functions are not intended as a smooth extension
 to IEEE P754 arithmetic. In particular results obtained on one
 computer often differ from the results on a computer with a
 different word size.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='x'><type><or><void/><int/><string/><float/><object resolved='predef::Gmp.mpf.create'/></or></type></argument><argument name='precision'><type><or><void/><int><min>0</min><max/></int></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'><modifiers><static/></modifiers>
<arguments><argument name='x'><type><string/></type></argument><argument name='precision'><type><int><min>0</min><max/></int></type></argument><argument name='base'><type><int><min>2</min><max>36</max></int></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='__hash' homogen-type='method'><doc/>
<method name='__hash'><modifiers><static/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_int' homogen-type='method'><doc/>
<method name='get_int'>
<arguments/>
<returntype><or><int/><object resolved='predef::Gmp.mpf.get_int'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_float' homogen-type='method'><doc><text><p>Returns the value of the object as a float.</p>
</text></doc>
<method name='get_float'>
<arguments/>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_string' homogen-type='method'><doc/>
<method name='get_string'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'><modifiers><static/></modifiers>
<arguments><argument name='c'><type><int/></type></argument><argument name='flags'><type><mapping/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_is_type' homogen-type='method'><doc><text><p>The Gmp.mpf object will claim to be a <expr>"float"</expr>.</p>
</text><group><fixme/><text><p>Perhaps it should also return true for <expr>"object"</expr>?</p>
</text></group></doc>
<method name='_is_type'><modifiers><static/></modifiers>
<arguments><argument name='arg'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc/>
<method name='cast'><modifiers><static/></modifiers>
<arguments><argument name='to'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+' homogen-type='method'><doc/>
<method name='`+'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`+'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`+=' homogen-type='method'><doc/>
<method name='`+='><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`+='/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_precision' homogen-type='method'><doc><text><p>Sets the precision of the current object to be at
 least <ref resolved='predef::Gmp.mpf.set_precision.prec'>prec</ref> bits. The precision is limited to 128Kb.
 The current object will be returned.</p>
</text></doc>
<method name='set_precision'>
<arguments><argument name='prec'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='get_precision' homogen-type='method'><doc><text><p>Returns the current precision, in bits.</p>
</text></doc>
<method name='get_precision'>
<arguments/>
<returntype><int><min>0</min><max/></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*' homogen-type='method'><doc/>
<method name='`*'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`*'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``*' homogen-type='method'><doc/>
<method name='``*'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.``*'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`*=' homogen-type='method'><doc/>
<method name='`*='><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`*='/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`-' homogen-type='method'><doc/>
<method name='`-'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`-'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``-' homogen-type='method'><doc/>
<method name='``-'><modifiers><static/></modifiers>
<arguments><argument name='sv'><type><or><int/><float/><object resolved='predef::Gmp.mpf.``-'/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`/' homogen-type='method'><doc/>
<method name='`/'><modifiers><static/></modifiers>
<arguments><argument name='a'><type><varargs><or><int/><float/><object resolved='predef::Gmp.mpf.`/'/></or></varargs></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='``/' homogen-type='method'><doc/>
<method name='``/'><modifiers><static/></modifiers>
<arguments><argument name='sv'><type><or><int/><float/><object resolved='predef::Gmp.mpf.``/'/></or></type></argument></arguments>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`~' homogen-type='method'><doc/>
<method name='`~'><modifiers><static/></modifiers>
<arguments/>
<returntype><object resolved='predef::Gmp.mpf'>Gmp.mpf</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;' homogen-type='method'><doc/>
<method name='`&gt;'><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;' homogen-type='method'><doc/>
<method name='`&lt;'><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&gt;=' homogen-type='method'><doc/>
<method name='`&gt;='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`&lt;=' homogen-type='method'><doc/>
<method name='`&lt;='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`==' homogen-type='method'><doc/>
<method name='`=='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!=' homogen-type='method'><doc/>
<method name='`!='><modifiers><static/></modifiers>
<arguments><argument name='q'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='sgn' homogen-type='method'><doc/>
<method name='sgn'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='`!' homogen-type='method'><doc/>
<method name='`!'><modifiers><static/></modifiers>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
</class></module>





<module name='Mysql'>

<class name='mysql_result'><doc><text><p>Objects of this class contain the result from Mysql queries.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql'>Mysql.mysql</ref>, <ref>Mysql.mysql-&gt;big_query()</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Make a new <ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref> object.</p>
</text><group><seealso/><text><p><ref>Mysql.mysql-&gt;big_query()</ref>, <ref resolved='predef::Mysql.mysql.list_dbs'>Mysql.mysql-&gt;list_dbs()</ref>,
   <ref resolved='predef::Mysql.mysql.list_tables'>Mysql.mysql-&gt;list_tables()</ref>, <ref resolved='predef::Mysql.mysql.list_processes'>Mysql.mysql-&gt;list_processes()</ref>,
   <ref resolved='predef::Mysql.mysql'>Mysql.mysql</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='connection'><type><object resolved='predef::Mysql.mysql'>Mysql.mysql</object></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_rows' homogen-type='method'><doc><text><p>Number of rows in the result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.num_fields'>num_fields()</ref></p>
</text></group></doc>
<method name='num_rows'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='num_fields' homogen-type='method'><doc><text><p>Number of fields in the result.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.num_rows'>num_rows()</ref></p>
</text></group></doc>
<method name='num_fields'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='field_seek' homogen-type='method'><doc><text><p>Skip to specified field.</p>
<p> Places the field cursor at the specified position. This affects
 which field mysql_result-&gt;fetch_field() will return next.</p>
<p> Fields are numbered starting with 0.</p>
</text><group><note/><text><p>This function is usually not enabled. To enable it
   <tt>SUPPORT_FIELD_SEEK</tt> must be defined when compiling
   the mysql-module.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.fetch_field'>fetch_field()</ref>, <ref resolved='predef::Mysql.mysql_result.fetch_fields'>fetch_fields()</ref></p>
</text></group></doc>
<method name='field_seek'>
<arguments><argument name='field_no'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='eof' homogen-type='method'><doc><text><p>Sense end of result table.</p>
<p> Returns <expr>1</expr> when all rows have been read, and <expr>0</expr> (zero)
 otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.fetch_row'>fetch_row()</ref></p>
</text></group></doc>
<method name='eof'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_field' homogen-type='method'><doc><text><p>Return specification of the current field.</p>
<p> Returns a mapping with information about the current field, and
 advances the field cursor one step. Returns <expr>0</expr> (zero) if
 there are no more fields.</p>
<p> The mapping contains the same entries as those returned by
 <ref resolved='predef::Mysql.mysql.list_fields'>Mysql.mysql-&gt;list_fields()</ref>, except that the entry <expr>"default"</expr>
 is missing.</p>
</text><group><note/><text><p>This function is usually not enabled. To enable it
   <tt>SUPPORT_FIELD_SEEK</tt> must be defined when compiling
   the mysql-module.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.fetch_fields'>fetch_fields()</ref>, <ref resolved='predef::Mysql.mysql_result.field_seek'>field_seek()</ref>, <ref resolved='predef::Mysql.mysql.list_fields'>Mysql.mysql-&gt;list_fields()</ref></p>
</text></group></doc>
<method name='fetch_field'>
<arguments/>
<returntype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_fields' homogen-type='method'><doc><text><p>Get specification of all remaining fields.</p>
<p> Returns an array with one mapping for every remaining field in the
 result table.</p>
<p> The returned data is similar to the data returned by
 <ref resolved='predef::Mysql.mysql.list_fields'>Mysql.mysql-&gt;list_fields()</ref>, except for that the entry
 <expr>"default"</expr> is missing.</p>
</text><group><note/><text><p>Resets the field cursor to <expr>0</expr> (zero).</p>
<p>   This function always exists even when <ref resolved='predef::Mysql.mysql_result.fetch_field'>fetch_field()</ref> and
   <ref resolved='predef::Mysql.mysql_result.field_seek'>field_seek()</ref> don't.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.fetch_field'>fetch_field()</ref>, <ref resolved='predef::Mysql.mysql_result.field_seek'>field_seek()</ref>, <ref resolved='predef::Mysql.mysql.list_fields'>Mysql.mysql-&gt;list_fields()</ref></p>
</text></group></doc>
<method name='fetch_fields'>
<arguments/>
<returntype><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='seek' homogen-type='method'><doc><text><p>Skip ahead <ref resolved='predef::Mysql.mysql_result.seek.rows'>rows</ref> rows.</p>
</text><group><note/><text><p>Can only seek forward.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.fetch_row'>fetch_row()</ref></p>
</text></group></doc>
<method name='seek'>
<arguments><argument name='rows'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='fetch_row' homogen-type='method'><doc><text><p>Fetch the next row from the result.</p>
<p> Returns an array with the contents of the next row in the result.
 Advances the row cursor to the next now.</p>
<p> Returns <expr>0</expr> (zero) at the end of the table.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result.seek'>seek()</ref></p>
</text></group></doc>
<method name='fetch_row'>
<arguments/>
<returntype><or><int/><array><valuetype><string/></valuetype></array></or></returntype>
</method>
</docgroup>
</class><doc><text><p>This module enables access to the Mysql database from within Pike.
 Use <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> for general database access.</p>
<p> Mysql is available from <url>http://www.mysql.com</url>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql'>Mysql.mysql</ref>, <ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref></p>
</text></group></doc>

<class name='mysql'><doc><text><p>Interface to the Mysql database.</p>
<p> This class enables access to the Mysql database from within Pike.</p>
<p> Mysql is available from <url>http://www.mysql.com</url>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref></p>
</text></group></doc><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Connect to a Mysql database.</p>
<p> To access the Mysql database, you must first connect to it. This is
 done with this function.</p>
</text><group><param name='host'/><text><p>If you give no argument, or give <expr>""</expr> as <ref resolved='predef::Mysql.mysql.create.host'>host</ref> it will connect
   with a UNIX-domain socket, which can be a big performance gain.</p>
</text></group><group><param name='options'/><text><p>This optional mapping can contain zero or more of the following
   parameters:</p>
<mapping><group><member><type><string/></type><index>"init_command"</index></member><text><p>Command to execute on connect.</p>
</text></group><group><member><type><int/></type><index>"timeout"</index></member><text><p>Timeout in seconds.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"compress"</index></member><text><p>Enable compressed protocol.</p>
</text></group><group><member><type><string/></type><index>"mysql_config_file"</index></member><text><p>Change config file from <expr>"my.cnf"</expr>.</p>
</text></group><group><member><type><string/></type><index>"mysql_group"</index></member><text><p>Specify additional group to read from config file.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"mysql_named_pipe"</index></member><text><p>Use named pipe to connect to server.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"mysql_local_infile"</index></member><text><p>Enable use of LOCAL INFILE (security).</p>
</text></group><group><member><type><string/></type><index>"mysql_charset_dir"</index></member><text><p>Change charset directory.</p>
</text></group><group><member><type><string/></type><index>"mysql_charset_name"</index></member><text><p>Set connection charset - see <ref>set_charset</ref> for details. The
       default is <expr>"latin1"</expr>. As opposed to <ref>set_charset</ref>,
       this way of specifying the connection charset doesn't
       require MySQL 4.1.0.</p>
</text></group><group><member><type><int/></type><index>"unicode_decode_mode"</index></member><text><p>Enable unicode decode mode for the connection if nonzero. In
       this mode non-binary string results are automatically
       converted to (possibly wide) unicode strings. An error is
       thrown if the server doesn't support this. See
       <ref>set_unicode_decode_mode</ref>.</p>
</text></group><group><member><type><string/></type><index>"ssl_key"</index></member><text><p>Path to SSL-key for use in SSL-communication.</p>
</text></group><group><member><type><string/></type><index>"ssl_cert"</index></member><text><p>Path to SSL-cert for use in SSL-communication.</p>
</text></group><group><member><type><string/></type><index>"ssl_ca"</index></member><text><p>Path to SSL-CA for use in SSL-communication.</p>
</text></group><group><member><type><string/></type><index>"ssl_capath"</index></member><text><p>Path to SSL-CAPATH for use in SSL-communication.</p>
</text></group><group><member><type><string/></type><index>"ssl_cipher"</index></member><text><p>FIXME</p>
</text></group><group><member><type><int/></type><index>"connect_options"</index></member><text><p>Options used when connecting to the server. See mysql documentation
       for more information.</p>
</text></group></mapping>
</text></group><group><note/><text><p>Some options may not be implemented. Unimplemented options are
   silently ignored.</p>
</text></group><group><note/><text><p>To use SSL-connections, set the SSL-parameters correctly. They correspond
   to the parameters given to the mysql-client with the same name so make
   sure that the mysql-client works with SSL and set these parameters to
   the same values and everything should work. If SSL-options are loaded
   from a config-file, one may set the connect_options to include
   CLIENT_SSL.</p>
</text></group><group><note/><text><p>If Pike has been built with an old MySQL client lib then it
   might not be possible to specify some charsets that the server
   supports with the <expr>"mysql_charset_name"</expr> option. In such
   cases it's possible that <ref>set_charset</ref> works better (provided
   the server is 4.1 or newer).</p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><string/></type></argument><argument name='user'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><string/></type></argument><argument name='user'><type><string/></type></argument><argument name='password'><type><string/></type></argument><argument name='options'><type><mapping><indextype><string/></indextype><valuetype><or><string/><int/></or></valuetype></mapping></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_sprintf' homogen-type='method'><doc/>
<method name='_sprintf'>
<arguments><argument name='type'><type><int/></type></argument><argument name='flags'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='affected_rows' homogen-type='method'><doc><text><p>Returns the number of rows affected by the last query.</p>
</text></doc>
<method name='affected_rows'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='insert_id' homogen-type='method'><doc><text><p>Returns the id of the last INSERT query into a table with
 an AUTO INCREMENT field.</p>
</text></doc>
<method name='insert_id'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='error' homogen-type='method'><doc><text><p>Returns a string describing the last error from the Mysql-server.</p>
<p> Returns <expr>0</expr> (zero) if there was no error.</p>
</text></doc>
<method name='error'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='select_db' homogen-type='method'><doc><text><p>Select database.</p>
<p> The Mysql-server can hold several databases. You select which one
 you want to access with this function.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.create'>create()</ref>, <ref resolved='predef::Mysql.mysql.create_db'>create_db()</ref>, <ref resolved='predef::Mysql.mysql.drop_db'>drop_db()</ref></p>
</text></group></doc>
<method name='select_db'>
<arguments><argument name='database'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='create_db' homogen-type='method'><doc><text><p>Create a new database</p>
<p> This function creates a new database named <ref resolved='predef::Mysql.mysql.create_db.database'>database</ref>
 in the Mysql-server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.select_db'>select_db()</ref>, <ref resolved='predef::Mysql.mysql.drop_db'>drop_db()</ref></p>
</text></group></doc>
<method name='create_db'>
<arguments><argument name='database'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='drop_db' homogen-type='method'><doc><text><p>Drop a database</p>
<p> This function drops the database named <ref resolved='predef::Mysql.mysql.drop_db.database'>database</ref> from the Mysql-server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.create_db'>create_db()</ref>, <ref resolved='predef::Mysql.mysql.select_db'>select_db()</ref></p>
</text></group></doc>
<method name='drop_db'>
<arguments><argument name='database'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='shutdown' homogen-type='method'><doc><text><p>Shutdown the Mysql-server</p>
<p> This function shuts down a running Mysql-server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.reload'>reload()</ref></p>
</text></group></doc>
<method name='shutdown'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reload' homogen-type='method'><doc><text><p>Reload security tables</p>
<p> This function causes the Mysql-server to reload its access tables.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.shutdown'>shutdown()</ref></p>
</text></group></doc>
<method name='reload'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='statistics' homogen-type='method'><doc><text><p>Some Mysql-server statistics</p>
<p> This function returns some server statistics.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.server_info'>server_info()</ref>, <ref resolved='predef::Mysql.mysql.host_info'>host_info()</ref>, <ref resolved='predef::Mysql.mysql.protocol_info'>protocol_info()</ref></p>
</text></group></doc>
<method name='statistics'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='server_info' homogen-type='method'><doc><text><p>Get the version number of the Mysql-server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.statistics'>statistics()</ref>, <ref resolved='predef::Mysql.mysql.host_info'>host_info()</ref>, <ref resolved='predef::Mysql.mysql.protocol_info'>protocol_info()</ref></p>
</text></group></doc>
<method name='server_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='host_info' homogen-type='method'><doc><text><p>Get information about the Mysql-server connection</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.statistics'>statistics()</ref>, <ref resolved='predef::Mysql.mysql.server_info'>server_info()</ref>, <ref resolved='predef::Mysql.mysql.protocol_info'>protocol_info()</ref></p>
</text></group></doc>
<method name='host_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='protocol_info' homogen-type='method'><doc><text><p>Give the Mysql protocol version</p>
<p> This function returns the version number of the protocol the
 Mysql-server uses.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.statistics'>statistics()</ref>, <ref resolved='predef::Mysql.mysql.server_info'>server_info()</ref>, <ref resolved='predef::Mysql.mysql.host_info'>host_info()</ref></p>
</text></group></doc>
<method name='protocol_info'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_dbs' homogen-type='method'><doc><text><p>List databases</p>
<p> Returns a table containing the names of all databases in the
 Mysql-server. If the argument <ref resolved='predef::Mysql.mysql.list_dbs.wild'>wild</ref> is specified, only those matching
 it will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.list_tables'>list_tables()</ref>, <ref resolved='predef::Mysql.mysql.list_fields'>list_fields()</ref>, <ref resolved='predef::Mysql.mysql.list_processes'>list_processes()</ref>,
   <ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref></p>
</text></group></doc>
<method name='list_dbs'>
<arguments/>
<returntype><object resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</object></returntype>
</method>
<method name='list_dbs'>
<arguments><argument name='wild'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_tables' homogen-type='method'><doc><text><p>List tables in the current database</p>
<p> Returns a table containing the names of all tables in the current
 database. If the argument <ref resolved='predef::Mysql.mysql.list_tables.wild'>wild</ref> is given, only those matching it
 will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.list_dbs'>list_dbs()</ref>, <ref resolved='predef::Mysql.mysql.list_fields'>list_fields()</ref>, <ref resolved='predef::Mysql.mysql.list_processes'>list_processes()</ref>,
   <ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref></p>
</text></group></doc>
<method name='list_tables'>
<arguments/>
<returntype><object resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</object></returntype>
</method>
<method name='list_tables'>
<arguments><argument name='wild'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_fields' homogen-type='method'><doc><text><p>List all fields.</p>
<p> Returns an array of mappings with information about the fields in the
 table named <ref resolved='predef::Mysql.mysql.list_fields.table'>table</ref>. If the argument <ref resolved='predef::Mysql.mysql.list_fields.wild'>wild</ref> is given, only those
 fields matching it will be returned</p>
<p> The mappings contain the following entries:</p>
<mapping><group><member><type><string/></type><index>"name"</index></member><text><p>The name of the field.</p>
</text></group><group><member><type><string/></type><index>"table"</index></member><text><p>The name of the table.</p>
</text></group><group><member><type><string/></type><index>"default"</index></member><text><p>The default value for the field.</p>
</text></group><group><member><type><string/></type><index>"type"</index></member><text><p>The SQL type of the field.</p>
</text></group><group><member><type><int/></type><index>"length"</index></member><text><p>The length of the field.</p>
</text></group><group><member><type><int/></type><index>"max_length"</index></member><text><p>The length of the longest element in this field.</p>
</text></group><group><member><type><multiset><indextype><string/></indextype></multiset></type><index>"flags"</index></member><text><p>Some flags.</p>
</text></group><group><member><type><int/></type><index>decimals</index></member><text><p>The number of decimalplaces.</p>
</text></group></mapping><p>The type of the field can be any of:
   <expr>"decimal"</expr>, <expr>"char"</expr>, <expr>"short"</expr>, <expr>"long"</expr>,
   <expr>"float"</expr>, <expr>"double"</expr>, <expr>"null"</expr>, <expr>"time"</expr>,
   <expr>"longlong"</expr>, <expr>"int24"</expr>, <expr>"tiny blob"</expr>,
   <expr>"medium blob"</expr>,
   <expr>"long blob"</expr>, <expr>"var string"</expr>, <expr>"string"</expr> or
   <expr>"unknown"</expr>.</p>
<p> The flags multiset can contain any of:</p>
<multiset><group><index><value>"primary_key"</value></index><text><p>This field is part of the primary key for this table.</p>
</text></group><group><index><value>"not_null"</value></index><text><p>This field may not be NULL.</p>
</text></group><group><index><value>"blob"</value></index><text><p>This field is a blob field.</p>
</text></group></multiset>
</text><group><note/><text><p>Michael Widenius recomends use of the following query instead:
   <tt>show fields in 'table' like "wild"</tt>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.list_dbs'>list_dbs()</ref>, <ref resolved='predef::Mysql.mysql.list_tables'>list_tables()</ref>, <ref resolved='predef::Mysql.mysql.list_processes'>list_processes()</ref>,
   <ref resolved='predef::Mysql.mysql_result.fetch_field'>Mysql.mysql_result.fetch_field()</ref></p>
</text></group></doc>
<method name='list_fields'>
<arguments><argument name='table'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></returntype>
</method>
<method name='list_fields'>
<arguments><argument name='table'><type><string/></type></argument><argument name='wild'><type><string/></type></argument></arguments>
<returntype><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='list_processes' homogen-type='method'><doc><text><p>List all processes in the Mysql-server</p>
<p> Returns a table containing the names of all processes in the
 Mysql-server.</p>
</text><group><seealso/><text><p><ref resolved='predef::Mysql.mysql.list_dbs'>list_dbs()</ref>, <ref resolved='predef::Mysql.mysql.list_tables'>list_tables()</ref>, <ref resolved='predef::Mysql.mysql.list_fields'>list_fields()</ref>, <ref resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</ref></p>
</text></group></doc>
<method name='list_processes'>
<arguments/>
<returntype><object resolved='predef::Mysql.mysql_result'>Mysql.mysql_result</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='binary_data' homogen-type='method'><doc><text><p>Inform if this version of <ref resolved='predef::Mysql.mysql'>Mysql.mysql</ref> supports binary data</p>
<p> This function returns non-zero if binary data can be reliably stored
 and retreived with this version of the mysql-module.</p>
<p> Usually, there is no problem storing binary data in mysql-tables,
 but data containing <expr>'\0'</expr> (NUL) couldn't be fetched with old
 versions (prior to 3.20.5) of the mysql-library.</p>
</text></doc>
<method name='binary_data'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
</class></module>



<module name='Mird'>

<class name='Mird'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='9'/><doc><text><p>The Mird module doubles as the Mird database class.</p>
</text></doc>

<class name='Table'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='305'/><doc><text><p>A Mird table has approximately the same
	characteristics as a Pike mapping. You 
	store key:value pairs in it, you get values from keys,
	you delete keys.</p>
<p>	For convinience, the Table object overloads <expr>`[]()</expr>,
	<expr>`[]=()</expr>, <expr>_indices()</expr> and <expr>_values()</expr>.</p>
</text></doc><docgroup homogen-name='create' homogen-type='method'><doc/>
<method name='create'>
<arguments><argument name='parent'><type><object resolved='predef::Mird.Mird.Table.create'/></type></argument><argument name='table_id'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='scanner' homogen-type='method'><doc><text><p>Creates a scanner over the called table;
	if <ref resolved='predef::Mird.Mird.Table.scanner.key'>key</ref> is given, continue at that key
	(as returned from <ref resolved='predef::Mird.Glue.Scanner.next_key'>Mird.Glue.Scanner.next_key()</ref>).</p>
<p>	A scanner can be used to loop over all elements in a table.</p>
</text></doc>
<method name='scanner'>
<arguments/>
<returntype><object resolved='predef::Mird.Glue.Scanner'>Mird.Glue.Scanner</object></returntype>
</method>
<method name='scanner'>
<arguments><argument name='key'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Glue.Scanner'>Mird.Glue.Scanner</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Get and store key:value pairs, list the table.</p>
</text><group><note/><text><p>All storage in the table will create a transaction,
	if we're not already in a transaction.</p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='key'><type><or><int/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='key'><type><or><int/><string/></or></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='_indices'>
<arguments/>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
<method name='_values'>
<arguments/>
<returntype><array><valuetype><or><int/><string/></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='cast' homogen-type='method'><doc><text><p>It is possible to cast the Table to a mapping
	or array; this will read all contents of the table,
	so beware if you have a big table.</p>
</text></doc>
<method name='cast'>
<arguments><argument><value>"mapping"</value></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='cast'>
<arguments><argument><value>"array"</value></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</class>

<class name='vTable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='461'/><doc><text><p>A <ref resolved='predef::Mird.Mird.vTable'>vTable</ref> is just like a <ref resolved='predef::Mird.Mird.Table'>Table</ref>, except that the
     values can be anything, not just strings. The
     data is <ref resolved='predef::encode_value'>encode_value()</ref>'ed before storage.</p>
</text></doc><docgroup homogen-name='v0Table' homogen-type='inherit'><doc><text><p>inherits Table</p>
</text></doc>
<inherit name='v0Table'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='464'/><classname>v0Table</classname></inherit>
</docgroup>
</class>

<class name='vzTable'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='481'/><doc><text><p>This is just like a normal table, but all data is encode_value()ed,
     and gzipped, and unpacked if reading, for convinience. Only
     available when Pike supports Gz.</p>
</text></doc><docgroup homogen-name='v0Table' homogen-type='inherit'><doc><text><p>inherits Table</p>
</text></doc>
<inherit name='v0Table'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='484'/><classname>v0Table</classname></inherit>
</docgroup>
</class>

<class name='Transaction'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='508'/><doc><text><p>A Transaction is the environment which in a change
	to the database can be made. Simplified, the database
	is not changed until the transaction is closed. More 
	then one change to the database can be performed within
	one transaction.</p>
<p>	If the same entries in the database were changed during
	the lifespan of the transaction, it cannot be closed but
	has to be cancelled.</p>
</text></doc><docgroup homogen-type='method'><doc><text><p>Creates a <ref resolved='predef::Mird.Mird.Table'>Table</ref>, <ref resolved='predef::Mird.Mird.vTable'>vTable</ref> or <ref resolved='predef::Mird.Mird.vzTable'>vzTable</ref>
	object for the specified table,
	which emulates a mapping and in which
	you can make changes to the database or
	do lookups.</p>
</text></doc>
<method name='table'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
<method name='vtable'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.vTable'>vTable</object></returntype>
</method>
<method name='vztable'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.vzTable'>vzTable</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Creates a new table in the database.
	A stringkey table is a mapping from string to string,
	and a hashkey table is mapping from int to string.</p>
</text></doc>
<method name='new_stringkey_table'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
<method name='new_hashkey_table'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='delete_table' homogen-type='method'><doc><text><p>Removes a table and all items in it</p>
</text></doc>
<method name='delete_table'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='611'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='tables' homogen-type='method'><doc><text><p>Returns the names of the tables in the database.</p>
</text></doc>
<method name='tables'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='632'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='close' homogen-type='method'><doc><text><p>Finishes a transaction. This throws exceptions
	if there were conflicts.</p>
</text></doc>
<method name='close'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='640'/>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Cancels (rewinds) a transaction.</p>
</text></doc>
<method name='cancel'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='destroy'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<class name='cTransaction'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='664'/><doc><text><p>Caching transaction</p>
</text></doc><docgroup homogen-name='Transaction' homogen-type='inherit'><doc>
</doc>
<inherit name='Transaction'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='666'/><classname resolved='predef::Mird.Mird.Transaction'>Transaction</classname></inherit>
</docgroup>
</class><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Opens the database using the given filename. Note that
	the file <tt><ref resolved='predef::Mird.Mird.create.filename'>filename</ref>+".journal"</tt> will be created too.</p>
<p>	Possible options:</p>
<mapping><group><member><type><string/></type><index>"flags"</index></member><text><p>Database flags, see below.</p>
</text></group><group><member><type><int/></type><index>"block_size"</index></member><text><p>Database block size; must be even 2^n.
           Database size is limited to 2^32 blocks, ie block_size*2^32 
           (8192*2^(32-5) is approximately 1Tb)
           (2048)</p>
</text></group><group><member><type><int/></type><index>"frag_bits"</index></member><text><p>This sets the number of fragments in a fragmented block,
           and address bits to locate them.
           The number of fragments in a fragmented block is equal
           to 2^frag_bits-1, by default 2^5-1=32-1=31.</p>
<p>           This steals bits from the 32 bit address used to point out
           a chunk.
           (5)</p>
</text></group><group><member><type><int/></type><index>"hashtrie_bits"</index></member><text><p>This is the number of bits in each hash-trie hash; 
           4*2^n must be a lot less than block_size.
           (5)</p>
</text></group><group><member><type><int/></type><index>"cache_size"</index></member><text><p>This is the number of blocks cached from the database;
           this is used for both the read- and the write cache.
           Note that the memory usage is constant,
           approximately block_size*cache_size bytes.
           (32)</p>
</text></group><group><member><type><int/></type><index>"cache_search_length"</index></member><text><p>This is the closed hash maximum search length to find
           a block in the cache; note that this will result in 
           linear time usage.
           (8)</p>
</text></group><group><member><type><int/></type><index>"max_free_frag_blocks"</index></member><text><p>This is how many blocks with free space that is 
           kept in a list to be used when a transaction
           is running. The closest fit of usage of these blocks are
           where the data will be stored.
           (10)</p>
</text></group><group><member><type><int/></type><index>"file_mode"</index></member><text><p>This is the default mode the files are opened with;
           although affected by UMASK
           (0666)</p>
</text></group><group><member><type><int/></type><index>"journal_readback_n"</index></member><text><p>This is how many journal entries are read back
           at once at transaction finish, cancel or copy time.
           Bytes needed is approximately 24*this number
           (200)</p>
</text></group></mapping><p><expr>"flags"</expr> is a string with any of these characters:</p>
<string><group><value>'r'</value><text><p>Readonly.</p>
</text></group><group><value>'R'</value><text><p>Readonly in a live system (one process writes, many reads).</p>
</text></group><group><value>'n'</value><text><p>Don't create if it doesn't exist.</p>
</text></group><group><value>'x'</value><text><p>Exclusive (always create).</p>
</text></group><group><value>'s'</value><text><p>Call fsync(3) when finishing transactions.</p>
</text></group><group><value>'S'</value><text><p>Call sync(2) after fsync(3).</p>
</text></group><group><value>'j'</value><text><p>Complain if journal file is gone missing.</p>
</text></group></string>
</text></doc>
<method name='create'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='107'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='options'><type><or><void/><mapping/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='table' homogen-type='method'><doc><text><p>Gives back the table object for the specified table
	in the database.</p>
</text></doc>
<method name='table'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='145'/>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='vtable' homogen-type='method'><doc><text><p>A vTable is just like a <ref resolved='predef::Mird.Mird.Table'>Table</ref>, except that the
     values can be anything, not just strings. The
     data is <ref resolved='predef::encode_value'>encode_value()</ref>'ed before storage.</p>
<p> 	A vzTable is just like a <ref resolved='predef::Mird.Mird.vTable'>vTable</ref>, except that the
     values are both encoded and then packed using Gz.
     Only available if Pike supports Gz.</p>
</text></doc>
<method name='vtable'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.vTable'>vTable</object></returntype>
</method>
<method name='vtable'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.vzTable'>vzTable</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='table_name' homogen-type='method'><doc><text><p>Returns the name of the table with id <ref resolved='predef::Mird.Mird.table_name.id'>id</ref>.</p>
</text></doc>
<method name='table_name'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='195'/>
<arguments><argument name='id'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Create a new table in the database.</p>
</text><group><note/><text><p>A transaction will be created when
	calling these on the Database level.</p>
</text></group></doc>
<method name='new_stringkey_table'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
<method name='new_hashkey_table'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.Table'>Table</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='transaction' homogen-type='method'><doc><text><p>Creates a new transaction</p>
</text></doc>
<method name='transaction'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='234'/>
<arguments/>
<returntype><object resolved='predef::Mird.Mird.Transaction'>Transaction</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='tables' homogen-type='method'><doc><text><p>Gives a list of all tables in the database.</p>
</text></doc>
<method name='tables'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/module.pmod.in' first-line='245'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Syncs the database (syncs against disc and 
	starts to reuse any space that is freed),
	sync_please() does this when the last living
	transaction is finished.</p>
</text></doc>
<method name='sync'>
<arguments/>
<returntype><object resolved='predef::Mird.Mird.sync'/></returntype>
</method>
<method name='sync_please'>
<arguments/>
<returntype><object resolved='predef::Mird.Mird.sync'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='sync_loop' homogen-type='method'><doc><text><p>Starts a call_out loop that will call sync_please
	once every given interval. 0 or fewer seconds will
	shut down the loop.
	Default is 1 minute (60 seconds).</p>
</text></doc>
<method name='sync_loop'>
<arguments><argument name='seconds'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Mird.Mird.sync_loop'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Syncs and closes the database</p>
</text></doc>
<method name='close'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='destroy'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
</class>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='140'/>
<module name='Glue'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='141'/>
<class name='Mird'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='142'/>
<docgroup homogen-type='method'>
<method name='close'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='destroy'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='316'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='316'/>
<p>This closes the database, ie
<ol>
<group><item/><text><p>cancels all ongoing transactions</p></text></group>
<group><item/><text><p>syncs the database (flushes caches,
and frees all unused blocks)</p></text></group>
<group><item/><text><p>destroys the database object</p></text></group>
</ol>
Call this or destroy the database object
when you want the database closed.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='create'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='filename'><type><string/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='filename'><type><string/></type></argument>
<argument name='options'><type><mapping/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='143'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='143'/>
<p><mapping>
 
 
<group>
<member><type><string/></type><index>"flags"</index></member>
<text><p>database flags, see below</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"block_size"</index></member>
<text><p>
      database block size; must be even 2^n
      database size is limited to 2^32 blocks, ie block_size*2^32
      (8192*2^(32-5) is approximately 1Tb)
      (2048)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"frag_bits"</index></member>
<text><p>
      this sets the number of frags in a fragmented block,
      and address bits to locate them.
      the number of frags in a fragmented block is equal
      to 2^frag_bits-1, per default 2^5-1=32-1=31
 
      This steals bits from the 32 bit address used to point out
      a chunk.
      (5)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"hashtrie_bits"</index></member>
<text><p>
      this is the number of bits in each hash-trie hash;
      4*2^n must be a lot less then block_size
      (5)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"cache_size"</index></member>
<text><p>
      this is the number of blocks cached from the database;
      this is used for both read- and write cache.
      Note that the memory usage is constant,
      approximately block_size*cache_size bytes.
      (32)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"cache_search_length"</index></member>
<text><p>
      this is the closed hash maximum search length to find
      a block in the cache; note that this will result in
      linear time usage.
      (8)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"max_free_frag_blocks"</index></member>
<text><p>
      this is how many blocks with free space that is
      kept in a list to be used when a transaction
      is running. The closest fit of usage of these blocks are
      where the data will be stored.
      (10)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"file_mode"</index></member>
<text><p>
      this is the default mode the files are opened with;
      although affected by UMASK
      (0666)
</p></text>
</group>
 
 
<group>
<member><type><int/></type><index>"journal_readback_n"</index></member>
<text><p>
      this is how many journal entries are read back
      at once at transaction finish, cancel or copy time
      bytes needed is approximately 24*this number
      (200)
</p></text>
</group>
 
</mapping>
 </p>

<p><pre>flags is a string with any of these characters:
"r" - readonly
"R" - readonly in a live system (one process writes, many reads)
"n" - don't create if it doesn't exist
"x" - exclusive (always create)
"s" - call fsync when finishing transactions
"S" - call sync(2) after fsync
"j" - complain if journal file is gone missing
</pre>
</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='fetch'>
<method name='fetch'>
   <returntype>
        <or>
          <object>zero</object><string/></or></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='key'><type>
   <or><int/><string/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='407'/>
<doc>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='407'/>
<p>the data value or zero_type if key wasn't found</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='first_unused_key'>
   <returntype><int/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><method name='first_unused_key'>
   <returntype><int/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='start_key'><type><int/></type></argument>

   </arguments>
</method><method name='first_unused_table'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='first_unused_table'>
   <returntype><int/></returntype>
   <arguments><argument name='start_table_id'><type><int/></type></argument>

   </arguments>
</method><method name='_debug_cut'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='468'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='468'/>
<p>This closes the database without
flushing or syncing. This should never be used and
exist only for testing purposes.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='sync'>
   <returntype><object resolved='predef::Mird.Glue.Mird.sync'/></returntype>
   <arguments>
   </arguments>
</method><method name='sync_please'>
   <returntype><object resolved='predef::Mird.Glue.Mird.sync'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='350'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='350'/>
<p>Syncs the database; this flushes all
eventual caches and frees all unused blocks.</p>

<p>sync() can only be called when there is no
ongoing transactions. sync_please() sets
a marker that the database should be synced
when the last transaction is finished or cancelled,
which will eventually sync the database.</p>

<p>The usage could be in a call_out-loop,
<pre>
   [...]
   call_out(sync_the_database,5*60);
   [...]
void sync_the_database()
{
   call_out(sync_please,5*60);
   my_mird-&gt;sync_please();
}
</pre>
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='350'/>
<p>the object being called</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_debug_check_free'>
<method name='_debug_check_free'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='_debug_check_free'>
   <returntype><void/></returntype>
   <arguments><argument name='silent'><type>
   <int><min>0</min><max>1</max></int></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='544'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='544'/>
<p>this syncs the database and verifies
the database free list. It prints stuff
on stderr. It exists only for debug
purpose and has no other use.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='_debug_syscalls'>
<method name='_debug_syscalls'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='568'/>
<doc>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='568'/>
<p>the number of syscalls the database has done so far</p>
</text></group>

</doc>
</docgroup>

</class>

<class name='Transaction'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='624'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='624'/>
<p>A transaction object is enclosing a change in the database.
It can either succeed in full or fail in full.
If some other transaction has changed the same data as
the current, the transaction closed last will fail (conflict).
</p>
</text>

</doc>
<docgroup homogen-type='method'>
<method name='cancel'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><method name='destroy'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='696'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='696'/>
<p>cancels (rewinds) a transaction</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='close'>
<method name='close'>
   <returntype><void/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='664'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='664'/>
<p>closes a transaction; may cast exceptions
if there are conflicts</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='create'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='parent'><type>
   <object resolved='predef::Mird.Glue.Mird'>Mird</object></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='630'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='630'/>
<p>Creates a new transaction within the given database.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='store'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.store'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='key'><type>
   <or><int/><string/></or></type></argument>
<argument name='data'><type><string/></type></argument>

   </arguments>
</method><method name='delete'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.store'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='key'><type>
   <or><int/><string/></or></type></argument>

   </arguments>
</method><method name='fetch'>
   <returntype>
        <or>
          <object>zero</object><string/></or></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='key'><type>
   <or><int/><string/></or></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='778'/>
<doc>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='778'/>
<p>the data value or zero_type if key wasn't found</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='delete_table'>
<method name='delete_table'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.delete_table'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1002'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1002'/>
<p>delets a table from the database</p>
</text>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1002'/>
<p>this can take some time, depending on how
much data that is in that table</p>
</text></group>

</doc>
</docgroup>

<docgroup homogen-type='method'>
<method name='depend_table'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.depend_table'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><method name='first_unused_key'>
   <returntype><int/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><method name='first_unused_key'>
   <returntype><int/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>
<argument name='start_key'><type><int/></type></argument>

   </arguments>
</method><method name='first_unused_table'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><method name='first_unused_table'>
   <returntype><int/></returntype>
   <arguments><argument name='start_table_id'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1032'/>
<doc/></docgroup>

<docgroup homogen-type='method'>
<method name='new_hashkey_table'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.new_hashkey_table'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><method name='new_stringkey_table'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.new_hashkey_table'/></returntype>
   <arguments><argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='946'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='946'/>
<p>creates a table in the database</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='resolve'>
<method name='resolve'>
   <returntype><object resolved='predef::Mird.Glue.Transaction.resolve'/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='748'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='748'/>
<p>Tries to resolve a transaction;
casts an exception if there is a conflict.
May be called more then once.</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='748'/>
<p>the object being called</p>
</text></group>

</doc>
</docgroup>

</class>

<class name='Scanner'>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1155'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1155'/>
<p>Objects of this class is used to read off all
contents of a table in the database.
</p>
</text>

</doc>
<docgroup homogen-type='method' homogen-name='create'>
<method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='database'><type>
   <object resolved='predef::Mird.Glue.Mird'>Mird</object></type></argument>
<argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><method name='create'>
   <returntype><void/></returntype>
   <arguments><argument name='transaction'><type>
   <object resolved='predef::Mird.Glue.Transaction'>Transaction</object></type></argument>
<argument name='table_id'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1159'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1159'/>
<p>Creates a new scanner object, tuned to the
given table and database or transaction.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='next_key'>
<method name='next_key'>
   <returntype><int/></returntype>
   <arguments>
   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1383'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1383'/>
<p>Gives back a possible argument to the constructor
of <ref resolved='predef::Mird.Glue.Scanner'>Scanner</ref>; allows the possibility
to continue to scan even if the Scanner object is lost.</p>
</text>

</doc>
</docgroup>

<docgroup homogen-type='method' homogen-name='read'>
<method name='read'>
   <returntype>
        <or>
          <object>zero</object><mapping><indextype>
              <or><string/><int/></or></indextype>
             <valuetype><string/></valuetype></mapping></or></returntype>
   <arguments><argument name='n'><type><int/></type></argument>

   </arguments>
</method><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1238'/>
<doc>
<text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1238'/>
<p>Reads some tupels from the table the scanner
is directed against; the size of the resulting
mapping is close to this number.
</p>
</text>
<group><returns/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1238'/>
<p>a mapping of the next (about) n tupels in the table, or zero if there is no more tupels in the table</p>
</text></group>
<group><note/><text>
<source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Mird/mird_glue.c' first-line='1238'/>
<p>a buffer directly depending on this size is allocated;
it's not recommended doing a "read(0x7fffffff)".</p>
</text></group>

</doc>
</docgroup>

</class>

</module>

</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>

<class name='Domain'><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>
<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='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-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='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 resolved='predef::time'>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='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>
</class><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>


<class name='Map'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='26'/><doc><text><p>Network Information Service aka YP map.</p>
</text></doc><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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='43'/>
<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-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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='69'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`[]'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='73'/>
<arguments><argument name='key'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Returns the whole map as a mapping.</p>
</text></doc>
<method name='all'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='79'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
<method name='cast_to_mapping'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='83'/>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='95'/>
<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='server' homogen-type='method'><doc><text><p>Return the server that provides this map.</p>
</text></doc>
<method name='server'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='101'/>
<arguments/>
<returntype><string/></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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='107'/>
<arguments/>
<returntype><int/></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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='113'/>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Return the keys of the map.</p>
</text></doc>
<method name='_indices'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='119'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></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'><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='125'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Yp/module.pmod.in' first-line='9'/><classname>"___"</classname></inherit>
</docgroup>
</module>



<module name='Postgres'>

<class name='postgres_result'><doc><text><p>Contains the result of a Postgres-query.</p>
</text><group><seealso/><text><p>Sql.postgres, Postgres.postgres, Sql.Sql, Sql.sql_result</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>You can't create istances of this object yourself.
 The only way to create it is via a big_query to a Postgres
 database.</p>
</text></doc>
<method name='create'>
<arguments><argument name='o'><type><object resolved='predef::Postgres.postgres_result.create'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_rows'><doc><text><p>Returns the number of rows in the result.</p>
</text></doc>
<method name='num_rows'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='num_fields'><doc><text><p>Returns the number of fields in the result.</p>
</text></doc>
<method name='num_fields'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fetch_fields'><doc><text><p>Returns an array with an entry for each field, each entry is
 a mapping with the following fields:</p>
<mapping><group><member><type><string/></type><index>"name"</index></member><text><p>Name of the column</p>
</text></group><group><member><type><int/></type><index>"type"</index></member><text><p>The type ID of the field. This is the database's internal
     representation type ID.</p>
</text></group><group><member><type><or><int/><string/></or></type><index>"length"</index></member><text><p>Can be an integer (the size of the contents in
     bytes) or the word "variable".</p>
</text></group></mapping>
</text><group><note/><text><p>For char() fields, length is to be intended as the MAXIMUM length
 of the field. This is not part of the interface specifications in fact,
 but a driver-choice. In fact char() fields are for Postgres _FIXED_
 length fields, and are space-padded. If CUT_TRAILING_SPACES is defined
 when the driver is compiled (default behavior) it will cut such spaces.</p>
</text></group></doc>
<method name='fetch_fields'>
<arguments/>
<returntype><array><valuetype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='seek'><doc><text><p>Moves the result cursor (ahead or backwards) the specified number of
 rows. Notice that when you fetch a row, the cursor is automatically
 moved forward one slot.</p>
</text></doc>
<method name='seek'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fetch_row'><doc><text><p>Returns an array with the contents of the next row in the result.
 Advances the row cursor to the next row. Returns 0 at end of table.</p>
</text><group><bugs/><text><p>Since there's no generic way to know whether a type is numeric
 or not in Postgres, all results are returned as strings.
 You can typecast them in Pike to get the numeric value.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Postgres.postgres_result.seek'>seek()</ref></p>
</text></group></doc>
<method name='fetch_row'>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
</class>

<class name='postgres'><doc><text><p>This is an interface to the Postgres (Postgres95, pgsql) database server.
 This module may or may not be availible on your Pike, depending
 whether the appropriate include and library files 
 could be found at compile-time. Note that you <b>do not</b>
 need to have a Postgres server running on your host to use this module:
 you can connect to the database over a TCP/IP socket.</p>
<p> Please notice that unless you wish to specifically connect to a Postgres
 server, you'd better use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, which is a server-independent
 sql-server-class. The interfaces to all existing sql-classes
 are consistent. Using <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> ensures that your Pike
 applications will run with any supported SQL server without changing
 a single line of code, at least for most common (and simple) operations.</p>
<p> The program <ref resolved='predef::Postgres.postgres'>Postgres.postgres</ref> provides the <b>raw</b> interface
 to the database. Many functions are <b>not</b> availible
 for this program. Therefore, its use is DEPRECATED.
 It is included in this documentation only for completeness' sake.
 Use <ref resolved='predef::Sql.postgres'>Sql.postgres</ref> instead, or even better <ref resolved='predef::Sql.Sql'>Sql.Sql</ref></p>
</text><group><note/><text><p>There is no testsuite for this module, since to test anything would
 require a working Postgres server. You can try to use the included scripts
 in the "pike/src/modules/Postgres/extras" directory but you'll probably
 have to patch them to reflect your site's settings.</p>
<p> Also note that <b>this module uses blocking I/O</b> I/O to connect to the server.
 Postgres is quite slow, and so you might want to consider this
 particular aspect. It is (at least should be) thread-safe, and so it can be used
 in a multithread environment.</p>
<p> The behavior of the Postgres C API also depends on certain environment variables
 defined in the environment of the pike interpreter.</p>
<string><group><value>"PGHOST"</value><text><p>Sets the name of the default host to connect to. It defaults
 	to "localhost"</p>
</text></group><group><value>"PGOPTIONS"</value><text><p>Sets some extra flags for the frontend-backend connection.
     DO NOT SET unless you're sure of what you're doing.</p>
</text></group><group><value>"PGPORT"</value><text><p>Sets the default port to connect to, otherwise it will use
     compile-time defaults (that is: the time you compiled the postgres
 	library, not the Pike driver).</p>
</text></group><group><value>"PGTTY"</value><text><p>Sets the file to be used for Postgres frontend debugging.
     Do not use, unless you're sure of what you're doing.</p>
</text></group><group><value>"PGDATABASE"</value><text><p>Sets the default database to connect to.</p>
</text></group><group><value>"PGREALM"</value><text><p>Sets the default realm for Kerberos authentication. I never used
   	this, so I can't help you.</p>
</text></group></string><p>Refer to the Postgres documentation for further details.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.postgres'>Sql.postgres</ref>, <ref resolved='predef::Sql.postgres_result'>Sql.postgres_result</ref></p>
</text></group></doc><docgroup homogen-type='variable' homogen-name='version'><doc><text><p>Should you need to report a bug to the author, please submit along with
 the report the driver version number, as returned by this call.</p>
</text></doc>
<variable name='version'><type><string/></type></variable>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc><text><p>With no arguments, this function initializes (reinitializes if a connection
 had been previously set up) a connection to the Postgres backend.
 Since Postgres requires a database to be selected, it will try
 to connect to the default database. The connection may fail however for a 
 variety of reasons, in this case the most likely of all is because
 you don't have enough authority to connect to that database.
 So use of this particular syntax is discouraged.</p>
<p> The host argument allows you to connect to databases residing on different
 hosts. If it is 0 or "", it will try to connect to localhost.</p>
<p> The database argument specifies the database to connect to. If 0 or "", it
 will try to connect to the default database.</p>
</text><group><note/><text><p>You need to have a database selected before using the sql-object, 
 otherwise you'll get exceptions when you try to query it.
 Also notice that this function <b>can</b> raise exceptions if the db
 server doesn't respond, if the database doesn't exist or is not accessible
 by you.</p>
<p> You don't need bothering about syncronizing the connection to the database:
 it is automatically closed (and the database is sync-ed) when the
 object is destroyed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.postgres'>Sql.postgres</ref>, <ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Postgres.postgres.select_db'>select_db</ref></p>
</text></group></doc>
<method name='create'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='create'>
<arguments><argument name='host'><type><string/></type></argument><argument name='database'><type><or><void/><string/></or></type></argument><argument name='port'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='select_db'><doc><text><p>This function allows you to connect to a database. Due to restrictions
 of the Postgres frontend-backend protocol, you always have to be connected
 to a database, so in fact this function just allows you to connect
 to a different database on the same server.</p>
</text><group><note/><text><p>This function <b>can</b> raise exceptions if something goes wrong (backend process
 not running, not enough permissions..)</p>
</text></group><group><seealso/><text><p>create</p>
</text></group></doc>
<method name='select_db'>
<arguments><argument name='dbname'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='big_query'><doc><text><p>This is the only provided interface which allows you to query the
 database. If you wish to use the simpler "query" function, you need to
 use the <ref resolved='predef::Sql.Sql'>Sql.Sql</ref> generic sql-object.</p>
<p> It returns a postgres_result object (which conforms to the <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref>
 standard interface for accessing data). I recommend using query() for
 simpler queries (because it is easier to handle, but stores all the result
 in memory), and big_query for queries you expect to return huge amounts
 of data (it's harder to handle, but fectches results on demand).</p>
</text><group><note/><text><p>This function <b>can</b> raise exceptions.</p>
<p> The program <ref resolved='predef::Sql.postgres_result'>Sql.postgres_result</ref> is exactly
 the same as <ref resolved='predef::Postgres.postgres_result'>Postgres.postgres_result</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Sql.Sql'>Sql.Sql</ref>, <ref resolved='predef::Sql.sql_result'>Sql.sql_result</ref></p>
</text></group></doc>
<method name='big_query'>
<arguments><argument name='sqlquery'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Sql.postgres_result'>Sql.postgres_result</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='error'><doc><text><p>This function returns the textual description of the last server-related
 error. Returns 0 if no error has occurred yet. It is not cleared upon
 reading (can be invoked multiple times, will return the same result
 until a new error occurs).</p>
</text><group><seealso/><text><p>big_query</p>
</text></group></doc>
<method name='error'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='reset'><doc><text><p>This function resets the connection to the backend. Can be used for
 a variety of reasons, for example to detect the status of a connection.</p>
</text><group><note/><text><p>This function is Postgres-specific, and thus it is not availible
 through the generic SQL-interface.</p>
</text></group></doc>
<method name='reset'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_set_notify_callback'><doc><text><p>With Postgres you can associate events and notifications to tables.
 This function allows you to detect and handle such events.</p>
<p> With no arguments, resets and removes any callback you might have
 put previously, and any polling cycle.</p>
<p> With one argument, sets the notification callback (there can be only
 one for each sqlobject). </p>
<p> The callback function must return no value, and takes a string argument,
 which will be the name of the table on which the notification event
 has occured. In future versions, support for user-specified arguments
 will be added.</p>
</text><group><note/><text><p>The <ref resolved='predef::Sql.postgres'>Sql.postgres</ref> program adds support for automatic delivery of
 messages (see it for explanation on the inner workings of this feature).</p>
<p> This function is Postgres-specific, and thus it is not availible
 through the generic SQL-interface</p>
</text></group><group><seealso/><text><p>Sql.postgres</p>
</text></group></doc>
<method name='_set_notify_callback'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='_set_notify_callback'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='host_info'><doc><text><p>This function returns a string describing what host are we talking to,
 and how (TCP/IP or UNIX sockets).</p>
</text></doc>
<method name='host_info'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_quote'><doc><text><p>Escape a string to prevent SQL injection, using the current connection's
 character encoding settings.</p>
</text></doc>
<method name='_quote'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class></module>



<module name='Java'><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/><classname>"___"</classname></inherit>
</docgroup>
<docgroup homogen-type='method' homogen-name='JString'><doc/>
<method name='JString'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='JBoolean'><doc/>
<method name='JBoolean'><source-position first-line='67' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='JInteger'><doc/>
<method name='JInteger'><source-position first-line='76' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='JFloat'><doc/>
<method name='JFloat'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='f'><type><float/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='JHashMap'><doc/>
<method name='JHashMap'><source-position first-line='88' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='m'><type><mapping/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='JArray'><doc/>
<method name='JArray'><source-position first-line='126' file='/home/peter/hack/Pike/7.6-distmaker/src/modules/Java/module.pmod.in'/>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><object>jobject</object></returntype>
</method>
</docgroup>
</module><docgroup homogen-type='method' homogen-name='sprintf'><doc><text><p>Print formated output to string.</p>
<p>   The <ref resolved='predef::sprintf.format'>format</ref> string is a string containing a description of how to
   output the data in <ref resolved='predef::sprintf.args'>args</ref>. This string should generally speaking
   have one <tt>%<i>&lt;modifiers&gt;</i><i>&lt;operator&gt;</i></tt> format specifier
   (examples: <tt>%s</tt>, <tt>%0d</tt>, <tt>%-=20s</tt>) for each of the arguments.</p>
<p>   The following modifiers are supported:</p>
<int><group><value>'0'</value><text><p>Zero pad numbers (implies right justification).</p>
</text></group><group><value>'!'</value><text><p>Toggle truncation.</p>
</text></group><group><value>' '</value><text><p>Pad positive integers with a space.</p>
</text></group><group><value>'+'</value><text><p>Pad positive integers with a plus sign.</p>
</text></group><group><value>'-'</value><text><p>Left adjust within field size (default is right).</p>
</text></group><group><value>'|'</value><text><p>Centered within field size.</p>
</text></group><group><value>'='</value><text><p>Column mode if strings are greater than field size.</p>
</text></group><group><value>'/'</value><text><p>Rough line break (break at exactly field size instead of between
       words).</p>
</text></group><group><value>'#'</value><text><p>Table mode, print a list of '\n' separated word (top-to-bottom
       order).</p>
</text></group><group><value>'$'</value><text><p>Inverse table mode (left-to-right order).</p>
</text></group><group><value>'n'</value><text><p>(Where n is a number or *) field size specifier.</p>
</text></group><group><value>'.n'</value><text><p>Precision specifier.</p>
</text></group><group><value>':n'</value><text><p>Field size precision specifier.</p>
</text></group><group><value>';n'</value><text><p>Column width specifier.</p>
</text></group><group><value>'*'</value><text><p>If n is a * then next argument is used for precision/field size.</p>
</text></group><group><value>"'"</value><text><p>Set a pad string. <tt>'</tt> cannot be a part of the pad string (yet).</p>
</text></group><group><value>'~'</value><text><p>Get pad string from argument list.</p>
</text></group><group><value>'&lt;'</value><text><p>Use same argument again.</p>
</text></group><group><value>'^'</value><text><p>Repeat this on every line produced.</p>
</text></group><group><value>'@'</value><text><p>Repeat this format for each element in the argument array.</p>
</text></group><group><value>'&gt;'</value><text><p>Put the string at the bottom end of column instead of top.</p>
</text></group><group><value>'_'</value><text><p>Set width to the length of data.</p>
</text></group><group><value>'[n]'</value><text><p>Select argument number <tt><i>n</i></tt>. Use <tt>*</tt> to use the next
       argument as selector.</p>
</text></group></int><p>The following operators are supported:</p>
<int><group><value>'%'</value><text><p>Percent.</p>
</text></group><group><value>'b'</value><text><p>Signed binary integer.</p>
</text></group><group><value>'d'</value><text><p>Signed decimal integer.</p>
</text></group><group><value>'u'</value><text><p>Unsigned decimal integer.</p>
</text></group><group><value>'o'</value><text><p>Signed octal integer.</p>
</text></group><group><value>'x'</value><text><p>Lowercase signed hexadecimal integer.</p>
</text></group><group><value>'X'</value><text><p>Uppercase signed hexadecimal integer.</p>
</text></group><group><value>'c'</value><text><p>Character. If a fieldsize has been specified this will output
       the low-order bytes of the integer in network (big endian) byte
       order. To get little endian byte order, negate the field size.</p>
</text></group><group><value>'f'</value><text><p>Float. (Locale dependent formatting.)</p>
</text></group><group><value>'g'</value><text><p>Heuristically chosen representation of float.
       (Locale dependent formatting.)</p>
</text></group><group><value>'G'</value><text><p>Like <tt>%g</tt>, but uses uppercase <tt>E</tt> for exponent.</p>
</text></group><group><value>'e'</value><text><p>Exponential notation float. (Locale dependent output.)</p>
</text></group><group><value>'E'</value><text><p>Like <tt>%e</tt>, but uses uppercase <tt>E</tt> for exponent.</p>
</text></group><group><value>'F'</value><text><p>Binary IEEE representation of float (<tt>%4F</tt> gives 
       single precision, <tt>%8F</tt> gives double precision.)</p>
</text></group><group><value>'s'</value><text><p>String.</p>
</text></group><group><value>'O'</value><text><p>Any value, debug style. Do not rely on the exact formatting;
       how the result looks can vary depending on locale, phase of
       the moon or anything else the _sprintf method implementor
       wanted for debugging.</p>
</text></group><group><value>'n'</value><text><p>No operation (ignore the argument).</p>
</text></group><group><value>'t'</value><text><p>Type of the argument.</p>
</text></group><group><value>'{'</value><value>'}'</value><text><p>Perform the enclosed format for every element of the argument array.</p>
</text></group></int><p>Most modifiers and operators are combinable in any fashion, but some
   combinations may render strange results.</p>
<p>   If an argument is an object that implements <ref resolved='lfun::_sprintf'>lfun::_sprintf()</ref>, that
   callback will be called with the operator as the first argument, and
   the current modifiers as the second. The callback is expected to return
   a string.</p>
</text><group><example/><text><p>Pike v7.4 release 13 running Hilfe v3.5 (Incremental Pike Frontend)
 &gt; sprintf("The unicode character %c has character code %04X.", 'A', 'A');
 (1) Result: "The unicode character A has character code 0041."
 &gt; sprintf("#%@02X is the HTML code for purple.", Image.Color.purple-&gt;rgb());
 (2) Result: "#A020F0 is the HTML code for purple."
 &gt; int n=4711;
 &gt; sprintf("%d = hexadecimal %x = octal %o = %b binary", n, n, n, n);
 (3) Result: "4711 = hexadecimal 1267 = octal 11147 = 1001001100111 binary"</p>
</text></group><group><note/><text><p>sprintf style formatting is applied by many formatting functions, such
   <ref resolved='predef::write'>write()</ref> and <ref resolved='predef::werror'>werror</ref>.</p>
</text></group><group><example/><text><p>&gt; write(#"Formatting examples:
 Left adjusted  [%-10d]
 Centered       [%|10d]
 Right adjusted [%10d]
 Zero padded    [%010d]
 ", n, n, n, n);
 Formatting examples:
 Left adjusted  [4711      ]
 Centered       [   4711   ]
 Right adjusted [      4711]
 Zero padded    [0000004711]
 (5) Result: 142
 int screen_width=70;
 &gt; write("%-=*s\n", screen_width,
 &gt;&gt; "This will wordwrap the specified string within the "+
 &gt;&gt; "specified field size, this is useful say, if you let "+
 &gt;&gt; "users specify their screen size, then the room "+
 &gt;&gt; "descriptions will automagically word-wrap as appropriate.\n"+
 &gt;&gt; "slosh-n's will of course force a new-line when needed.\n");
 This will wordwrap the specified string within the specified field
 size, this is useful say, if you let users specify their screen size,
 then the room descriptions will automagically word-wrap as
 appropriate.
 slosh-n's will of course force a new-line when needed.
 (6) Result: 355
 &gt; write("%-=*s %-=*s\n", screen_width/2,
 &gt;&gt; "Two columns next to each other (any number of columns will "+
 &gt;&gt; "of course work) independantly word-wrapped, can be useful.",
 &gt;&gt; screen_width/2-1,
 &gt;&gt; "The - is to specify justification, this is in addherence "+
 &gt;&gt; "to std sprintf which defaults to right-justification, "+
 &gt;&gt; "this version also supports centre and right justification.");
 Two columns next to each other (any The - is to specify justification,
 number of columns will of course    this is in addherence to std
 work) independantly word-wrapped,   sprintf which defaults to
 can be useful.                      right-justification, this version
                                     also supports centre and right
                                     justification.
 (7) Result: 426
 &gt; write("%-$*s\n", screen_width,
 &gt;&gt; "Given a\nlist of\nslosh-n\nseparated\n'words',\nthis option\n"+
 &gt;&gt; "creates a\ntable out\nof them\nthe number of\ncolumns\n"+
 &gt;&gt; "be forced\nby specifying a\npresision.\nThe most obvious\n"+
 &gt;&gt; "use is for\nformatted\nls output.");
 Given a          list of          slosh-n
 separated        'words',         this option
 creates a        table out        of them
 the number of    columns          be forced
 by specifying a  presision.       The most obvious
 use is for       formatted        ls output.
 (8) Result: 312
 &gt; write("%-#*s\n", screen_width,
 &gt;&gt; "Given a\nlist of\nslosh-n\nseparated\n'words',\nthis option\n"+
 &gt;&gt; "creates a\ntable out\nof them\nthe number of\ncolumns\n"+
 &gt;&gt; "be forced\nby specifying a\npresision.\nThe most obvious\n"+
 &gt;&gt; "use is for\nformatted\nls output.");
 Given a          creates a        by specifying a
 list of          table out        presision.
 slosh-n          of them          The most obvious
 separated        the number of    use is for
 'words',         columns          formatted
 this option      be forced        ls output.
 (9) Result: 312
 &gt; sample = ([ "align":"left", "valign":"middle" ]);
 (10) Result: ([ /* 2 elements */
          "align":"left",
          "valign":"middle"
        ])
 &gt; write("&lt;td%{ %s='%s'%}&gt;\n", (array)sample);
 &lt;td valign='middle' align='left'&gt;
 (11) Result: 34
 &gt;  write("Of course all the simple printf options "+
 &gt;&gt; "are supported:\n %s: %d %x %o %c\n",
 &gt;&gt; "65 as decimal, hex, octal and a char",
 &gt;&gt; 65, 65, 65, 65);
 Of course all the simple printf options are supported:
  65 as decimal, hex, octal and a char: 65 41 101 A
 (12) Result: 106
 &gt; write("%[0]d, %[0]x, %[0]X, %[0]o, %[0]c\n", 75);
 75, 4b, 4B, 113, K
 (13) Result: 19
 &gt; write("%|*s\n",screen_width, "THE END");
                                THE END
 (14) Result: 71</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::_sprintf'>lfun::_sprintf()</ref></p>
</text></group></doc>
<method name='sprintf'>
<arguments><argument name='format'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='aggregate_mapping'><doc><text><p>Construct a mapping.</p>
<p> Groups the arguments together two and two in key-index pairs and
 creates a mapping of those pairs. Generally, the mapping literal
 syntax is handier: <expr>([ key1:val1, key2:val2, ... ])</expr></p>
</text><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::mkmapping'>mkmapping()</ref></p>
</text></group></doc>
<method name='aggregate_mapping'>
<arguments><argument name='elems'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sscanf'><doc><text><p>The purpose of sscanf is to match a string <ref resolved='predef::sscanf.data'>data</ref> against a <ref resolved='predef::sscanf.format'>format</ref>
 string and place the matching results into a list of variables. The list
 of <ref resolved='predef::sscanf.lvalues'>lvalues</ref> are destructively modified (which is only possible because
 sscanf really is an opcode, rather than a pike function) with the values
 extracted from the <ref resolved='predef::sscanf.data'>data</ref> according to the <ref resolved='predef::sscanf.format'>format</ref> specification. Only
 the variables up to the last matching directive of the format string are
 touched.</p>
<p> The <ref resolved='predef::sscanf.format'>format</ref> string can contain strings separated by special matching
 directives like <tt>%d</tt>, <tt>%s</tt> <tt>%c</tt> and <tt>%f</tt>. Every such
 directive corresponds to one of the <ref resolved='predef::sscanf.lvalues'>lvalues</ref>, in order they are listed.
 An lvalue is the name of a variable, a name of a local variable, an index
 in an array, mapping or object. It is because of these lvalues that sscanf
 can not be implemented as a normal function.</p>
<p> Whenever a percent character is found in the format string, a match is
 performed, according to which operator and modifiers follow it:</p>
<string><group><value>"%b"</value><text><p>Reads a binary integer (<expr>"0101"</expr> makes <expr>5</expr>)</p>
</text></group><group><value>"%d"</value><text><p>Reads a decimal integer (<expr>"0101"</expr> makes <expr>101</expr>).</p>
</text></group><group><value>"%o"</value><text><p>Reads an octal integer (<expr>"0101"</expr> makes <expr>65</expr>).</p>
</text></group><group><value>"%x"</value><text><p>Reads a hexadecimal integer (<expr>"0101"</expr> makes <expr>257</expr>).</p>
</text></group><group><value>"%D"</value><text><p>Reads an integer that is either octal (leading zero),
     hexadecimal (leading 0x) or decimal. (<expr>"0101"</expr> makes
     <expr>65</expr>).</p>
</text></group><group><value>"%c"</value><text><p>Reads one character and returns it as an integer
     (<expr>"0101"</expr> makes <expr>48</expr>, or <expr>'0'</expr>, leaving
     <expr>"101"</expr> for later directives). Using the field width and
     endianness modifiers, you can decode integers of any size and
     endianness. For example <expr>"%-2c"</expr> decodes <expr>"0101"</expr>
     into <expr>12592</expr>, leaving <expr>"01"</expr> fot later directives.
     The sign modifiers can be used to modify the signature of the
     data, making <expr>"%+1c"</expr> decode <expr>"ä"</expr> into
     <expr>-28</expr>.</p>
</text></group><group><value>"%f"</value><text><p>Reads a float ("0101" makes 101.0).</p>
</text></group><group><value>"%F"</value><text><p>Reads a float encoded according to the IEEE single precision
     binary format (<expr>"0101"</expr> makes <expr>6.45e-10</expr>,
     approximately). Given a field width modifier of 8 (4 is the
     default), the data will be decoded according to the IEEE
     double precision binary format instead. (You will however
     still get a float, unless your pike was compiled with the
     configure argument <tt>--with-double-precision</tt>.)</p>
</text></group><group><value>"%s"</value><text><p>Reads a string. If followed by %d, %s will only read non-numerical
     characters. If followed by a %[], %s will only read characters not
     present in the set. If followed by normal text, %s will match all
     characters up to but not including the first occurrence of that text.</p>
</text></group><group><value>"%[set]"</value><text><p>Matches a string containing a given set of characters (those given
     inside the brackets). %[^set] means any character except those inside
     brackets. Ranges of characters can be defined by using a minus
     character between the first and the last character to be included in
     the range. Example: %[0-9H] means any number or 'H'. Note that sets
     that includes the character - must have it first in the brackets to
     avoid having a range defined. Sets including the character ']' must
     list this first (even before -) too, for natural reasons.</p>
</text></group><group><value>"%{format%}"</value><text><p>Repeatedly matches 'format' as many times as possible and assigns an
     array of arrays with the results to the lvalue.</p>
</text></group><group><value>"%O"</value><text><p>Match a Pike constant, such as string or integer (currently only
     integer, string and character constants are functional).</p>
</text></group><group><value>"%%"</value><text><p>Match a single percent character (hence this is how you quote the %
     character to just match, and not start an lvalue matcher directive).</p>
</text></group></string><p>Similar to <ref resolved='predef::sprintf'>sprintf</ref>, you may supply modifiers between the % character
 and the operator, to slightly change its behaviour from the default:</p>
<string><group><value>"*"</value><text><p>The operator will only match its argument, without assigning any
     variable.</p>
</text></group><group><value>number</value><text><p>You may define a field width by supplying a numeric modifier.
     This means that the format should match that number of
     characters in the input data; be it a <i>number</i> characters
     long string, integer or otherwise (<expr>"0101"</expr> using the
     format %2c would read an unsigned short <expr>12337</expr>, leaving
     the final <expr>"01"</expr> for later operators, for instance).</p>
</text></group><group><value>"-"</value><text><p>Supplying a minus sign toggles the decoding to read the data encoded
     in little-endian byte order, rather than the default network
     (big-endian) byte order.</p>
</text></group><group><value>"+"</value><text><p>Interpret the data as a signed entity. In other words,
     <expr>"%+1c"</expr> will read <expr>"\xFF"</expr> as <expr>-1</expr> instead
     of <expr>255</expr>, as <expr>"%1c"</expr> would have.</p>
</text></group></string>
</text><group><note/><text><p>Sscanf does not use backtracking. Sscanf simply looks at the format string
 up to the next % and tries to match that with the string. It then proceeds
 to look at the next part. If a part does not match, sscanf immediately
 returns how many % were matched. If this happens, the lvalues for % that
 were not matched will not be changed.</p>
</text></group><group><example/><text><p>// a will be assigned "oo" and 1 will be returned
 sscanf("foo", "f%s", a);</p>
<p> // a will be 4711 and b will be "bar", 2 will be returned
 sscanf("4711bar", "%d%s", a, b);</p>
<p> // a will be 4711, 2 will be returned
 sscanf("bar4711foo", "%*s%d", a);</p>
<p> // a will become "test", 2 will be returned
 sscanf(" \t test", "%*[ \t]%s", a);</p>
<p> // Remove "the " from the beginning of a string
 // If 'str' does not begin with "the " it will not be changed
 sscanf(str, "the %s", str);</p>
<p> // It is also possible to declare a variable directly in the sscanf call;
 // another reason for sscanf not to be an ordinary function:</p>
<p> sscanf("abc def", "%s %s", string a, string b);</p>
</text></group><group><returns/><text><p>The number of directives matched in the format string. Note that a string
   directive (%s or %[]) counts as a match even when matching just the empty
   string (which either may do).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sprintf'>sprintf</ref>, <ref resolved='predef::array_sscanf'>array_sscanf</ref></p>
</text></group></doc>
<method name='sscanf'>
<arguments><argument name='data'><type><string/></type></argument><argument name='format'><type><string/></type></argument><argument name='lvalues'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='array_sscanf'><doc><text><p>This function works just like <ref resolved='predef::sscanf'>sscanf()</ref>, but returns the matched
 results in an array instead of assigning them to lvalues. This is often
 useful for user-defined sscanf strings.</p>
</text><group><seealso/><text><p><ref resolved='predef::sscanf'>sscanf()</ref>, <ref resolved='predef::`/'>`/()</ref></p>
</text></group></doc>
<method name='array_sscanf'>
<arguments><argument name='data'><type><string/></type></argument><argument name='format'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>


<class name='MasterObject'><docgroup homogen-type='method' homogen-name='describe_backtrace'><doc><text><p>Called by various routines to format a readable
   description of an exception.</p>
</text><group><param name='exception'/><text><p>Something that was thrown. Usually an <ref resolved='predef::Error.Generic'>Error.Generic</ref> object, or
   an array with the following content:</p>
<array><group><elem><type><string/></type><index>msg</index></elem><text><p>Error message.</p>
</text></group><group><elem><type><array><valuetype><or><object>backtrace_frame</object><array><valuetype><mixed/></valuetype></array></or></valuetype></array></type><index>backtrace</index></elem><text><p>Backtrace to the point where the exception occurred.</p>
</text></group></array>
</text></group><group><returns/><text><p>Returns a string describing the exeception.</p>
</text></group><group><note/><text><p>Usually added by the initialization code the global name space
   with <ref resolved='predef::add_constant'>add_constant()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::describe_backtrace'>predef::describe_backtrace()</ref></p>
</text></group></doc>
<method name='describe_backtrace'>
<arguments><argument name='exception'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='unregister'><doc><text><p>Unregister a program that was only partially compiled.</p>
<p>   Called by <ref resolved='predef::compile'>compile()</ref> to clean up references to partially compiled
   programs.</p>
</text><group><param name='p'/><text><p>Partially compiled program that should no longer be referenced.</p>
</text></group><group><fixme/><text><p>Shouldn't this function be in the compilation handler?</p>
</text></group></doc>
<method name='unregister'>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='Codec'><doc><text><p>The master object is used as a fallback codec by <ref resolved='predef::encode_value'>encode_value()</ref>
   and <ref resolved='predef::decode_value'>decode_value()</ref> if no codec was given.</p>
<p>   It will also be used as a codec if <ref resolved='predef::decode_value'>decode_value()</ref> encounters
   old-style <ref resolved='predef::encode_value'>encode_value()</ref>'ed data.</p>
</text></doc>
<inherit name='Codec'><source-position first-line='4326' file='/home/peter/hack/Pike/7.6-distmaker/src/encode.c'/><classname resolved='predef::Codec'>Codec</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='CompilationHandler'><doc><text><p>The master object acts as fallback compilation handler for
 <ref resolved='predef::compile'>compile()</ref> and <ref resolved='predef::cpp'>cpp()</ref>.</p>
</text></doc>
<inherit name='CompilationHandler'><source-position first-line='217' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/><classname resolved='predef::CompilationHandler'>CompilationHandler</classname></inherit>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_compilation_handler'><doc><text><p>Get compilation handler for simulation of Pike v<ref resolved='predef::MasterObject.get_compilation_handler.major'>major</ref>.<ref resolved='predef::MasterObject.get_compilation_handler.minor'>minor</ref>.</p>
<p>   This function is called by <ref resolved='predef::cpp'>cpp()</ref> when it encounters
   <expr>#pike</expr> directives.</p>
</text><group><param name='major'/><text><p>Major version.</p>
</text></group><group><param name='minor'/><text><p>Minor version.</p>
</text></group><group><returns/><text><p>Returns a compilation handler for Pike &gt;= <ref resolved='predef::MasterObject.get_compilation_handler.major'>major</ref>.<ref resolved='predef::MasterObject.get_compilation_handler.minor'>minor</ref>.</p>
</text></group></doc>
<method name='get_compilation_handler'>
<arguments><argument name='major'><type><int/></type></argument><argument name='minor'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::CompilationHandler'>CompilationHandler</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode_charset'><doc><text><p>Convert <ref resolved='predef::MasterObject.decode_charset.raw'>raw</ref> from encoding <ref resolved='predef::MasterObject.decode_charset.charset'>charset</ref> to UNICODE.</p>
<p>   This function is called by <ref resolved='predef::cpp'>cpp()</ref> when it encounters
   <expr>#charset</expr> directives.</p>
</text><group><param name='raw'/><text><p>String to convert.</p>
</text></group><group><param name='charset'/><text><p>Name of encoding that <ref resolved='predef::MasterObject.decode_charset.raw'>raw</ref> uses.</p>
</text></group><group><returns/><text><p><ref resolved='predef::MasterObject.decode_charset.raw'>raw</ref> decoded to UNICODE, or <expr>0</expr> (zero) if the decoding failed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Charset'>Locale.Charset</ref></p>
</text></group></doc>
<method name='decode_charset'>
<arguments><argument name='raw'><type><string/></type></argument><argument name='charset'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cast_to_object'><doc><text><p>Called by the Pike runtime to cast strings to objects.</p>
</text><group><param name='str'/><text><p>String to cast to object.</p>
</text></group><group><param name='current_file'/><text><p>Filename of the file that attempts to perform the cast.</p>
</text></group><group><returns/><text><p>Returns the resulting object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MasterObject.cast_to_program'>cast_to_program()</ref></p>
</text></group></doc>
<method name='cast_to_object'>
<arguments><argument name='str'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument></arguments>
<returntype><object resolved='predef::MasterObject.cast_to_object'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='cast_to_program'><doc><text><p>Called by the Pike runtime to cast strings to programs.</p>
</text><group><param name='str'/><text><p>String to cast to object.</p>
</text></group><group><param name='current_file'/><text><p>Filename of the file that attempts to perform the cast.</p>
</text></group><group><returns/><text><p>Returns the resulting program.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MasterObject.cast_to_object'>cast_to_object()</ref></p>
</text></group></doc>
<method name='cast_to_program'>
<arguments><argument name='str'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='handle_error'><doc><text><p>Called by the Pike runtime if an exception isn't caught.</p>
</text><group><param name='exception'/><text><p>Value that was <ref resolved='predef::throw'>throw()</ref>'n.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::MasterObject.describe_backtrace'>describe_backtrace()</ref></p>
</text></group></doc>
<method name='handle_error'>
<arguments><argument name='exception'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='runtime_warning'><doc><text><p>Called by the Pike runtime to warn about data inconsistencies.</p>
</text><group><param name='subsystem'/><text><p>Runtime subsystem where the warning was generated.
   Currently the following subsystems may call this function:</p>
<string><group><value>"gc"</value><text><p>The garbage collector.</p>
</text></group></string>
</text></group><group><param name='msg'/><text><p>Warning message.
   Currently the following messages may be generated:</p>
<string><group><value>"bad_cycle"</value><text><p>A cycle where the destruction order isn't deterministic
       was detected by the garbage collector.</p>
<p>       <ref resolved='predef::MasterObject.runtime_warning.data'>data</ref> will in this case contain an array of the elements
       in the cycle.</p>
</text></group></string>
</text></group><group><param name='data'/><text><p>Optional data that further describes the warning specified by <ref resolved='predef::MasterObject.runtime_warning.msg'>msg</ref>.</p>
</text></group></doc>
<method name='runtime_warning'>
<arguments><argument name='subsystem'><type><string/></type></argument><argument name='msg'><type><string/></type></argument><argument name='data'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>

<module name='Error'>

<class name='Generic'><doc><text><p>Class for exception objects for errors of unspecified type.</p>
</text></doc><docgroup homogen-type='method' homogen-name='cast'><doc><text><p>Cast operator.</p>
</text><group><note/><text><p>The only supported type to cast to is <expr>"array"</expr>, which
   generates and old-style error.</p>
</text></group></doc>
<method name='cast'>
<arguments><argument name='type'><type><string/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]'><doc><text><p>Index operator.</p>
<p> Simulates an array</p>
<array><group><elem><type><string/></type><index>msg</index></elem><text><p>Error message.</p>
</text></group><group><elem><type><array/></type><index>backtrace</index></elem><text><p>Backtrace as returned by <ref resolved='predef::Error.Generic.backtrace'>backtrace()</ref> from where
     the error occurred.</p>
</text></group></array>
</text><group><note/><text><p>The error message is always terminated with a newline.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Error.Generic.backtrace'>backtrace()</ref></p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='index'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><or><array/><string/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='describe'><doc><text><p>Return a readable error report that includes the backtrace.</p>
</text></doc>
<method name='describe'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='message'><doc><text><p>Return a readable message describing the error.</p>
</text></doc>
<method name='message'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='backtrace'><doc><text><p>Return the backtrace where the error occurred.</p>
</text><group><seealso/><text><p><ref resolved='predef::backtrace'>predef::backtrace()</ref></p>
</text></group></doc>
<method name='backtrace'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sprintf'><doc/>
<method name='_sprintf'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='create'><doc/>
<method name='create'>
<arguments><argument name='message'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class></module>

<class name='Iterator'><doc><text><p>This is the interface for iterator objects. They implement an
 interface to a collection or stream of data items and a cursor
 that can be used to iterate over and examine individual items in
 the data set.</p>
<p> Iterators are typically created to access a data set in some
 specific object, array, mapping, multiset or string. An object can
 have several iterators that access different data sets in it, or
 the same in different ways. E.g. strings have both an iterator for
 access char-by-char (<ref resolved='predef::String.Iterator'>String.Iterator</ref>), and another for access
 over splitted substrings (<ref resolved='predef::String.SplitIterator'>String.SplitIterator</ref>).
 <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref> may be defined in an object to get an
 instance of the canonical iterator type for it. It's used by e.g.
 <ref>foreach</ref> to iterate over objects conveniently.</p>
<p> It's not an error to advance an iterator past the beginning or end
 of the data set; <ref resolved='predef::Iterator.`!'>`!()</ref> will only return true then, and <ref resolved='predef::Iterator.index'>index</ref>
 and <ref resolved='predef::Iterator.value'>value</ref> will return <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref>. An iterator in that state
 need not keep track of positions, so it's undefined what happens
 if it's "moved back" into the set of items.</p>
<p> Backward movement for iterators is optional. It's supported if and
 only if <ref resolved='predef::Iterator.`-'>`-()</ref> is defined, but even then it's undefined how far
 back the iterator can move. Therefore iterators may support only a
 limited amount of backward movement, e.g. when they access a
 stream through a limited buffer. If such an iterator is moved back
 past the limit then it'll behave as if it's pointing entirely
 outside the data set (see above).</p>
<p> An iterator that doesn't support backward movement at all should
 throw an error if it's attempted.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_iterator'>predef::get_iterator</ref>, <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref>,
   <ref resolved='predef::Array.Iterator'>Array.Iterator</ref>, <ref resolved='predef::Mapping.Iterator'>Mapping.Iterator</ref>, <ref resolved='predef::Multiset.Iterator'>Multiset.Iterator</ref>,
   <ref resolved='predef::String.Iterator'>String.Iterator</ref>, <ref resolved='predef::String.SplitIterator'>String.SplitIterator</ref>.</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='create'><doc><text><p>Initialize this iterator to access a data set in <ref resolved='predef::Iterator.create.data'>data</ref>. The
 type of <ref resolved='predef::Iterator.create.data'>data</ref> is specific to the iterator implementation. An
 iterator may also access some implicit data set, in which case
 <ref resolved='predef::Iterator.create.data'>data</ref> isn't specified at all.</p>
<p> The iterator initially points to the first item in the data set,
 if there is any.</p>
<p> The iterator need not support being reused, so this function is
 typically static.</p>
</text></doc>
<method name='create'>
<arguments><argument name='data'><type><or><void/><mixed/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`!'><doc><text><p>Returns <expr>0</expr> (zero) when the iterator points to an item,
 <expr>1</expr> otherwise.</p>
</text></doc>
<method name='`!'>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`+'><doc><text><p>Returns a clone of this iterator which is advanced the specified
 number of steps. The amount may be negative to move backwards.
 If the iterator doesn't support backward movement it should
 throw an exception in that case.</p>
</text></doc>
<method name='`+'>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Iterator'>Iterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`+='><doc><text><p>Advance this iterator the specified number of steps and return
 it. The amount may be negative to move backwards. If the
 iterator doesn't support backward movement it should throw an
 exception in that case.</p>
<p> <ref>foreach</ref> calls this function with a step value of <expr>1</expr>.</p>
</text><group><note/><text><p><ref>foreach</ref> will call this function even when the the
   iterator has more than one reference. If you want to
   loop over a copy of the iterator, you can create a
   copy by adding <expr>0</expr> (zero) to it:</p>
<code><text><p>Iterator iterator;
     ...
     foreach(iterator+0; mixed index; mixed value) {
       ...
     }</p>
</text></code>
</text></group><group><note/><text><p>Even though this function is an lfun, it is often beneficial
   to not declare it static, since code might want to advance
   the iterator by hand.</p>
</text></group></doc>
<method name='`+='>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Iterator'>Iterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`-'><doc><text><p>This lfun should be defined if and only if the iterator supports
 backward movement to some degree. It should back up the
 specified number of steps. The amount may be negative to move
 forward.</p>
</text></doc>
<method name='`-'><modifiers><optional/></modifiers>
<arguments><argument name='steps'><type><int/></type></argument></arguments>
<returntype><object resolved='predef::Iterator'>Iterator</object></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='index'><doc><text><p>Returns the current index, or <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> if the iterator
 doesn't point to any item.</p>
<p> If there's no obvious index set then the index is the current
 position in the data set, counting from <expr>0</expr>.</p>
</text></doc>
<method name='index'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='value'><doc><text><p>Returns the current value, or <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> if the iterator
 doesn't point to any item.</p>
</text></doc>
<method name='value'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_sizeof'><doc><text><p>Returns the total number of items in the data set according to
 this iterator. If the size of the data set is unlimited or
 unknown then this function shouldn't be defined.</p>
</text></doc>
<method name='_sizeof'><modifiers><optional/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_random'><doc><text><p>If this function is defined then it sets the iterator to point
 to a random item in the accessible set. The random distribution
 should be rectangular within that set, and the pseudorandom
 sequence provided by <ref resolved='predef::random'>random</ref> should be used.</p>
</text></doc>
<method name='_random'><modifiers><optional/></modifiers>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='first'><doc><text><p>If this function is defined then it resets the iterator to point
 to the first item.</p>
</text><group><returns/><text><p>Returns zero if there are no items at all in
   the data set, one otherwise.</p>
</text></group><group><note/><text><p>It's not enough to set the iterator to the earliest accessible
   item. If the iterator doesn't support backing up to the
   original start position then this function should not be
   implemented.</p>
</text></group></doc>
<method name='first'><modifiers><optional/></modifiers>
<arguments/>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='next'><doc><text><p>If this function is defined it should advance the iterator one
 step, just like <expr><ref resolved='predef::Iterator.`+='>`+=</ref>(1)</expr> would do.</p>
</text><group><returns/><text><p>Returns <tt>1</tt> if it succeeded in advancing, and
   <tt>0</tt> (zero) at end of iterator.</p>
</text></group></doc>
<method name='next'><modifiers><optional/></modifiers>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_index'><doc><text><p>If this function is defined it should set the iterator at
 the specified index.</p>
</text><group><note/><text><p>It should be possible to set the index at the end of
   the iterator.</p>
</text></group></doc>
<method name='set_index'><modifiers><optional/></modifiers>
<arguments><argument name='index'><type><zero/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
</class>





<module name='Multiset'>

<class name='Iterator'><doc><text><p>An object of this class is returned by <ref resolved='predef::get_iterator'>get_iterator()</ref> when
   called with a multiset.</p>
</text><group><seealso/><text><p><ref resolved='predef::get_iterator'>get_iterator</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name='predef::Iterator'><doc>
</doc>
<inherit name='predef::Iterator'><classname resolved='predef::Iterator'>predef::Iterator</classname></inherit>
</docgroup>
</class></module>

<docgroup homogen-type='method' homogen-name='get_iterator'><doc><text><p>Creates and returns a canonical iterator for <ref resolved='predef::get_iterator.data'>data</ref>.</p>
</text><group><returns/><text><mixed name='data'><group><type><object resolved='predef::get_iterator'/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is an object with <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref> defined then
       it's called in it to create the iterator.</p>
<p>       If <ref resolved='predef::get_iterator.data'>data</ref> is an object that lacks <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref> then
       it's assumed to already be an iterator object, and is simply
       returned.</p>
</text></group><group><type><array/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is an array, an <ref resolved='predef::Array.Iterator'>Array.Iterator</ref> object will be
       returned.</p>
</text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a mapping, a <ref resolved='predef::Mapping.Iterator'>Mapping.Iterator</ref> object will be
       returned</p>
</text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a multiset, a <ref resolved='predef::Multiset.Iterator'>Multiset.Iterator</ref> object will be
       returned</p>
</text></group><group><type><string/></type><text><p>If <ref resolved='predef::get_iterator.data'>data</ref> is a string, a <ref resolved='predef::String.Iterator'>String.Iterator</ref> object will be
       returned</p>
</text></group></mixed>
</text></group><group><note/><text><p>This function is used by <ref>foreach</ref> to get an iterator for an
   object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Iterator'>Iterator</ref>, <ref resolved='lfun::_get_iterator'>lfun::_get_iterator</ref></p>
</text></group></doc>
<method name='get_iterator'>
<arguments><argument name='data'><type><or><object resolved='predef::get_iterator'/><array/><mapping/><multiset/><string/></or></type></argument></arguments>
<returntype><object resolved='predef::Iterator'>Iterator</object></returntype>
</method>
</docgroup>




<docgroup homogen-type='method'><doc><text><p>These are aliases for the corresponding functions in
   <ref resolved='predef::Pike.DefaultBackend'>Pike.DefaultBackend</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::Pike.Backend.call_out'>Pike.Backend()-&gt;call_out()</ref>, <ref resolved='predef::Pike.Backend._do_call_outs'>Pike.Backend()-&gt;_do_call_outs()</ref>,
   <ref resolved='predef::Pike.Backend.find_call_out'>Pike.Backend()-&gt;find_call_out()</ref>, <ref resolved='predef::Pike.Backend.remove_call_out'>Pike.Backend()-&gt;remove_call_out()</ref>,
   <ref resolved='predef::Pike.Backend.call_out_info'>Pike.Backend()-&gt;call_out_info()</ref></p>
</text></group></doc>
<method name='call_out'>
<arguments><argument name='f'><type><function/></type></argument><argument name='delay'><type><or><float/><int/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='_do_call_outs'>
<arguments/>
<returntype><void/></returntype>
</method>
<method name='find_call_out'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='find_call_out'>
<arguments><argument name='id'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='remove_call_out'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='remove_call_out'>
<arguments><argument name='id'><type><function/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='call_out_info'>
<arguments/>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
</docgroup>




<class name='CompilationHandler'><docgroup homogen-type='method' homogen-name='get_default_module'><doc><text><p>Returns the default module from which global symbols will
   be fetched.</p>
</text><group><returns/><text><p>Returns the default module, or <expr>0</expr> (zero).</p>
<p>   If <expr>0</expr> (zero) is returned the compiler use the mapping
   returned by <ref resolved='predef::all_constants'>all_constants()</ref> as fallback.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.get_predefines'>get_predefines()</ref></p>
</text></group></doc>
<method name='get_default_module'>
<arguments/>
<returntype><or><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping><object resolved='predef::CompilationHandler.get_default_module'/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='compile_warning'><doc><text><p>Called by <ref resolved='predef::compile'>compile()</ref> to report warnings.</p>
</text><group><param name='filename'/><text><p>File which triggered the warning.</p>
</text></group><group><param name='line'/><text><p>Line which triggered the warning.</p>
</text></group><group><param name='msg'/><text><p>Warning message.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.compile_error'>compile_error()</ref></p>
</text></group></doc>
<method name='compile_warning'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='line'><type><int/></type></argument><argument name='msg'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='compile_error'><doc><text><p>Called by <ref resolved='predef::compile'>compile()</ref> and <ref resolved='predef::cpp'>cpp()</ref> when they encounter
   errors in the code they compile.</p>
</text><group><param name='filename'/><text><p>File where the error was detected.</p>
</text></group><group><param name='line'/><text><p>Line where the error was detected.</p>
</text></group><group><param name='msg'/><text><p>Description of error.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.compile_warning'>compile_warning()</ref>.</p>
</text></group></doc>
<method name='compile_error'>
<arguments><argument name='filename'><type><string/></type></argument><argument name='line'><type><int/></type></argument><argument name='msg'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='compile_exception'><doc><text><p>Called by <ref resolved='predef::compile'>compile()</ref> and <ref resolved='predef::cpp'>cpp()</ref> if they trigger
   exceptions.</p>
</text></doc>
<method name='compile_exception'>
<arguments><argument name='exception'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_predefines'><doc><text><p>Called by <ref resolved='predef::cpp'>cpp()</ref> to get the set of global symbols.</p>
</text><group><returns/><text><p>Returns a mapping from symbol name to symbol value.
   Returns zero on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.resolv'>resolv()</ref>, <ref resolved='predef::CompilationHandler.get_default_module'>get_default_module()</ref></p>
</text></group></doc>
<method name='get_predefines'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='resolv'><doc><text><p>Called by <ref resolved='predef::compile'>compile()</ref> and <ref resolved='predef::cpp'>cpp()</ref> to resolv
   module references.</p>
</text><group><returns/><text><p>Returns the resolved value, or <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.get_predefines'>get_predefines()</ref></p>
</text></group></doc>
<method name='resolv'>
<arguments><argument name='symbol'><type><string/></type></argument><argument name='filename'><type><string/></type></argument><argument name='handler'><type><object resolved='predef::CompilationHandler'>CompilationHandler</object></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='handle_import'><doc><text><p>Called by <ref resolved='predef::compile'>compile()</ref> and <ref resolved='predef::cpp'>cpp()</ref> to handle import
   directives specifying specific paths.</p>
</text><group><returns/><text><p>Returns the resolved value, or <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> on failure.</p>
</text></group></doc>
<method name='handle_import'>
<arguments><argument name='path'><type><string/></type></argument><argument name='filename'><type><string/></type></argument><argument name='handler'><type><object resolved='predef::CompilationHandler'>CompilationHandler</object></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='handle_include'><doc><text><p>Called by <ref resolved='predef::cpp'>cpp()</ref> to resolv <expr>#include</expr> and <expr>#string</expr>
   directives.</p>
</text><group><param name='header_file'/><text><p>File that was requested for inclusion.</p>
</text></group><group><param name='current_file'/><text><p>File where the directive was found.</p>
</text></group><group><param name='is_local_ref'/><text><p>Specifies reference method.</p>
<int><group><value>0</value><text><p>Directive was <expr>#include &lt;header_file&gt;</expr>.</p>
</text></group><group><value>1</value><text><p>Directive was <expr>#include "header_file"</expr>.</p>
</text></group></int>
</text></group><group><returns/><text><p>Returns the filename to pass to <ref resolved='predef::CompilationHandler.read_include'>read_include()</ref> if found,
   and <expr>0</expr> (zero) on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.read_include'>read_include()</ref></p>
</text></group></doc>
<method name='handle_include'>
<arguments><argument name='header_file'><type><string/></type></argument><argument name='current_file'><type><string/></type></argument><argument name='is_local_ref'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='read_include'><doc><text><p>Called by <ref resolved='predef::cpp'>cpp()</ref> to read included files.</p>
</text><group><param name='filename'/><text><p>Filename as returned by <ref resolved='predef::CompilationHandler.handle_include'>handle_include()</ref>.</p>
</text></group><group><returns/><text><p>Returns a string with the content of the header file on success,
   and <expr>0</expr> (zero) on failure.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::CompilationHandler.handle_include'>handle_include()</ref></p>
</text></group></doc>
<method name='read_include'>
<arguments><argument name='filename'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='constant' homogen-name='UNDEFINED'><doc><text><p>The undefined value; ie a zero for which <ref resolved='predef::zero_type'>zero_type()</ref> returns 1.</p>
</text></doc>
<constant name='UNDEFINED'><source-position first-line='1427' file='/home/peter/hack/Pike/7.6-distmaker/src/program.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='this'><doc><text><p>Builtin read only variable that evaluates to the current object.</p>
</text><group><seealso/><text><p><ref resolved='predef::.this_program'>this_program</ref>, <ref resolved='predef::this_object'>this_object()</ref></p>
</text></group></doc>
<constant name='this'><source-position first-line='1590' file='/home/peter/hack/Pike/7.6-distmaker/src/program.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='this_program'><doc><text><p>Builtin constant that evaluates to the current program.</p>
</text><group><seealso/><text><p><ref resolved='predef::.this'>this</ref>, <ref resolved='predef::this_object'>this_object()</ref></p>
</text></group></doc>
<constant name='this_program'><source-position first-line='1598' file='/home/peter/hack/Pike/7.6-distmaker/src/program.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__null_program'><doc><text><p>Program used internally by the compiler.</p>
</text><group><seealso/><text><p><ref resolved='predef::.__placeholder_object'>__placeholder_object</ref></p>
</text></group></doc>
<constant name='__null_program'><source-position first-line='7056' file='/home/peter/hack/Pike/7.6-distmaker/src/program.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__placeholder_object'><doc><text><p>Object used internally by the compiler.</p>
</text><group><seealso/><text><p><ref resolved='predef::.__null_program'>__null_program</ref></p>
</text></group></doc>
<constant name='__placeholder_object'><source-position first-line='7073' file='/home/peter/hack/Pike/7.6-distmaker/src/program.c'/></constant>
</docgroup>







<docgroup homogen-type='method' homogen-name='basetype'><doc><text><p>Same as sprintf("%t",x);</p>
</text><group><seealso/><text><p><ref resolved='predef::sprintf'>sprintf()</ref></p>
</text></group></doc>
<method name='basetype'>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>




<docgroup homogen-type='method' homogen-name='column'><doc><text><p>Extract a column from a two-dimensional array.</p>
<p> This function is exactly equivalent to:</p>
<code><text><p>map(<ref resolved='predef::column.data'>data</ref>, lambda(mixed x,mixed y) { return x[y]; }, <ref resolved='predef::column.index'>index</ref>)</p>
</text></code><p>Except of course it is a lot shorter and faster.
 That is, it indices every index in the array data on the value of
 the argument index and returns an array with the results.</p>
</text><group><seealso/><text><p><ref resolved='predef::rows'>rows()</ref></p>
</text></group></doc>
<method name='column'>
<arguments><argument name='data'><type><array/></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mkmultiset'><doc><text><p>This function creates a multiset from an array.</p>
</text><group><seealso/><text><p><ref>aggregate_multiset()</ref></p>
</text></group></doc>
<method name='mkmultiset'>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='trace'><doc><text><p>This function changes the trace level for the subsystem identified
 by <ref resolved='predef::trace.facility'>facility</ref> to <ref resolved='predef::trace.level'>level</ref>. If <ref resolved='predef::trace.facility'>facility</ref> is zero or left out, it
 changes the global trace level which affects all subsystems.</p>
<p> Enabling tracing causes messages to be printed to stderr. A higher
 trace level includes the output from all lower levels. The lowest
 level is zero which disables all trace messages.</p>
<p> See the <tt>-t</tt> command-line option for more information.</p>
</text><group><param name='level'/><text><p>If <ref resolved='predef::trace.facility'>facility</ref> is specified then there is typically only one
   trace level for it, i.e. it's an on-or-off toggle. The global
   trace levels, when <ref resolved='predef::trace.facility'>facility</ref> isn't specified, are:</p>
<int><group><value>1</value><text><p>Trace calls to Pike functions and garbage collector runs.</p>
</text></group><group><value>2</value><text><p>Trace calls to builtin functions.</p>
</text></group><group><value>3</value><text><p>Trace every interpreted opcode.</p>
</text></group><group><value>4</value><text><p>Also trace the opcode arguments.</p>
</text></group></int>
</text></group><group><param name='facility'/><text><p>Valid facilities are:</p>
<string><group><value>"gc"</value><text><p>Trace the start and end of each run of the garbage collector.
     The setting is never thread local.</p>
</text></group></string>
</text></group><group><param name='all_threads'/><text><p>Trace levels are normally thread local, so changes affect only
   the current thread. To change the level in all threads, pass a
   nonzero value in this argument.</p>
</text></group><group><returns/><text><p>The old trace level in the current thread is returned.</p>
</text></group></doc>
<method name='trace'>
<arguments><argument name='level'><type><int/></type></argument><argument name='facility'><type><or><void/><string/></or></type></argument><argument name='all_threads'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>

<docgroup homogen-type='method' homogen-name='ctime'><doc><text><p>Convert the output from a previous call to <ref resolved='predef::time'>time()</ref> into a readable
 string containing the current year, month, day and time.</p>
<p> Like <ref resolved='predef::localtime'>localtime</ref>, this function might throw an error if the
 ctime(2) call failed on the system. It's platform dependent what
 time ranges that function can handle, e.g. Windows doesn't handle
 a negative <ref resolved='predef::ctime.timestamp'>timestamp</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::localtime'>localtime()</ref>, <ref resolved='predef::mktime'>mktime()</ref>, <ref resolved='predef::gmtime'>gmtime()</ref></p>
</text></group></doc>
<method name='ctime'>
<arguments><argument name='timestamp'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mkmapping'><doc><text><p>Make a mapping from two arrays.</p>
<p> Makes a mapping <ref resolved='predef::mkmapping.ind'>ind[x]</ref>:<ref resolved='predef::mkmapping.val'>val[x]</ref>, <tt>0 &lt;= x &lt; sizeof(ind)</tt>.</p>
<p> <ref resolved='predef::mkmapping.ind'>ind</ref> and <ref resolved='predef::mkmapping.val'>val</ref> must have the same size.</p>
<p> This is the inverse operation of <ref resolved='predef::indices'>indices()</ref> and <ref resolved='predef::values'>values()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::indices'>indices()</ref>, <ref resolved='predef::values'>values()</ref></p>
</text></group></doc>
<method name='mkmapping'>
<arguments><argument name='ind'><type><array/></type></argument><argument name='val'><type><array/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>







<docgroup homogen-type='method' homogen-name='m_delete'><doc><text><p>If <ref resolved='predef::m_delete.map'>map</ref> is an object that implements <ref resolved='lfun::_m_delete'>lfun::_m_delete()</ref>,
 that function will be called with <ref resolved='predef::m_delete.index'>index</ref> as its single argument.</p>
<p> Otherwise if <ref resolved='predef::m_delete.map'>map</ref> is a mapping the entry with index <ref resolved='predef::m_delete.index'>index</ref>
 will be removed from <ref resolved='predef::m_delete.map'>map</ref> destructively.</p>
<p> If the mapping does not have an entry with index <ref resolved='predef::m_delete.index'>index</ref>, nothing is done.</p>
</text><group><returns/><text><p>The value that was removed will be returned.</p>
</text></group><group><note/><text><p>Note that <ref resolved='predef::m_delete'>m_delete()</ref> changes <ref resolved='predef::m_delete.map'>map</ref> destructively.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref></p>
</text></group></doc>
<method name='m_delete'>
<arguments><argument name='map'><type><or><object resolved='predef::m_delete'/><mapping/></or></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_weak_flag'><doc><text><p>Returns the weak flag settings for <ref resolved='predef::get_weak_flag.m'>m</ref>. It's a combination of
 <ref resolved='predef::Pike.WEAK_INDICES'>Pike.WEAK_INDICES</ref> and <ref resolved='predef::Pike.WEAK_VALUES'>Pike.WEAK_VALUES</ref>.</p>
</text></doc>
<method name='get_weak_flag'>
<arguments><argument name='m'><type><or><array/><mapping/><multiset/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='__empty_program'><doc/>
<method name='__empty_program'>
<arguments><argument name='line'><type><or><int/><void/></or></type></argument><argument name='file'><type><or><string/><void/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='function_name'><doc><text><p>Return the name of the function <ref resolved='predef::function_name.f'>f</ref>.</p>
<p> If <ref resolved='predef::function_name.f'>f</ref> is a global function defined in the runtime <expr>0</expr>
 (zero) will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::function_object'>function_object()</ref></p>
</text></group></doc>
<method name='function_name'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='function_object'><doc><text><p>Return the object the function <ref resolved='predef::function_object.f'>f</ref> is in.</p>
<p>   If <ref resolved='predef::function_object.f'>f</ref> is a global function defined in the runtime <expr>0</expr>
   (zero) will be returned.</p>
<p>   Zero will also be returned if <ref resolved='predef::function_object.f'>f</ref> is a constant in the
   parent class. In that case <ref resolved='predef::function_program'>function_program()</ref> can be
   used to get the parent program.</p>
</text><group><seealso/><text><p><ref resolved='predef::function_name'>function_name()</ref>, <ref resolved='predef::function_program'>function_program()</ref></p>
</text></group></doc>
<method name='function_object'>
<arguments><argument name='f'><type><function/></type></argument></arguments>
<returntype><object resolved='predef::function_object'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='function_program'><doc><text><p>Return the program the function <ref resolved='predef::function_program.f'>f</ref> is in.</p>
<p>   If <ref resolved='predef::function_program.f'>f</ref> is a global function defined in the runtime <expr>0</expr>
   (zero) will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::function_name'>function_name()</ref>, <ref resolved='predef::function_object'>function_object()</ref></p>
</text></group></doc>
<method name='function_program'>
<arguments><argument name='f'><type><or><function/><program/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='random'><doc><text><p>If random is called with an object, <ref>lfun::random</ref> will be
   called in the object.</p>
</text><group><seealso/><text><p><ref resolved='lfun::_random'>lfun::_random</ref></p>
</text></group></doc>
<method name='random'>
<arguments><argument name='o'><type><object resolved='predef::random'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>

<docgroup homogen-type='method' homogen-name='random'><doc><text><p>This function returns a random number in the range 0 - <ref resolved='predef::random.max'>max</ref>-1.</p>
</text><group><seealso/><text><p><ref resolved='predef::random_seed'>random_seed()</ref></p>
</text></group></doc>
<method name='random'>
<arguments><argument name='max'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='random'>
<arguments><argument name='max'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='random'><doc><text><p>Returns a random element from <ref resolved='predef::random.x'>x</ref>.</p>
</text></doc>
<method name='random'>
<arguments><argument name='x'><type><or><array/><multiset/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='random'><doc><text><p>Returns a random index-value pair from the mapping.</p>
</text></doc>
<method name='random'>
<arguments><argument name='m'><type><mapping/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='backtrace'><doc><text><p>FIXME: This documentation is not up to date!</p>
<p>   Get a description of the current call stack.</p>
<p>   The description is returned as an array with one entry for each call
   frame on the stack.</p>
<p>   Each entry has this format:</p>
<array><group><elem><type><string/></type><index>file</index></elem><text><p>A string with the filename if known, else zero.</p>
</text></group><group><elem><type><int/></type><index>line</index></elem><text><p>An integer containing the linenumber if known, else zero.</p>
</text></group><group><elem><type><function/></type><index>fun</index></elem><text><p>The function that was called at this level.</p>
</text></group><group><elem><type><varargs><or><mixed/><void/></or></varargs></type><index>args</index></elem><text><p>The arguments that the function was called with.</p>
</text></group></array><p>The current call frame will be last in the array.</p>
</text><group><note/><text><p>Please note that the frame order may be reversed in a later version
   (than 7.1) of Pike to accommodate for deferred backtraces.</p>
<p>   Note that the arguments reported in the backtrace are the current
   values of the variables, and not the ones that were at call-time.
   This can be used to hide sensitive information from backtraces
   (eg passwords).</p>
</text></group><group><seealso/><text><p><ref>catch()</ref>, <ref resolved='predef::throw'>throw()</ref></p>
</text></group></doc>
<method name='backtrace'>
<arguments/>
<returntype><array><valuetype><object resolved='predef::Pike.BacktraceFrame'>Pike.BacktraceFrame</object></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='version'><doc><text><p>Report the version of Pike. Does the same as</p>
<code><text><p>sprintf("Pike v%d.%d release %d", __REAL_VERSION__,
         __REAL_MINOR__, __REAL_BUILD__);</p>
</text></code>
</text><group><seealso/><text><p><ref resolved='cpp::.__VERSION__'>__VERSION__</ref>, <ref resolved='cpp::.__MINOR__'>__MINOR__</ref>, <ref resolved='cpp::.__BUILD__'>__BUILD__</ref>,
   <ref resolved='cpp::.__REAL_VERSION__'>__REAL_VERSION__</ref>, <ref resolved='cpp::.__REAL_MINOR__'>__REAL_MINOR__</ref>, <ref resolved='cpp::.__REAL_BUILD__'>__REAL_BUILD__</ref>,</p>
</text></group></doc>
<method name='version'>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>






<docgroup homogen-type='method' homogen-name='equal'><doc><text><p>This function checks if the values <ref resolved='predef::equal.a'>a</ref> and <ref resolved='predef::equal.b'>b</ref> are equal.</p>
<p>   For all types but arrays, multisets and mappings, this operation is
   the same as doing <expr><ref resolved='predef::equal.a'>a</ref> == <ref resolved='predef::equal.b'>b</ref></expr>.
   For arrays, mappings and multisets however, their contents are checked
   recursively, and if all their contents are the same and in the same
   place, they are considered equal.</p>
</text><group><seealso/><text><p><ref resolved='predef::copy_value'>copy_value()</ref></p>
</text></group></doc>
<method name='equal'>
<arguments><argument name='a'><type><mixed/></type></argument><argument name='b'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='aggregate'><doc><text><p>Construct an array with the arguments as indices.</p>
<p>   This function could be written in Pike as:</p>
<code><text><p>array aggregate(mixed ... elems) { return elems; }</p>
</text></code>
</text><group><note/><text><p>Arrays are dynamically allocated there is no need to declare them
   like <expr>int a[10]=allocate(10);</expr> (and it isn't possible either) like
   in C, just <expr>array(int) a=allocate(10);</expr> will do.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::allocate'>allocate()</ref></p>
</text></group></doc>
<method name='aggregate'>
<arguments><argument name='elements'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='hash_7_4'><doc><text><p>Return an integer derived from the string <ref resolved='predef::hash_7_4.s'>s</ref>. The same string
   will always hash to the same value, also between processes.</p>
<p>   If <ref resolved='predef::hash_7_4.max'>max</ref> is given, the result will be &gt;= 0 and &lt; <ref resolved='predef::hash_7_4.max'>max</ref>,
   otherwise the result will be &gt;= 0 and &lt;= 0x7fffffff.</p>
</text><group><note/><text><p>This function is provided for backward compatibility reasons.</p>
<p>   This function is byte-order dependant for wide strings.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::hash'>hash()</ref>, <ref resolved='predef::hash_7_0'>hash_7_0()</ref></p>
</text></group></doc>
<method name='hash_7_4'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='hash_7_4'>
<arguments><argument name='s'><type><string/></type></argument><argument name='max'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='hash_7_0'><doc><text><p>Return an integer derived from the string <ref resolved='predef::hash_7_0.s'>s</ref>. The same string
   always hashes to the same value, also between processes.</p>
<p>   If <ref resolved='predef::hash_7_0.max'>max</ref> is given, the result will be &gt;= 0 and &lt; <ref resolved='predef::hash_7_0.max'>max</ref>,
   otherwise the result will be &gt;= 0 and &lt;= 0x7fffffff.</p>
</text><group><note/><text><p>This function is provided for backward compatibility reasons.</p>
<p>   This function is not NUL-safe, and is byte-order dependant.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::hash'>hash()</ref>, <ref resolved='predef::hash_7_4'>hash_7_4()</ref></p>
</text></group></doc>
<method name='hash_7_0'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='hash_7_0'>
<arguments><argument name='s'><type><string/></type></argument><argument name='max'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='hash'><doc><text><p>Return an integer derived from the string <ref resolved='predef::hash.s'>s</ref>. The same string
   always hashes to the same value, also between processes,
   architectures, and Pike versions (see compatibility notes below,
   though).</p>
<p>   If <ref resolved='predef::hash.max'>max</ref> is given, the result will be &gt;= 0 and &lt; <ref resolved='predef::hash.max'>max</ref>,
   otherwise the result will be &gt;= 0 and &lt;= 0x7fffffff.</p>
</text><group><note/><text><p>The hash algorithm was changed in Pike 7.5. If you want a hash
   that is compatible with Pike 7.4 and earlier, use <ref resolved='predef::hash_7_4'>hash_7_4()</ref>.
   The difference only affects wide strings.</p>
<p>   The hash algorithm was also changed in Pike 7.1. If you want a hash
   that is compatible with Pike 7.0 and earlier, use <ref resolved='predef::hash_7_0'>hash_7_0()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::hash_7_0'>hash_7_0()</ref>, <ref resolved='predef::hash_7_4'>hash_7_4()</ref>, <ref resolved='predef::hash_value'>hash_value</ref></p>
</text></group></doc>
<method name='hash'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='hash'>
<arguments><argument name='s'><type><string/></type></argument><argument name='max'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='hash_value'><doc><text><p>Return a hash value for the argument. It's an integer in the
 native integer range.</p>
<p> The hash will be the same for the same value in the running
 process only (the memory address is typically used as the basis
 for the hash value).</p>
<p> If the value is an object with an <ref resolved='lfun::__hash'>lfun::__hash</ref>, that function
 is called and its result is returned.</p>
</text><group><note/><text><p>This is the hashing method used by mappings.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::hash'>hash</ref></p>
</text></group></doc>
<method name='hash_value'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='copy_value'><doc><text><p>Copy a value recursively.</p>
<p>   If the result value is changed destructively (only possible for
   multisets, arrays and mappings) the copied value will not be changed.</p>
<p>   The resulting value will always be equal to the copied (as tested with
   the function <ref resolved='predef::equal'>equal()</ref>), but they may not the the same value (as tested
   with <ref resolved='predef::`=='>`==()</ref>).</p>
</text><group><seealso/><text><p><ref resolved='predef::equal'>equal()</ref></p>
</text></group></doc>
<method name='copy_value'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='lower_case'><doc><text><p>Convert a string or character to lower case.</p>
</text><group><returns/><text><p>Returns a copy of the string <ref resolved='predef::lower_case.s'>s</ref> with all upper case characters
   converted to lower case, or the character <ref resolved='predef::lower_case.c'>c</ref> converted to lower
   case.</p>
</text></group><group><note/><text><p>Assumes the string or character to be coded according to
   ISO-10646 (aka Unicode). If they are not, <ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder</ref>
   can do the initial conversion for you.</p>
</text></group><group><note/><text><p>Prior to Pike 7.5 this function only accepted strings.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::upper_case'>upper_case()</ref>, <ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder</ref></p>
</text></group></doc>
<method name='lower_case'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='lower_case'>
<arguments><argument name='c'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='upper_case'><doc><text><p>Convert a string or character to upper case.</p>
</text><group><returns/><text><p>Returns a copy of the string <ref resolved='predef::upper_case.s'>s</ref> with all lower case characters
   converted to upper case, or the character <ref resolved='predef::upper_case.c'>c</ref> converted to upper
   case.</p>
</text></group><group><note/><text><p>Assumes the string or character to be coded according to
   ISO-10646 (aka Unicode). If they are not, <ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder</ref>
   can do the initial conversion for you.</p>
</text></group><group><note/><text><p>Prior to Pike 7.5 this function only accepted strings.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::lower_case'>lower_case()</ref>, <ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder</ref></p>
</text></group></doc>
<method name='upper_case'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='upper_case'>
<arguments><argument name='c'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='random_string'><doc><text><p>Returns a string of random characters 0-255 with the length <ref resolved='predef::random_string.len'>len</ref>.</p>
</text></doc>
<method name='random_string'>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='random_seed'><doc><text><p>This function sets the initial value for the random generator.</p>
</text><group><seealso/><text><p><ref resolved='predef::random'>random()</ref></p>
</text></group></doc>
<method name='random_seed'>
<arguments><argument name='seed'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='query_num_arg'><doc><text><p>Returns the number of arguments given when the previous function was
   called.</p>
<p>   This is useful for functions that take a variable number of arguments.</p>
</text><group><seealso/><text><p><ref resolved='predef::`()'>call_function()</ref></p>
</text></group></doc>
<method name='query_num_arg'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='search'><doc><text><p>Search for <ref resolved='predef::search.needle'>needle</ref> in <ref resolved='predef::search.haystack'>haystack</ref>. Return the position of <ref resolved='predef::search.needle'>needle</ref> in
   <ref resolved='predef::search.haystack'>haystack</ref> or <expr>-1</expr> if not found.</p>
<p>   If the optional argument <ref resolved='predef::search.start'>start</ref> is present search is started at
   this position.</p>
<mixed name='haystack'><group><type><string/></type><text><p>When <ref resolved='predef::search.haystack'>haystack</ref> is a string <ref resolved='predef::search.needle'>needle</ref> must be a string or an int,
       and the first occurrence of the string or int is returned.</p>
</text></group><group><type><array/></type><text><p>When <ref resolved='predef::search.haystack'>haystack</ref> is an array, <ref resolved='predef::search.needle'>needle</ref> is compared only to
       one value at a time in <ref resolved='predef::search.haystack'>haystack</ref>.</p>
</text></group><group><type><mapping/></type><text><p>When <ref resolved='predef::search.haystack'>haystack</ref> is a mapping, <ref resolved='predef::search'>search()</ref> tries to find the index
       connected to the data <ref resolved='predef::search.needle'>needle</ref>. That is, it tries to lookup the
       mapping backwards. If <ref resolved='predef::search.needle'>needle</ref> isn't present in the mapping, zero
       is returned, and zero_type() will return 1 for this zero.</p>
</text></group><group><type><object resolved='predef::search'/></type><text><p>When <ref resolved='predef::search.haystack'>haystack</ref> is an object implementing <ref resolved='lfun::_search'>lfun::_search()</ref>,
       the result of calling <ref resolved='lfun::_search'>lfun::_search()</ref> with <ref resolved='predef::search.needle'>needle</ref> will
       be returned.</p>
<p>       If <ref resolved='predef::search.haystack'>haystack</ref> is an object that doesn't implement <ref resolved='lfun::_search'>lfun::_search()</ref>
       it is assumed to be an <ref resolved='predef::Iterator'>Iterator</ref>, and implement
       <ref resolved='predef::Iterator.index'>Iterator()-&gt;index()</ref>, <ref resolved='predef::Iterator.value'>Iterator()-&gt;value()</ref>, and
       <ref resolved='predef::Iterator.next'>Iterator()-&gt;next()</ref>. <ref resolved='predef::search'>search()</ref> will then start comparing
       elements with <ref resolved='predef::`=='>`==()</ref> until a match with <ref resolved='predef::search.needle'>needle</ref> is found.
       If <ref resolved='predef::search.needle'>needle</ref> is found <ref resolved='predef::search.haystack'>haystack</ref> will be advanced to the element,
       and the iterator index will be returned. If <ref resolved='predef::search.needle'>needle</ref> is not
       found, <ref resolved='predef::search.haystack'>haystack</ref> will be advanced to the end (and will thus
       evaluate to false), and a zero with zero_type 1 will be returned.</p>
</text></group></mixed>
</text><group><note/><text><p>If <ref resolved='predef::search.start'>start</ref> is supplied to an iterator object without an
   <ref resolved='lfun::_search'>lfun::_search()</ref>, <ref resolved='predef::search.haystack'>haystack</ref> will need to implement
   <ref resolved='predef::Iterator.set_index'>Iterator()-&gt;set_index()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::indices'>indices()</ref>, <ref resolved='predef::values'>values()</ref>, <ref resolved='predef::zero_type'>zero_type()</ref></p>
</text></group></doc>
<method name='search'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='needle'><type><or><string/><int/></or></type></argument><argument name='start'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='search'>
<arguments><argument name='haystack'><type><array/></type></argument><argument name='needle'><type><mixed/></type></argument><argument name='start'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='search'>
<arguments><argument name='haystack'><type><mapping/></type></argument><argument name='needle'><type><mixed/></type></argument><argument name='start'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='search'>
<arguments><argument name='haystack'><type><object resolved='predef::search'/></type></argument><argument name='needle'><type><mixed/></type></argument><argument name='start'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='has_prefix'><doc><text><p>Returns <expr>1</expr> if the string <ref resolved='predef::has_prefix.s'>s</ref> starts with <ref resolved='predef::has_prefix.prefix'>prefix</ref>,
   returns <expr>0</expr> (zero) otherwise.</p>
</text></doc>
<method name='has_prefix'>
<arguments><argument name='s'><type><string/></type></argument><argument name='prefix'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='has_suffix'><doc><text><p>Returns <expr>1</expr> if the string <ref resolved='predef::has_suffix.s'>s</ref> ends with <ref resolved='predef::has_suffix.suffix'>suffix</ref>,
   returns <expr>0</expr> (zero) otherwise.</p>
</text></doc>
<method name='has_suffix'>
<arguments><argument name='s'><type><string/></type></argument><argument name='suffix'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='has_index'><doc><text><p>Search for <ref resolved='predef::has_index.index'>index</ref> in <ref resolved='predef::has_index.haystack'>haystack</ref>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if <ref resolved='predef::has_index.index'>index</ref> is in the index domain of <ref resolved='predef::has_index.haystack'>haystack</ref>,
   or <expr>0</expr> (zero) if not found.</p>
<p>   This function is equivalent to (but sometimes faster than):</p>
<code><text><p>search(indices(haystack), index) != -1</p>
</text></code>
</text></group><group><note/><text><p>A negative index in strings and arrays as recognized by the
   index operators <expr>`[]()</expr> and <expr>`[]=()</expr> is not considered
   a proper index by <ref resolved='predef::has_index'>has_index()</ref></p>
</text></group><group><seealso/><text><p><ref resolved='predef::has_value'>has_value()</ref>, <ref resolved='predef::indices'>indices()</ref>, <ref resolved='predef::search'>search()</ref>, <ref resolved='predef::values'>values()</ref>, <ref resolved='predef::zero_type'>zero_type()</ref></p>
</text></group></doc>
<method name='has_index'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='index'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='has_index'>
<arguments><argument name='haystack'><type><array/></type></argument><argument name='index'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='has_index'>
<arguments><argument name='haystack'><type><or><mapping/><multiset/><object resolved='predef::has_index'/><program/></or></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='has_value'><doc><text><p>Search for <ref resolved='predef::has_value.value'>value</ref> in <ref resolved='predef::has_value.haystack'>haystack</ref>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if <ref resolved='predef::has_value.value'>value</ref> is in the value domain of <ref resolved='predef::has_value.haystack'>haystack</ref>,
   or <expr>0</expr> (zero) if not found.</p>
<p>   This function is in all cases except when both arguments are strings
   equivalent to (but sometimes faster than):</p>
<code><text><p>search(values(<ref resolved='predef::has_value.haystack'>haystack</ref>), <ref resolved='predef::has_value.value'>value</ref>) != -1</p>
</text></code><p>If both arguments are strings, <ref resolved='predef::has_value'>has_value()</ref> is equivalent to:</p>
<code><text><p>search(<ref resolved='predef::has_value.haystack'>haystack</ref>, <ref resolved='predef::has_value.value'>value</ref>) != -1</p>
</text></code>
</text></group><group><seealso/><text><p><ref resolved='predef::has_index'>has_index()</ref>, <ref resolved='predef::indices'>indices()</ref>, <ref resolved='predef::search'>search()</ref>, <ref resolved='predef::values'>values()</ref>, <ref resolved='predef::zero_type'>zero_type()</ref></p>
</text></group></doc>
<method name='has_value'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='has_value'>
<arguments><argument name='haystack'><type><string/></type></argument><argument name='value'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='has_value'>
<arguments><argument name='haystack'><type><or><array/><mapping/><object resolved='predef::has_value'/><program/></or></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='add_constant'><doc><text><p>Add a new predefined constant.</p>
<p>   This function is often used to add builtin functions.
   All programs compiled after the <ref resolved='predef::add_constant'>add_constant()</ref> function has been
   called can access <ref resolved='predef::add_constant.value'>value</ref> by the name <ref resolved='predef::add_constant.name'>name</ref>.</p>
<p>   If there is a constant called <ref resolved='predef::add_constant.name'>name</ref> already, it will be replaced by
   by the new definition. This will not affect already compiled programs.</p>
<p>   Calling <ref resolved='predef::add_constant'>add_constant()</ref> without a value will remove that name from
   the list of constants. As with replacing, this will not affect already
   compiled programs.</p>
</text><group><seealso/><text><p><ref resolved='predef::all_constants'>all_constants()</ref></p>
</text></group></doc>
<method name='add_constant'>
<arguments><argument name='name'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='add_constant'>
<arguments><argument name='name'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p>Concatenate a relative path to an absolute path and remove any
   <expr>"//"</expr>, <expr>"/.."</expr> or <expr>"/."</expr> to produce a
   straightforward absolute path as result.</p>
<p>   <ref resolved='predef::combine_path'>combine_path_nt()</ref> concatenates according to NT-filesystem conventions,
   while <ref resolved='predef::combine_path'>combine_path_unix()</ref> concatenates according to UNIX-style.
   <ref resolved='predef::combine_path'>combine_path_amigaos()</ref> concatenates according to AmigaOS filesystem
   conventions.</p>
<p>   <ref resolved='predef::combine_path'>combine_path()</ref> is equvivalent to <ref resolved='predef::combine_path'>combine_path_unix()</ref> on UNIX-like
   operating systems, and equivalent to <ref resolved='predef::combine_path'>combine_path_nt()</ref> on NT-like
   operating systems, and equivalent to <ref resolved='predef::combine_path'>combine_path_amigaos()</ref> on
   AmigaOS-like operating systems.</p>
</text><group><seealso/><text><p><ref resolved='predef::getcwd'>getcwd()</ref>, <ref resolved='predef::Stdio.append_path'>Stdio.append_path()</ref></p>
</text></group></doc>
<method name='combine_path'>
<arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='combine_path_unix'>
<arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='combine_path_nt'>
<arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='combine_path_amigaos'>
<arguments><argument name='absolute'><type><string/></type></argument><argument name='relative'><type><varargs><string/></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='zero_type'><doc><text><p>Return the type of zero.</p>
<p>   There are many types of zeros out there, or at least there are two.
   One is returned by normal functions, and one returned by mapping
   lookups and <ref resolved='predef::call_out'>find_call_out()</ref> when what you looked for wasn't there.
   The only way to separate these two kinds of zeros is <ref resolved='predef::zero_type'>zero_type()</ref>.</p>
</text><group><returns/><text><p>When doing a <ref resolved='predef::call_out'>find_call_out()</ref> or mapping lookup, <ref resolved='predef::zero_type'>zero_type()</ref> on
   this value will return <expr>1</expr> if there was no such thing present in
   the mapping, or if no such <tt>call_out</tt> could be found.</p>
<p>   If the argument to <ref resolved='predef::zero_type'>zero_type()</ref> is a destructed object or a function
   in a destructed object, <expr>2</expr> will be returned.</p>
<p>   In all other cases <ref resolved='predef::zero_type'>zero_type()</ref> will return <expr>0</expr> (zero).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::call_out'>find_call_out()</ref></p>
</text></group></doc>
<method name='zero_type'>
<arguments><argument name='a'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='string_to_unicode'><doc><text><p>Converts a string into an UTF16 compliant byte-stream.</p>
</text><group><note/><text><p>Throws an error if characters not legal in an UTF16 stream are
   encountered. Valid characters are in the range 0x00000 - 0x10ffff,
   except for characters 0xfffe and 0xffff.</p>
<p>   Characters in range 0x010000 - 0x10ffff are encoded using surrogates.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder()</ref>, <ref resolved='predef::string_to_utf8'>string_to_utf8()</ref>, <ref resolved='predef::unicode_to_string'>unicode_to_string()</ref>,
   <ref resolved='predef::utf8_to_string'>utf8_to_string()</ref></p>
</text></group></doc>
<method name='string_to_unicode'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='unicode_to_string'><doc><text><p>Converts an UTF16 byte-stream into a string.</p>
</text><group><note/><text><p>This function did not decode surrogates in Pike 7.2 and earlier.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Charset.decoder'>Locale.Charset.decoder()</ref>, <ref resolved='predef::string_to_unicode'>string_to_unicode()</ref>, <ref resolved='predef::string_to_utf8'>string_to_utf8()</ref>,
   <ref resolved='predef::utf8_to_string'>utf8_to_string()</ref></p>
</text></group></doc>
<method name='unicode_to_string'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='string_to_utf8'><doc><text><p>Converts a string into an UTF8 compliant byte-stream.</p>
</text><group><note/><text><p>Throws an error if characters not valid in an UTF8 stream are
   encountered. Valid characters are in the range 0x00000000 - 0x7fffffff.</p>
<p>   If <ref resolved='predef::string_to_utf8.extended'>extended</ref> is 1, characters in the range 0x80000000-0xfffffffff
   will also be accepted, and encoded using a non-standard UTF8 extension.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Charset.encoder'>Locale.Charset.encoder()</ref>, <ref resolved='predef::string_to_unicode'>string_to_unicode()</ref>,
   <ref resolved='predef::unicode_to_string'>unicode_to_string()</ref>, <ref resolved='predef::utf8_to_string'>utf8_to_string()</ref></p>
</text></group></doc>
<method name='string_to_utf8'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='string_to_utf8'>
<arguments><argument name='s'><type><string/></type></argument><argument name='extended'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='utf8_to_string'><doc><text><p>Converts an UTF-8 byte-stream into a string.</p>
</text><group><note/><text><p>Throws an error if the stream is not a legal UTF-8 byte-stream.</p>
<p>   Accepts and decodes the extension used by <ref resolved='predef::string_to_utf8'>string_to_utf8()</ref>, if
   <ref resolved='predef::utf8_to_string.extended'>extended</ref> is <expr>1</expr>.</p>
</text></group><group><note/><text><p>In conformance with RFC 3629 and Unicode 3.1 and later,
   non-shortest forms are not decoded. An error will be thrown
   instead.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Locale.Charset.encoder'>Locale.Charset.encoder()</ref>, <ref resolved='predef::string_to_unicode'>string_to_unicode()</ref>, <ref resolved='predef::string_to_utf8'>string_to_utf8()</ref>,
   <ref resolved='predef::unicode_to_string'>unicode_to_string()</ref></p>
</text></group></doc>
<method name='utf8_to_string'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='utf8_to_string'>
<arguments><argument name='s'><type><string/></type></argument><argument name='extended'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='__parse_pike_type'><doc/>
<method name='__parse_pike_type'>
<arguments><argument name='t'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='all_constants'><doc><text><p>Returns a mapping containing all global constants, indexed on the name
   of the constant, and with the value of the constant as value.</p>
</text><group><seealso/><text><p><ref resolved='predef::add_constant'>add_constant()</ref></p>
</text></group></doc>
<method name='all_constants'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><mixed/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='allocate'><doc><text><p>Allocate an array of <ref resolved='predef::allocate.size'>size</ref> elements. If <ref resolved='predef::allocate.init'>init</ref> is specified
   then each element is initialized by copying that value
   recursively.</p>
</text><group><seealso/><text><p><ref resolved='predef::sizeof'>sizeof()</ref>, <ref resolved='predef::aggregate'>aggregate()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref></p>
</text></group></doc>
<method name='allocate'>
<arguments><argument name='size'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='allocate'>
<arguments><argument name='size'><type><int/></type></argument><argument name='init'><type><mixed/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='this_object'><doc><text><p>Returns the object we are currently evaluating in.</p>
<p>   <ref resolved='predef::this_object.level'>level</ref> might be used to access the object of a surrounding
   class: The object at level 0 is the current object, the object
   at level 1 is the one belonging to the class that surrounds
   the class that the object comes from, and so on.</p>
</text><group><note/><text><p>As opposed to a qualified <expr>this</expr> reference such as
   <expr>global::this</expr>, this function doesn't always access the
   objects belonging to the lexically surrounding classes. If the
   class containing the call has been inherited then the objects
   surrounding the inheriting class are accessed.</p>
</text></group></doc>
<method name='this_object'>
<arguments><argument name='level'><type><or><void/><int/></or></type></argument></arguments>
<returntype><object resolved='predef::this_object'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='throw'><doc><text><p>Throw <ref resolved='predef::throw.value'>value</ref> to a waiting <ref>catch</ref>.</p>
<p>   If no <ref>catch</ref> is waiting the global error handling will send the
   value to <ref resolved='predef::master.handle_error'>master()-&gt;handle_error()</ref>.</p>
<p>   If you throw an array with where the first index contains an error
   message and the second index is a backtrace, (the output from
   <ref resolved='predef::backtrace'>backtrace()</ref>) then it will be treated exactly like a real error
   by overlying functions.</p>
</text><group><seealso/><text><p><ref>catch</ref></p>
</text></group></doc>
<method name='throw'>
<arguments><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='exit'><doc><text><p>Exit the whole Pike program with the given <ref resolved='predef::exit.returncode'>returncode</ref>.</p>
<p>   Using <ref resolved='predef::exit'>exit()</ref> with any other value than <expr>0</expr> (zero) indicates
   that something went wrong during execution. See your system manuals
   for more information about return codes.</p>
<p>   The arguments after the <ref resolved='predef::exit.returncode'>returncode</ref> will be used for a call to
   <ref resolved='predef::werror'>werror</ref> to output a message on stderr.</p>
</text><group><seealso/><text><p><ref resolved='predef::_exit'>_exit()</ref></p>
</text></group></doc>
<method name='exit'>
<arguments><argument name='returncode'><type><int/></type></argument><argument name='fmt'><type><or><void/><string/></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_exit'><doc><text><p>This function does the same as <ref resolved='predef::exit'>exit</ref>, but doesn't bother to clean
   up the Pike interpreter before exiting. This means that no destructors
   will be called, caches will not be flushed, file locks might not be
   released, and databases might not be closed properly.</p>
<p>   Use with extreme caution.</p>
</text><group><seealso/><text><p><ref resolved='predef::exit'>exit()</ref></p>
</text></group></doc>
<method name='_exit'>
<arguments><argument name='returncode'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='time'><doc><text><p>This function returns the number of seconds since 00:00:00 UTC, 1 Jan 1970.</p>
<p>   The second syntax does not query the system for the current
   time. Instead the latest done by the pike process is returned
   again. That's slightly faster but can be wildly inaccurate. Pike
   queries the time internally when a thread has waited for
   something, typically in <ref resolved='predef::sleep'>sleep</ref> or in a backend (see
   <ref resolved='predef::Pike.Backend'>Pike.Backend</ref>).</p>
<p>   The third syntax can be used to measure time more preciely than one
   second. It return how many seconds has passed since <ref resolved='predef::time.t'>t</ref>. The precision
   of this function varies from system to system.</p>
</text><group><seealso/><text><p><ref resolved='predef::ctime'>ctime()</ref>, <ref resolved='predef::localtime'>localtime()</ref>, <ref resolved='predef::mktime'>mktime()</ref>, <ref resolved='predef::gmtime'>gmtime()</ref>,
   <ref resolved='predef::System.gettimeofday'>System.gettimeofday</ref>, <ref resolved='predef::gethrtime'>gethrtime</ref></p>
</text></group></doc>
<method name='time'>
<arguments/>
<returntype><int/></returntype>
</method>
<method name='time'>
<arguments><argument name='one'><type><int><min>1</min><max>1</max></int></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='time'>
<arguments><argument name='t'><type><int><min>2</min><max/></int></type></argument></arguments>
<returntype><float/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='crypt'><doc><text><p>This function crypts and verifies a short string (only the first
   8 characters are significant).</p>
<p>   The first syntax crypts the string <ref resolved='predef::crypt.password'>password</ref> into something that
   is hopefully hard to decrypt.</p>
<p>   The second syntax is used to verify <ref resolved='predef::crypt.typed_password'>typed_password</ref> against
   <ref resolved='predef::crypt.crypted_password'>crypted_password</ref>, and returns <expr>1</expr> if they match, and
   <expr>0</expr> (zero) otherwise.</p>
</text></doc>
<method name='crypt'>
<arguments><argument name='password'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='crypt'>
<arguments><argument name='typed_password'><type><string/></type></argument><argument name='crypted_password'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='destruct'><doc><text><p>Mark an object as destructed.</p>
<p>   Calls <expr>o-&gt;destroy()</expr>, and then clears all variables in the
   object. If no argument is given, the current object is destructed.</p>
<p>   All pointers and function pointers to this object will become zero.
   The destructed object will be freed from memory as soon as possible.</p>
</text></doc>
<method name='destruct'>
<arguments><argument name='o'><type><or><void/><object resolved='predef::destruct'/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='indices'><doc><text><p>Return an array of all valid indices for the value <ref resolved='predef::indices.x'>x</ref>.</p>
<p>   For strings and arrays this is simply an array of ascending numbers.</p>
<p>   For mappings and multisets, the array may contain any value.</p>
<p>   For objects which define <ref resolved='lfun::_indices'>lfun::_indices()</ref> that return value will be used.</p>
<p>   For other objects an array with all non-static symbols will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::values'>values()</ref></p>
</text></group></doc>
<method name='indices'>
<arguments><argument name='x'><type><or><string/><array/><mapping/><multiset/><object resolved='predef::indices'/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='values'><doc><text><p>Return an array of all possible values from indexing the value <ref resolved='predef::values.x'>x</ref>.</p>
<p>   For strings an array of int with the ISO10646 codes of the characters in
   the string is returned.</p>
<p>   For a multiset an array filled with ones (<expr>1</expr>) is returned.</p>
<p>   For arrays a single-level copy of <ref resolved='predef::values.x'>x</ref> is returned.</p>
<p>   For mappings the array may contain any value.</p>
<p>   For objects which define <ref resolved='lfun::_values'>lfun::_values()</ref> that return value will be used.</p>
<p>   For other objects an array with the values of all non-static symbols
   will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::indices'>indices()</ref></p>
</text></group></doc>
<method name='values'>
<arguments><argument name='x'><type><or><string/><array/><mapping/><multiset/><object resolved='predef::values'/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='next_object'><doc><text><p>Returns the next object from the list of all objects.</p>
<p>   All objects are stored in a linked list.</p>
</text><group><returns/><text><p>If no arguments have been given <ref resolved='predef::next_object'>next_object()</ref> will return the first
   object from the list.</p>
<p>   If <ref resolved='predef::next_object.o'>o</ref> has been specified the object after <ref resolved='predef::next_object.o'>o</ref> on the list will be
   returned.</p>
</text></group><group><note/><text><p>This function is not recomended to use.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::destruct'>destruct()</ref></p>
</text></group></doc>
<method name='next_object'>
<arguments><argument name='o'><type><object resolved='predef::next_object'/></type></argument></arguments>
<returntype><object resolved='predef::next_object'/></returntype>
</method>
<method name='next_object'>
<arguments/>
<returntype><object resolved='predef::next_object'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='object_program'><doc><text><p>Return the program from which <ref resolved='predef::object_program.o'>o</ref> was instantiated. If the
   object was instantiated from a class using parent references
   the generating function will be returned.</p>
<p>   If <ref resolved='predef::object_program.o'>o</ref> is not an object or has been destructed <expr>0</expr> (zero)
   will be returned.</p>
</text></doc>
<method name='object_program'>
<arguments><argument name='o'><type><mixed/></type></argument></arguments>
<returntype><or><program/><function/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='reverse'><doc><text><p>Reverses a string, array or int.</p>
<p>   This function reverses a string, char by char, an array, value
   by value or an int, bit by bit and returns the result. It's not
   destructive on the input value.</p>
<p>   Reversing strings can be particularly useful for parsing difficult
   syntaxes which require scanning backwards.</p>
</text><group><seealso/><text><p><ref resolved='predef::sscanf'>sscanf()</ref></p>
</text></group></doc>
<method name='reverse'>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='reverse'>
<arguments><argument name='a'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='reverse'>
<arguments><argument name='i'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='replace'><doc><text><p>Generic replace function.</p>
<p>   This function can do several kinds replacement operations, the
   different syntaxes do different things as follows:</p>
<p>   If all the arguments are strings, a copy of <ref resolved='predef::replace.s'>s</ref> with every
   occurrence of <ref resolved='predef::replace.from'>from</ref> replaced with <ref resolved='predef::replace.to'>to</ref> will be returned.
   Special case: <ref resolved='predef::replace.to'>to</ref> will be inserted between every character in
   <ref resolved='predef::replace.s'>s</ref> if <ref resolved='predef::replace.from'>from</ref> is the empty string.</p>
<p>   If the first argument is a string, and the others array(string), a string
   with every occurrance of <ref resolved='predef::replace.from'>from</ref>[<i>i</i>] in <ref resolved='predef::replace.s'>s</ref> replaced with
   <ref resolved='predef::replace.to'>to</ref>[<i>i</i>] will be returned. Instead of the arrays <ref resolved='predef::replace.from'>from</ref> and <ref resolved='predef::replace.to'>to</ref>
   a mapping equvivalent to <expr><ref resolved='predef::mkmapping'>mkmapping</ref>(<ref resolved='predef::replace.from'>from</ref>, <ref resolved='predef::replace.to'>to</ref>)</expr> can be
   used.</p>
<p>   If the first argument is an array or mapping, the values of <ref resolved='predef::replace.a'>a</ref> which
   are <ref resolved='predef::`=='>`==()</ref> with <ref resolved='predef::replace.from'>from</ref> will be replaced with <ref resolved='predef::replace.to'>to</ref> destructively.
   <ref resolved='predef::replace.a'>a</ref> will then be returned.</p>
</text><group><note/><text><p>Note that <ref resolved='predef::replace'>replace()</ref> on arrays and mappings is a destructive operation.</p>
</text></group></doc>
<method name='replace'>
<arguments><argument name='s'><type><string/></type></argument><argument name='from'><type><string/></type></argument><argument name='to'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='replace'>
<arguments><argument name='s'><type><string/></type></argument><argument name='from'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='to'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='replace'>
<arguments><argument name='s'><type><string/></type></argument><argument name='replacements'><type><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='replace'>
<arguments><argument name='a'><type><array/></type></argument><argument name='from'><type><mixed/></type></argument><argument name='to'><type><mixed/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='replace'>
<arguments><argument name='a'><type><mapping/></type></argument><argument name='from'><type><mixed/></type></argument><argument name='to'><type><mixed/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='compile'><doc><text><p>Compile a string to a program.</p>
<p>   This function takes a piece of Pike code as a string and
   compiles it into a clonable program.</p>
<p>   The optional argument <ref resolved='predef::compile.handler'>handler</ref> is used to specify an alternative
   error handler. If it is not specified the current master object will
   be used.</p>
<p>   The optional arguments <ref resolved='predef::compile.major'>major</ref> and <ref resolved='predef::compile.minor'>minor</ref> are used to tell the
   compiler to attempt to be compatible with Pike <ref resolved='predef::compile.major'>major</ref>.<ref resolved='predef::compile.minor'>minor</ref>.</p>
</text><group><note/><text><p>Note that <ref resolved='predef::compile.source'>source</ref> must contain the complete source for a program.
   It is not possible to compile a single expression or statement.</p>
<p>   Also note that <ref resolved='predef::compile'>compile()</ref> does not preprocess the program.
   To preprocess the program you can use <ref resolved='predef::compile_string'>compile_string()</ref> or
   call the preprocessor manually by calling <ref resolved='predef::cpp'>cpp()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref>, <ref resolved='predef::cpp'>cpp()</ref>, <ref resolved='predef::master'>master()</ref></p>
</text></group></doc>
<method name='compile'>
<arguments><argument name='source'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::compile'/><void/></or></type></argument><argument name='major'><type><or><int/><void/></or></type></argument><argument name='minor'><type><or><int/><void/></or></type></argument><argument name='target'><type><or><program/><void/></or></type></argument><argument name='placeholder'><type><or><object resolved='predef::compile'/><void/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_weak_flag'><doc><text><p>Set the value <ref resolved='predef::set_weak_flag.m'>m</ref> to use weak or normal references in its
   indices and/or values (whatever is applicable). <ref resolved='predef::set_weak_flag.state'>state</ref> is a
   bitfield built by using <expr>|</expr> between the following flags:</p>
<int><group><value>Pike.WEAK_INDICES</value><text><p>Use weak references for indices. Only applicable for
   	  multisets and mappings.</p>
</text></group><group><value>Pike.WEAK_VALUES</value><text><p>Use weak references for values. Only applicable for arrays
   	  and mappings.</p>
</text></group><group><value>Pike.WEAK</value><text><p>Shorthand for <expr>Pike.WEAK_INDICES|Pike.WEAK_VALUES</expr>.</p>
</text></group></int><p>If a flag is absent, the corresponding field will use normal
   references. <ref resolved='predef::set_weak_flag.state'>state</ref> can also be <expr>1</expr> as a compatibility
   measure; it's treated like <ref resolved='predef::Pike.WEAK'>Pike.WEAK</ref>.</p>
</text><group><returns/><text><p><ref resolved='predef::set_weak_flag.m'>m</ref> will be returned.</p>
</text></group></doc>
<method name='set_weak_flag'>
<arguments><argument name='m'><type><or><array/><mapping/><multiset/></or></type></argument><argument name='state'><type><int/></type></argument></arguments>
<returntype><or><array/><mapping/><multiset/></or></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='objectp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::objectp.arg'>arg</ref> is an object, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::functionp'>functionp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::intp'>intp()</ref></p>
</text></group></doc>
<method name='objectp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='functionp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::functionp.arg'>arg</ref> is a function, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::intp'>intp()</ref></p>
</text></group></doc>
<method name='functionp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='callablep'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::callablep.arg'>arg</ref> is a callable, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::intp'>intp()</ref></p>
</text></group></doc>
<method name='callablep'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sleep'><doc><text><p>This function makes the program stop for <ref resolved='predef::sleep.s'>s</ref> seconds.</p>
<p>   Only signal handlers can interrupt the sleep, and only when
   <ref resolved='predef::sleep.abort_on_signal'>abort_on_signal</ref> is set. If more than one thread is running
   the signal must be sent to the sleeping thread. Other callbacks
   are not called during sleep.</p>
<p>   If <ref resolved='predef::sleep.s'>s</ref> is zero then this thread will yield to other threads but
   not sleep otherwise. Note that Pike yields internally at regular
   intervals so it's normally not necessary to do this.</p>
</text><group><seealso/><text><p><ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::delay'>delay()</ref></p>
</text></group></doc>
<method name='sleep'>
<arguments><argument name='s'><type><or><int/><float/></or></type></argument><argument name='abort_on_signal'><type><or><void/><int/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='delay'><doc><text><p>This function makes the program stop for <ref resolved='predef::delay.s'>s</ref> seconds.</p>
<p>   Only signal handlers can interrupt the sleep. Other callbacks are
   not called during delay. Beware that this function uses busy-waiting
   to achieve the highest possible accuracy.</p>
</text><group><seealso/><text><p><ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::sleep'>sleep()</ref></p>
</text></group></doc>
<method name='delay'>
<arguments><argument name='s'><type><or><int/><float/></or></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gc'><doc><text><p>Force garbage collection.</p>
<p>   This function checks all the memory for cyclic structures such
   as arrays containing themselves and frees them if appropriate.
   It also frees up destructed objects and things with only weak
   references.</p>
<p>   Normally there is no need to call this function since Pike will
   call it by itself every now and then. (Pike will try to predict
   when 20% of all arrays/object/programs in memory is 'garbage'
   and call this routine then.)</p>
</text><group><returns/><text><p>The amount of garbage is returned. This is the number of arrays,
   mappings, multisets, objects and programs that had no nonweak
   external references during the garbage collection. It's normally
   the same as the number of freed things, but there might be some
   difference since destroy() functions are called during freeing,
   which can cause more things to be freed or allocated.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Pike.gc_parameters'>Pike.gc_parameters</ref>, <ref resolved='predef::Debug.gc_status'>Debug.gc_status</ref></p>
</text></group></doc>
<method name='gc'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='programp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::programp.arg'>arg</ref> is a program, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='programp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='intp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::intp.arg'>arg</ref> is an int, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='intp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mappingp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::mappingp.arg'>arg</ref> is a mapping, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='mappingp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='arrayp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::arrayp.arg'>arg</ref> is an array, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='arrayp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='multisetp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::multisetp.arg'>arg</ref> is a multiset, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='multisetp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='stringp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::stringp.arg'>arg</ref> is a string, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::floatp'>floatp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='stringp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='floatp'><doc><text><p>Returns <expr>1</expr> if <ref resolved='predef::floatp.arg'>arg</ref> is a float, <expr>0</expr> (zero) otherwise.</p>
</text><group><seealso/><text><p><ref resolved='predef::intp'>intp()</ref>, <ref resolved='predef::programp'>programp()</ref>, <ref resolved='predef::arrayp'>arrayp()</ref>, <ref resolved='predef::multisetp'>multisetp()</ref>, <ref resolved='predef::objectp'>objectp()</ref>,
   <ref resolved='predef::mappingp'>mappingp()</ref>, <ref resolved='predef::stringp'>stringp()</ref>, <ref resolved='predef::functionp'>functionp()</ref></p>
</text></group></doc>
<method name='floatp'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sort'><doc><text><p>Sort arrays destructively.</p>
<p>   This function sorts the array <ref resolved='predef::sort.index'>index</ref> destructively. That means
   that the array itself is changed and returned, no copy is created.</p>
<p>   If extra arguments are given, they are supposed to be arrays of the
   same size as <ref resolved='predef::sort.index'>index</ref>. Each of these arrays will be modified in the
   same way as <ref resolved='predef::sort.index'>index</ref>. I.e. if index 3 is moved to position 0 in <ref resolved='predef::sort.index'>index</ref>
   index 3 will be moved to position 0 in all the other arrays as well.</p>
<p>   The sort order is as follows:</p>
<ul><group><item/><text><p>Integers and floats are sorted in ascending order.</p>
</text></group><group><item/><text><p>Strings are sorted primarily on the first characters that are
     different, and secondarily with shorter strings before longer.
     Different characters are sorted in ascending order on the
     character value. Thus the sort order is not locale dependent.</p>
</text></group><group><item/><text><p>Arrays are sorted recursively on the first element. Empty
     arrays are sorted before nonempty ones.</p>
</text></group><group><item/><text><p>Multisets are sorted recursively on the first index. Empty
     multisets are sorted before nonempty ones.</p>
</text></group><group><item/><text><p>Objects are sorted in ascending order according to <ref resolved='predef::`&lt;'>`&lt;()</ref>,
     <ref resolved='predef::`&gt;'>`&gt;()</ref> and <ref resolved='predef::`=='>`==()</ref>.</p>
</text></group><group><item/><text><p>Other types aren't reordered.</p>
</text></group><group><item/><text><p>Different types are sorted in this order: Arrays, mappings,
     multisets, objects, functions, programs, strings, types,
     integers and floats. Note however that objects can control
     their ordering wrt other types with <ref resolved='predef::`&lt;'>`&lt;</ref>, <ref resolved='predef::`&gt;'>`&gt;</ref> and <ref resolved='predef::`=='>`==</ref>,
     so this ordering of types only applies to objects without
     those functions.</p>
</text></group></ul>
</text><group><returns/><text><p>The first argument is returned.</p>
</text></group><group><note/><text><p>The sort is stable, i.e. elements that are compare-wise equal
   aren't reordered.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Array.sort_array'>Array.sort_array</ref>, <ref resolved='predef::reverse'>reverse()</ref></p>
</text></group></doc>
<method name='sort'>
<arguments><argument name='index'><type><array><valuetype><mixed/></valuetype></array></type></argument><argument name='data'><type><varargs><array><valuetype><mixed/></valuetype></array></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='rows'><doc><text><p>Select a set of rows from an array.</p>
<p>   This function is en optimized equivalent to:</p>
<code><text><p>map(<ref resolved='predef::rows.index'>index</ref>, lambda(mixed x) { return <ref resolved='predef::rows.data'>data</ref>[x]; })</p>
</text></code><p>That is, it indices data on every index in the array index and
   returns an array with the results.</p>
</text><group><seealso/><text><p><ref resolved='predef::column'>column()</ref></p>
</text></group></doc>
<method name='rows'>
<arguments><argument name='data'><type><mixed/></type></argument><argument name='index'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>





<docgroup homogen-type='method' homogen-name='gmtime'><doc><text><p>Convert seconds since 00:00:00 UTC, Jan 1, 1970 into components.</p>
<p>   This function works like <ref resolved='predef::localtime'>localtime()</ref> but the result is
   not adjusted for the local time zone.</p>
</text><group><seealso/><text><p><ref resolved='predef::localtime'>localtime()</ref>, <ref resolved='predef::time'>time()</ref>, <ref resolved='predef::ctime'>ctime()</ref>, <ref resolved='predef::mktime'>mktime()</ref></p>
</text></group></doc>
<method name='gmtime'>
<arguments><argument name='timestamp'><type><int/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='localtime'><doc><text><p>Convert seconds since 00:00:00 UTC, 1 Jan 1970 into components.</p>
</text><group><returns/><text><p>This function returns a mapping with the following components:</p>
<mapping><group><member><type><int><min>0</min><max>60</max></int></type><index>"sec"</index></member><text><p>Seconds over the minute.</p>
</text></group><group><member><type><int><min>0</min><max>59</max></int></type><index>"min"</index></member><text><p>Minutes over the hour.</p>
</text></group><group><member><type><int><min>0</min><max>23</max></int></type><index>"hour"</index></member><text><p>Hour of the day.</p>
</text></group><group><member><type><int><min>1</min><max>31</max></int></type><index>"mday"</index></member><text><p>Day of the month.</p>
</text></group><group><member><type><int><min>0</min><max>11</max></int></type><index>"mon"</index></member><text><p>Month of the year.</p>
</text></group><group><member><type><int><min>0</min><max/></int></type><index>"year"</index></member><text><p>Year since 1900.</p>
</text></group><group><member><type><int><min>0</min><max>6</max></int></type><index>"wday"</index></member><text><p>Day of week (0 = Sunday).</p>
</text></group><group><member><type><int><min>0</min><max>365</max></int></type><index>"yday"</index></member><text><p>Day of the year.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"isdst"</index></member><text><p>Is daylight savings time.</p>
</text></group><group><member><type><int/></type><index>"timezone"</index></member><text><p>Offset from UTC, including daylight savings time adjustment.</p>
</text></group></mapping><p>An error is thrown if the localtime(2) call failed on the system.
 It's platform dependent what time ranges that function can handle,
 e.g. Windows doesn't handle a negative <ref resolved='predef::localtime.timestamp'>timestamp</ref>.</p>
</text></group><group><note/><text><p>Prior to Pike 7.5 the field <expr>"timezone"</expr> was sometimes not
   present, and was sometimes not adjusted for daylight savings time.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Calendar'>Calendar</ref>, <ref resolved='predef::gmtime'>gmtime()</ref>, <ref resolved='predef::time'>time()</ref>, <ref resolved='predef::ctime'>ctime()</ref>, <ref resolved='predef::mktime'>mktime()</ref></p>
</text></group></doc>
<method name='localtime'>
<arguments><argument name='timestamp'><type><int/></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='mktime'><doc><text><p>This function converts information about date and time into an integer
   which contains the number of seconds since 00:00:00 UTC, Jan 1, 1970.</p>
<p>   You can either call this function with a mapping containing the
   following elements:</p>
<mapping><group><member><type><int><min>0</min><max>60</max></int></type><index>"sec"</index></member><text><p>Seconds over the minute.</p>
</text></group><group><member><type><int><min>0</min><max>59</max></int></type><index>"min"</index></member><text><p>Minutes over the hour.</p>
</text></group><group><member><type><int><min>0</min><max>23</max></int></type><index>"hour"</index></member><text><p>Hour of the day.</p>
</text></group><group><member><type><int><min>1</min><max>31</max></int></type><index>"mday"</index></member><text><p>Day of the month.</p>
</text></group><group><member><type><int><min>0</min><max>11</max></int></type><index>"mon"</index></member><text><p>Month of the year.</p>
</text></group><group><member><type><int><min>0</min><max/></int></type><index>"year"</index></member><text><p>Year since 1900.</p>
</text></group><group><member><type><int><min>0</min><max>1</max></int></type><index>"isdst"</index></member><text><p>Is daylight savings time.</p>
</text></group><group><member><type><int/></type><index>"timezone"</index></member><text><p>The timezone offset from UTC in seconds. If left out, the time
       will be calculated in the local timezone.</p>
</text></group></mapping><p>Or you can just send them all on one line as the second syntax suggests.</p>
</text><group><note/><text><p>On some operating systems (notably AIX), dates before 00:00:00
   UTC, Jan 1, 1970 are not supported.</p>
<p>   On most systems, the supported range of dates are Dec 13, 1901
   20:45:52 UTC through Jan 19, 2038 03:14:07 UTC (inclusive).</p>
</text></group><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::ctime'>ctime()</ref>, <ref resolved='predef::localtime'>localtime()</ref>, <ref resolved='predef::gmtime'>gmtime()</ref></p>
</text></group></doc>
<method name='mktime'>
<arguments><argument name='tm'><type><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='mktime'>
<arguments><argument name='sec'><type><int/></type></argument><argument name='min'><type><int/></type></argument><argument name='hour'><type><int/></type></argument><argument name='mday'><type><int/></type></argument><argument name='mon'><type><int/></type></argument><argument name='year'><type><int/></type></argument><argument name='isdst'><type><or><int/><void/></or></type></argument><argument name='tz'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='glob'><doc><text><p>Match strings against globs.</p>
<p>   In a glob string a question sign matches any character and
   an asterisk matches any string.</p>
<p>   When the second argument is a string and <ref resolved='predef::glob.str'>str</ref> matches
   the glob <ref resolved='predef::glob.glob'>glob</ref> <expr>1</expr> will be returned, <expr>0</expr> (zero) otherwise.</p>
<p>   If the second array is an array and array containing the strings in
   <ref resolved='predef::glob.arr'>arr</ref> that match <ref resolved='predef::glob.glob'>glob</ref> will be returned.</p>
</text><group><seealso/><text><p><ref resolved='predef::sscanf'>sscanf()</ref>, <ref resolved='predef::Regexp'>Regexp</ref></p>
</text></group></doc>
<method name='glob'>
<arguments><argument name='glob'><type><string/></type></argument><argument name='str'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='glob'>
<arguments><argument name='glob'><type><string/></type></argument><argument name='arr'><type><array><valuetype><string/></valuetype></array></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>

<docgroup homogen-type='method' homogen-name='_next'><doc><text><p>Find the next object/array/mapping/multiset/program or string.</p>
<p>   All objects, arrays, mappings, multisets, programs and strings are
   stored in linked lists inside Pike. This function returns the next
   item on the corresponding list. It is mainly meant for debugging
   the Pike runtime, but can also be used to control memory usage.</p>
</text><group><seealso/><text><p><ref resolved='predef::next_object'>next_object()</ref>, <ref resolved='predef::_prev'>_prev()</ref></p>
</text></group></doc>
<method name='_next'>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_prev'><doc><text><p>Find the previous object/array/mapping/multiset or program.</p>
<p>   All objects, arrays, mappings, multisets and programs are
   stored in linked lists inside Pike. This function returns the previous
   item on the corresponding list. It is mainly meant for debugging
   the Pike runtime, but can also be used to control memory usage.</p>
</text><group><note/><text><p>Unlike <ref resolved='predef::_next'>_next()</ref> this function does not work on strings.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::next_object'>next_object()</ref>, <ref resolved='predef::_next'>_next()</ref></p>
</text></group></doc>
<method name='_prev'>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_refs'><doc><text><p>Return the number of references <ref resolved='predef::_refs.o'>o</ref> has.</p>
<p>   It is mainly meant for debugging the Pike runtime, but can also be
   used to control memory usage.</p>
</text><group><note/><text><p>Note that the number of references will always be at least one since
   the value is located on the stack when this function is executed.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::_next'>_next()</ref>, <ref resolved='predef::_prev'>_prev()</ref></p>
</text></group></doc>
<method name='_refs'>
<arguments><argument name='o'><type><or><string/><array/><mapping/><multiset/><function/><object resolved='predef::_refs'/><program/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='_typeof'><doc><text><p>Return the runtime type of <ref resolved='predef::_typeof.x'>x</ref>.</p>
</text><group><seealso/><text><p><ref>typeof()</ref></p>
</text></group></doc>
<method name='_typeof'>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><type><mixed/></type></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='replace_master'><doc><text><p>Replace the master object with <ref resolved='predef::replace_master.o'>o</ref>.</p>
<p>   This will let you control many aspects of how Pike works, but beware that
   <tt>master.pike</tt> may be required to fill certain functions, so it is
   usually a good idea to have your master inherit the original master and
   only re-define certain functions.</p>
<p>   FIXME: Tell how to inherit the master.</p>
</text><group><seealso/><text><p><ref resolved='predef::master'>master()</ref></p>
</text></group></doc>
<method name='replace_master'>
<arguments><argument name='o'><type><object resolved='predef::replace_master'/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='master'><doc><text><p>Return the current master object.</p>
</text><group><seealso/><text><p><ref resolved='predef::replace_master'>replace_master()</ref></p>
</text></group></doc>
<method name='master'>
<arguments/>
<returntype><object resolved='predef::master'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gethrvtime'><doc><text><p>Return the CPU time that has been consumed by this process or
 thread. -1 is returned if the system couldn't determine it. The
 time is normally returned in microseconds, but if the optional
 argument <ref resolved='predef::gethrvtime.nsec'>nsec</ref> is nonzero it's returned in nanoseconds.</p>
<p> The CPU time includes both user and system time, i.e. it's
 approximately the same thing you would get by adding together the
 "utime" and "stime" fields returned by <ref resolved='predef::System.getrusage'>System.getrusage</ref> (but
 perhaps with better accuracy). It's however system dependent
 whether or not it's the time consumed in all threads or in the
 current one only; <ref resolved='predef::System.CPU_TIME_IS_THREAD_LOCAL'>System.CPU_TIME_IS_THREAD_LOCAL</ref> tells which.</p>
</text><group><note/><text><p>The actual accuracy on many systems is significantly less than
   milliseconds or nanoseconds.</p>
</text></group><group><note/><text><p>The garbage collector might run automatically at any time. The
   time it takes is not included in the figure returned by this
   function, so that normal measurements aren't randomly clobbered
   by it. Explicit calls to <ref resolved='predef::gc'>gc</ref> are still included, though.</p>
</text></group><group><note/><text><p>The special function <ref>gauge</ref> is implemented with this function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::System.CPU_TIME_IS_THREAD_LOCAL'>System.CPU_TIME_IS_THREAD_LOCAL</ref>, <ref>gauge()</ref>,
   <ref resolved='predef::System.getrusage'>System.getrusage()</ref>, <ref resolved='predef::gethrtime'>gethrtime()</ref></p>
</text></group></doc>
<method name='gethrvtime'>
<arguments><argument name='nsec'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='gethrtime'><doc><text><p>Return the real time since some arbitrary event in the past. The
 time is normally returned in microseconds, but if the optional
 argument <ref resolved='predef::gethrtime.nsec'>nsec</ref> is nonzero it's returned in nanoseconds.</p>
</text><group><note/><text><p>The actual accuracy on many systems is significantly less than
   milliseconds or nanoseconds.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::System.gettimeofday'>System.gettimeofday()</ref>, <ref resolved='predef::gethrvtime'>gethrvtime()</ref></p>
</text></group></doc>
<method name='gethrtime'>
<arguments><argument name='nsec'><type><or><void/><int/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='get_profiling_info'><doc><text><p>Get profiling information.</p>
</text><group><returns/><text><p>Returns an array with two elements.</p>
<array><group><elem><type><int/></type><index>num_clones</index></elem><text><p>The first element is the number of times the program <ref resolved='predef::get_profiling_info.prog'>prog</ref> has been
   	  instantiated.</p>
</text></group><group><elem><type><mapping><indextype><string/></indextype><valuetype><array><valuetype><int/></valuetype></array></valuetype></mapping></type><index>fun_prof_info</index></elem><text><p>The second element is mapping from function name to an
   	  array with three elements.</p>
<array><group><elem><type><int/></type><index>num_calls</index></elem><text><p>The first element is the number of times the function has been
   	      called.</p>
</text></group><group><elem><type><int/></type><index>total_time</index></elem><text><p>The second element is the total time (in milliseconds) spent
   	      executing this function, and any functions called from it.</p>
</text></group><group><elem><type><int/></type><index>self_time</index></elem><text><p>The third element is the time (in milliseconds) actually spent
   	      in this function so far.</p>
</text></group></array></text></group></array>
</text></group><group><note/><text><p>This function is only available if the runtime was compiled with
   the option <tt>--with-profiling</tt>.</p>
</text></group></doc>
<method name='get_profiling_info'>
<arguments><argument name='prog'><type><program/></type></argument></arguments>
<returntype><array><valuetype><or><int/><mapping><indextype><string/></indextype><valuetype><array><valuetype><int/></valuetype></array></valuetype></mapping></or></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='object_variablep'><doc><text><p>Find out if an object identifier is a variable.</p>
</text><group><returns/><text><p>This function returns <expr>1</expr> if <ref resolved='predef::object_variablep.var'>var</ref> exists as a non-static variable
   in <ref resolved='predef::object_variablep.o'>o</ref>, and returns <expr>0</expr> (zero) otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::indices'>indices()</ref>, <ref resolved='predef::values'>values()</ref></p>
</text></group></doc>
<method name='object_variablep'>
<arguments><argument name='o'><type><object resolved='predef::object_variablep'/></type></argument><argument name='var'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>







<docgroup homogen-type='method' homogen-name='map'><doc><text><p>Applies <ref resolved='predef::map.fun'>fun</ref> to the elements in <ref resolved='predef::map.arr'>arr</ref> and collects the results.</p>
<p>   <ref resolved='predef::map.arr'>arr</ref> is treated as a set of elements, as follows:</p>
<dl><group><item name='array'/><item name='multiset'/><item name='string'/><text><p><ref resolved='predef::map.fun'>fun</ref> is applied in order to each element. The results are
       collected, also in order, to a value of the same type as
       <ref resolved='predef::map.arr'>arr</ref>, which is returned.</p>
</text></group><group><item name='mapping'/><text><p><ref resolved='predef::map.fun'>fun</ref> is applied to the values, and each result is assigned
       to the same index in a new mapping, which is returned.</p>
</text></group><group><item name='program'/><text><p>The program is treated as a mapping containing the
       identifiers that are indexable from it and their values.</p>
</text></group><group><item name='object'/><text><p>If there is a <ref resolved='lfun::cast'>lfun::cast</ref> method in the object, it's
       called
       to try to cast the object to an array, a mapping, or a
       multiset, in that order, which is then handled as described
       above.</p>
</text></group></dl><p><ref resolved='predef::map.fun'>fun</ref> is applied in different ways depending on its type:</p>
<dl><group><item name='function'/><text><p><ref resolved='predef::map.fun'>fun</ref> is called for each element. It gets the current
       element as the first argument and <ref resolved='predef::map.extra'>extra</ref> as the rest. The
       result of the call is collected.</p>
</text></group><group><item name='object'/><text><p><ref resolved='predef::map.fun'>fun</ref> is used as a function like above, i.e. the
       <ref resolved='lfun::`()'>lfun::`()</ref> method in it is called.</p>
</text></group><group><item name='multiset'/><item name='mapping'/><text><p><ref resolved='predef::map.fun'>fun</ref> is indexed with each element. The result of that is
       collected.</p>
</text></group><group><item name='zero or left out'/><text><p>Each element that is callable is called with <ref resolved='predef::map.extra'>extra</ref> as
       arguments. The result of the calls are collected. Elements
       that aren't callable gets zero as result.</p>
</text></group><group><item name='string'/><text><p>Each element is indexed with the given string. If the result
       of that is zero then a zero is collected, otherwise it's
       called with <ref resolved='predef::map.extra'>extra</ref> as arguments and the result of that
       call is collected.</p>
<p>       This is typically used when <ref resolved='predef::map.arr'>arr</ref> is a collection of
       objects, and <ref resolved='predef::map.fun'>fun</ref> is the name of some function in them.</p>
</text></group></dl>
</text><group><note/><text><p>The function is never destructive on <ref resolved='predef::map.arr'>arr</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::filter'>filter()</ref>, <ref resolved='predef::enumerate'>enumerate()</ref>, <ref>foreach()</ref></p>
</text></group></doc>
<method name='map'>
<arguments><argument name='arr'><type><mixed/></type></argument><argument name='fun'><type><or><void/><mixed/></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='filter'><doc><text><p>Filters the elements in <ref resolved='predef::filter.arr'>arr</ref> through <ref resolved='predef::filter.fun'>fun</ref>.</p>
<p>   <ref resolved='predef::filter.arr'>arr</ref> is treated as a set of elements to be filtered, as
   follows:</p>
<dl><group><item name='array'/><item name='multiset'/><item name='string'/><text><p>Each element is filtered with <ref resolved='predef::filter.fun'>fun</ref>. The return value is of
       the same type as <ref resolved='predef::filter.arr'>arr</ref> and it contains the elements that
       <ref resolved='predef::filter.fun'>fun</ref> accepted. <ref resolved='predef::filter.fun'>fun</ref> is applied in order to each element,
       and that order is retained between the kept elements.</p>
<p>       If <ref resolved='predef::filter.fun'>fun</ref> is an array, it should have the same length as
       <ref resolved='predef::filter.arr'>arr</ref>. In this case, the elements in <ref resolved='predef::filter.arr'>arr</ref> are kept where
       the corresponding positions in <ref resolved='predef::filter.fun'>fun</ref> are nonzero. Otherwise
       <ref resolved='predef::filter.fun'>fun</ref> is used as described below.</p>
</text></group><group><item name='mapping'/><text><p>The values are filtered with <ref resolved='predef::filter.fun'>fun</ref>, and the index/value
       pairs it accepts are kept in the returned mapping.</p>
</text></group><group><item name='program'/><text><p>The program is treated as a mapping containing the
       identifiers that are indexable from it and their values.</p>
</text></group><group><item name='object'/><text><p>If there is a <ref resolved='lfun::cast'>lfun::cast</ref> method in the object, it's called
       to try to cast the object to an array, a mapping, or a
       multiset, in that order, which is then filtered as described
       above.</p>
</text></group></dl><p>Unless something else is mentioned above, <ref resolved='predef::filter.fun'>fun</ref> is used as
   filter like this:</p>
<dl><group><item name='function'/><text><p><ref resolved='predef::filter.fun'>fun</ref> is called for each element. It gets the current
       element as the first argument and <ref resolved='predef::filter.extra'>extra</ref> as the rest. The
       element is kept if it returns true, otherwise it's filtered
       out.</p>
</text></group><group><item name='object'/><text><p>The object is used as a function like above, i.e. the
       <ref resolved='lfun::`()'>lfun::`()</ref> method in it is called.</p>
</text></group><group><item name='multiset'/><item name='mapping'/><text><p><ref resolved='predef::filter.fun'>fun</ref> is indexed with each element. The element is kept if
       the result is nonzero, otherwise it's filtered out.</p>
</text></group><group><item name='zero or left out'/><text><p>Each element that is callable is called with <ref resolved='predef::filter.extra'>extra</ref> as
       arguments. The element is kept if the result of the call is
       nonzero, otherwise it's filtered out. Elements that aren't
       callable are also filtered out.</p>
</text></group><group><item name='string'/><text><p>Each element is indexed with the given string. If the result
       of that is zero then the element is filtered out, otherwise
       the result is called with <ref resolved='predef::filter.extra'>extra</ref> as arguments. The element
       is kept if the return value is nonzero, otherwise it's
       filtered out.</p>
<p>       This is typically used when <ref resolved='predef::filter.arr'>arr</ref> is a collection of
       objects, and <ref resolved='predef::filter.fun'>fun</ref> is the name of some predicate function
       in them.</p>
</text></group></dl>
</text><group><note/><text><p>The function is never destructive on <ref resolved='predef::filter.arr'>arr</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::map'>map()</ref>, <ref>foreach()</ref></p>
</text></group></doc>
<method name='filter'>
<arguments><argument name='arr'><type><mixed/></type></argument><argument name='fun'><type><or><void/><mixed/></or></type></argument><argument name='extra'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='enumerate'><doc><text><p>Create an array with an enumeration, useful for initializing arrays
   or as first argument to <ref resolved='predef::map'>map()</ref> or <ref>foreach()</ref>.</p>
<p>   The defaults are: <ref resolved='predef::enumerate.step'>step</ref> = 1, <ref resolved='predef::enumerate.start'>start</ref> = 0, <ref resolved='predef::enumerate.operator'>operator</ref> = <ref resolved='predef::`+'>`+</ref></p>
<section name=' Advanced use'><text><p>The resulting array is calculated like this:</p>
<code><text><p>array enumerate(int n, mixed step, mixed start, function operator)
 {
   array res = allocate(n);
   for (int i=0; i &lt; n; i++)
   {
     res[i] = start;
     start = operator(start, step);
   }
   return res;
 }</p>
</text></code></text></section>
</text><group><seealso/><text><p><ref resolved='predef::map'>map()</ref>, <ref>foreach()</ref></p>
</text></group></doc>
<method name='enumerate'>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
<method name='enumerate'>
<arguments><argument name='n'><type><int/></type></argument><argument name='step'><type><or><void/><mixed/></or></type></argument><argument name='start'><type><or><void/><mixed/></or></type></argument><argument name='operator'><type><or><void/><function/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>


<docgroup homogen-type='method' homogen-name='_disable_threads'><doc><text><p>This function first posts a notice to all threads that it is time
 to stop. It then waits until all threads actually *have* stopped,
 and then then returns a lock object. All other threads will be
 blocked from running until that object has been freed/destroyed.</p>
<p> It's mainly useful to do things that require a temporary uid/gid
 change, since on many OS the effective user and group applies to
 all threads.</p>
</text><group><note/><text><p>You should make sure that the returned object is freed even if
 some kind of error is thrown. That means in practice that it
 should only have references (direct or indirect) from function
 local variables. Also, it shouldn't be referenced from cyclic
 memory structures, since those are only destructed by the periodic
 gc. (This advice applies to mutex locks in general, for that
 matter.)</p>
</text></group></doc>
<method name='_disable_threads'>
<arguments/>
<returntype><object resolved='predef::_disable_threads'>_disable_threads</object></returntype>
</method>
</docgroup>


<docgroup homogen-type='method' homogen-name='signal'><doc><text><p>Trap signals.</p>
<p> This function allows you to trap a signal and have a function called
 when the process receives a signal. Although it IS possible to trap
 SIGBUS, SIGSEGV etc. I advice you not to. Pike should not receive any
 such signals and if it does it is because of bugs in the Pike
 interpreter. And all bugs should be reported, no matter how trifle.</p>
<p> The callback will receive the signal number as its only argument.</p>
<p> See the documentation for <ref resolved='predef::kill'>kill()</ref> for a list of signals.</p>
<p> If no second argument is given, the signal handler for that signal
 is restored to the default handler.</p>
<p> If the second argument is zero, the signal will be completely ignored.</p>
</text><group><seealso/><text><p><ref resolved='predef::kill'>kill()</ref>, <ref resolved='predef::signame'>signame()</ref>, <ref resolved='predef::signum'>signum()</ref></p>
</text></group></doc>
<method name='signal'>
<arguments><argument name='sig'><type><int/></type></argument><argument name='callback'><type><function><argtype><or><int/><void/></or></argtype><returntype><void/></returntype></function></type></argument></arguments>
<returntype><void/></returntype>
</method>
<method name='signal'>
<arguments><argument name='sig'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='signum'><doc><text><p>Get a signal number given a descriptive string.</p>
<p> This function is the inverse of <ref resolved='predef::signame'>signame()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::signame'>signame()</ref>, <ref resolved='predef::kill'>kill()</ref>, <ref resolved='predef::signal'>signal()</ref></p>
</text></group></doc>
<method name='signum'>
<arguments><argument name='sig'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='signame'><doc><text><p>Returns a string describing the signal <ref resolved='predef::signame.sig'>sig</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::kill'>kill()</ref>, <ref resolved='predef::signum'>signum()</ref>, <ref resolved='predef::signal'>signal()</ref></p>
</text></group></doc>
<method name='signame'>
<arguments><argument name='sig'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='set_priority'><doc/>
<method name='set_priority'>
<arguments><argument name='level'><type><string/></type></argument><argument name='pid'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='fork'><doc><text><p>Fork the process in two.</p>
<p> Fork splits the process in two, and for the parent it returns a
 pid object for the child. Refer to your Unix manual for further
 details.</p>
</text><group><note/><text><p>This function can cause endless bugs if used without proper care.</p>
<p>   This function is disabled when using threads.</p>
<p>   This function is not available on all platforms.</p>
<p>   The most common use for fork is to start sub programs, which is
   better done with <ref resolved='predef::Process.create_process'>Process.create_process()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Process.create_process'>Process.create_process()</ref></p>
</text></group></doc>
<method name='fork'>
<arguments/>
<returntype><object resolved='predef::fork'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='kill'><doc><text><p>Send a signal to another process. Returns nonzero if it worked,
 zero otherwise. <ref resolved='predef::errno'>errno</ref> may be used in the latter case to find
 out what went wrong.</p>
<p> Some signals and their supposed purpose:</p>
<int><group><value>SIGHUP</value><text><p>Hang-up, sent to process when user logs out.</p>
</text></group><group><value>SIGINT</value><text><p>Interrupt, normally sent by ctrl-c.</p>
</text></group><group><value>SIGQUIT</value><text><p>Quit, sent by ctrl-\.</p>
</text></group><group><value>SIGILL</value><text><p>Illegal instruction.</p>
</text></group><group><value>SIGTRAP</value><text><p>Trap, mostly used by debuggers.</p>
</text></group><group><value>SIGABRT</value><text><p>Aborts process, can be caught, used by Pike whenever something
     goes seriously wrong.</p>
</text></group><group><value>SIGEMT</value><text><p>Emulation trap.</p>
</text></group><group><value>SIGFPE</value><text><p>Floating point error (such as division by zero).</p>
</text></group><group><value>SIGKILL</value><text><p>Really kill a process, cannot be caught.</p>
</text></group><group><value>SIGBUS</value><text><p>Bus error.</p>
</text></group><group><value>SIGSEGV</value><text><p>Segmentation fault, caused by accessing memory where you
     shouldn't. Should never happen to Pike.</p>
</text></group><group><value>SIGSYS</value><text><p>Bad system call. Should never happen to Pike.</p>
</text></group><group><value>SIGPIPE</value><text><p>Broken pipe.</p>
</text></group><group><value>SIGALRM</value><text><p>Signal used for timer interrupts.</p>
</text></group><group><value>SIGTERM</value><text><p>Termination signal.</p>
</text></group><group><value>SIGUSR1</value><text><p>Signal reserved for whatever you want to use it for.
     Note that some OSs reserve this signal for the thread library.</p>
</text></group><group><value>SIGUSR2</value><text><p>Signal reserved for whatever you want to use it for.
     Note that some OSs reserve this signal for the thread library.</p>
</text></group><group><value>SIGCHLD</value><text><p>Child process died. This signal is reserved for internal use
     by the Pike run-time.</p>
</text></group><group><value>SIGPWR</value><text><p>Power failure or restart.</p>
</text></group><group><value>SIGWINCH</value><text><p>Window change signal.</p>
</text></group><group><value>SIGURG</value><text><p>Urgent socket data.</p>
</text></group><group><value>SIGIO</value><text><p>Pollable event.</p>
</text></group><group><value>SIGSTOP</value><text><p>Stop (suspend) process.</p>
</text></group><group><value>SIGTSTP</value><text><p>Stop (suspend) process. Sent by ctrl-z.</p>
</text></group><group><value>SIGCONT</value><text><p>Continue suspended.</p>
</text></group><group><value>SIGTTIN</value><text><p>TTY input for background process.</p>
</text></group><group><value>SIGTTOU</value><text><p>TTY output for background process.</p>
</text></group><group><value>SIGVTALRM</value><text><p>Virtual timer expired.</p>
</text></group><group><value>SIGPROF</value><text><p>Profiling trap.</p>
</text></group><group><value>SIGXCPU</value><text><p>Out of CPU.</p>
</text></group><group><value>SIGXFSZ</value><text><p>File size limit exceeded.</p>
</text></group><group><value>SIGSTKFLT</value><text><p>Stack fault</p>
</text></group></int>
</text><group><note/><text><p>Note that you have to use signame to translate the name of a signal
   to its number.</p>
<p>   Note that the kill function is not available on platforms that do not
   support signals. Some platforms may also have signals not listed here.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::kill.signal'>signal()</ref>, <ref resolved='predef::signum'>signum()</ref>, <ref resolved='predef::signame'>signame()</ref>, <ref resolved='predef::fork'>fork()</ref></p>
</text></group></doc>
<method name='kill'>
<arguments><argument name='pid'><type><int/></type></argument><argument name='signal'><type><int/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='getpid'><doc><text><p>Returns the process ID of this process.</p>
</text><group><seealso/><text><p><ref resolved='predef::System.getppid'>System.getppid()</ref>, <ref resolved='predef::System.getpgrp'>System.getpgrp()</ref></p>
</text></group></doc>
<method name='getpid'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='alarm'><doc><text><p>Set an alarm clock for delivery of a signal.</p>
<p> <ref resolved='predef::alarm'>alarm()</ref> arranges for a SIGALRM signal to be delivered to the
 process in <ref resolved='predef::alarm.seconds'>seconds</ref> seconds.</p>
<p> If <ref resolved='predef::alarm.seconds'>seconds</ref> is <expr>0</expr> (zero), no new alarm will be scheduled.</p>
<p> Any previous alarms will in any case be canceled.</p>
</text><group><returns/><text><p>Returns the number of seconds remaining until any previously
   scheduled alarm was due to be delivered, or zero if there was
   no previously scheduled alarm.</p>
</text></group><group><note/><text><p>This function is only available on platforms that support
   signals.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::ualarm'>ualarm()</ref>, <ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::call_out'>call_out()</ref></p>
</text></group></doc>
<method name='alarm'>
<arguments><argument name='seconds'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='ualarm'><doc><text><p>Set an alarm clock for delivery of a signal.</p>
<p> <ref resolved='predef::alarm'>alarm()</ref> arranges for a SIGALRM signal to be delivered to the
 process in <ref resolved='predef::ualarm.useconds'>useconds</ref> microseconds.</p>
<p> If <ref resolved='predef::ualarm.useconds'>useconds</ref> is <expr>0</expr> (zero), no new alarm will be scheduled.</p>
<p> Any previous alarms will in any case be canceled.</p>
</text><group><returns/><text><p>Returns the number of microseconds remaining until any previously
   scheduled alarm was due to be delivered, or zero if there was
   no previously scheduled alarm.</p>
</text></group><group><note/><text><p>This function is only available on platforms that support
   signals.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::alarm'>alarm()</ref>, <ref resolved='predef::signal'>signal()</ref>, <ref resolved='predef::call_out'>call_out()</ref></p>
</text></group></doc>
<method name='ualarm'>
<arguments><argument name='useconds'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='atexit'><doc><text><p>This function puts the <ref resolved='predef::atexit.callback'>callback</ref> in a queue of callbacks to
 call when pike exits.</p>
</text><group><note/><text><p>Please note that <ref resolved='predef::atexit'>atexit</ref> callbacks are not called if Pike
   exits abnormally.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::exit'>exit()</ref>, <ref resolved='predef::_exit'>_exit()</ref></p>
</text></group></doc>
<method name='atexit'>
<arguments><argument name='callback'><type><function/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='load_module'><doc><text><p>Load a binary module.</p>
<p> This function loads a module written in C or some other language
 into Pike. The module is initialized and any programs or constants
 defined will immediately be available.</p>
<p> When a module is loaded the C function <tt>pike_module_init()</tt> will
 be called to initialize it. When Pike exits <tt>pike_module_exit()</tt>
 will be called. These two functions <b>must</b> be available in the module.</p>
</text><group><note/><text><p>The current working directory is normally not searched for
   dynamic modules. Please use <expr>"./name.so"</expr> instead of just
   <expr>"name.so"</expr> to load modules from the current directory.</p>
</text></group></doc>
<method name='load_module'>
<arguments><argument name='module_name'><type><string/></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>




<class name='Codec'><doc><text><p>Codec objects are used by <ref resolved='predef::encode_value'>encode_value()</ref> and <ref resolved='predef::decode_value'>decode_value()</ref>
   to encode and decode objects, functions and programs.</p>
</text><group><note/><text><p><ref resolved='predef::encode_value'>encode_value()</ref> and <ref resolved='predef::decode_value'>decode_value()</ref> will use the current
   master object as fallback codec object if no codec was specified.</p>
</text></group></doc><docgroup homogen-type='method' homogen-name='nameof'><doc><text><p>Called by <ref resolved='predef::encode_value'>encode_value()</ref> to encode objects, functions and programs.</p>
</text><group><returns/><text><p>Returns something encodable on success, typically a string.
   The returned value will be passed to the corresponding
   <ref resolved='predef::Codec.objectof'>objectof()</ref>, <ref resolved='predef::Codec.functionof'>functionof()</ref> or <ref resolved='predef::Codec.programof'>programof()</ref> by
   <ref resolved='predef::decode_value'>decode_value()</ref>.</p>
<p>   Returns <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> on failure.</p>
</text></group><group><note/><text><p><ref resolved='predef::encode_value'>encode_value()</ref> has fallbacks for some classes of objects,
   functions and programs.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Codec.objectof'>objectof()</ref>, <ref resolved='predef::Codec.functionof'>functionof()</ref>, <ref resolved='predef::Codec.objectof'>objectof()</ref></p>
</text></group></doc>
<method name='nameof'>
<arguments><argument name='x'><type><or><object resolved='predef::Codec.nameof'/><function/><program/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='objectof'><doc><text><p>Decode object encoded in <ref resolved='predef::Codec.objectof.data'>data</ref>.</p>
<p>   This function is called by <ref resolved='predef::decode_value'>decode_value()</ref> when it encounters
   encoded objects.</p>
</text><group><param name='data'/><text><p>Encoding of some object as specified by <ref resolved='predef::Codec.nameof'>nameof()</ref>.</p>
</text></group><group><param name='minor'/><text><p>Minor version.</p>
</text></group><group><returns/><text><p>Returns the decoded object.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Codec.functionof'>functionof()</ref>, <ref resolved='predef::Codec.programof'>programof()</ref></p>
</text></group></doc>
<method name='objectof'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><object resolved='predef::Codec.objectof'/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='functionof'><doc><text><p>Decode function encoded in <ref resolved='predef::Codec.functionof.data'>data</ref>.</p>
<p>   This function is called by <ref resolved='predef::decode_value'>decode_value()</ref> when it encounters
   encoded functions.</p>
</text><group><param name='data'/><text><p>Encoding of some function as specified by <ref resolved='predef::Codec.nameof'>nameof()</ref>.</p>
</text></group><group><param name='minor'/><text><p>Minor version.</p>
</text></group><group><returns/><text><p>Returns the decoded function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Codec.objectof'>objectof()</ref>, <ref resolved='predef::Codec.programof'>programof()</ref></p>
</text></group></doc>
<method name='functionof'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><function/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='programof'><doc><text><p>Decode program encoded in <ref resolved='predef::Codec.programof.data'>data</ref>.</p>
<p>   This function is called by <ref resolved='predef::decode_value'>decode_value()</ref> when it encounters
   encoded programs.</p>
</text><group><param name='data'/><text><p>Encoding of some program as specified by <ref resolved='predef::Codec.nameof'>nameof()</ref>.</p>
</text></group><group><param name='minor'/><text><p>Minor version.</p>
</text></group><group><returns/><text><p>Returns the decoded program.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Codec.functionof'>functionof()</ref>, <ref resolved='predef::Codec.objectof'>objectof()</ref></p>
</text></group></doc>
<method name='programof'>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='__register_new_program'><doc><text><p>Called by <ref resolved='predef::decode_value'>decode_value()</ref> to register the program that is
   being decoded. Might get called repeatedly with several other
   programs that are being decoded recursively. The only safe
   assumption is that when the top level thing being decoded is a
   program, then the first call will be with the unfinished embryo
   that will later become that program.</p>
</text><group><returns/><text><p>Returns either zero or a placeholder object. A placeholder
   object must be a clone of <ref resolved='predef::.__null_program'>__null_program</ref>. When the program is
   finished, the placeholder object will be converted to a clone of
   it. This is used for pike module objects.</p>
</text></group></doc>
<method name='__register_new_program'>
<arguments><argument name='p'><type><program/></type></argument></arguments>
<returntype><object resolved='predef::Codec.__register_new_program'/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='encode_value'><doc><text><p>Code a value into a string.</p>
<p> This function takes a value, and converts it to a string. This string
 can then be saved, sent to another Pike process, packed or used in
 any way you like. When you want your value back you simply send this
 string to <ref resolved='predef::decode_value'>decode_value()</ref> and it will return the value you encoded.</p>
<p> Almost any value can be coded, mappings, floats, arrays, circular
 structures etc.</p>
<p> To encode objects, programs and functions, a codec object must be
 provided.</p>
</text><group><note/><text><p>When only simple types like int, floats, strings, mappings,
 multisets and arrays are encoded, the produced string is very
 portable between pike versions. It can at least be read by any
 later version.</p>
<p> The portability when objects, programs and functions are involved
 depends mostly on the codec. If the byte code is encoded, i.e.
 when Pike programs are actually dumped in full, then the string
 can probably only be read by the same pike version.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::decode_value'>decode_value()</ref>, <ref resolved='predef::sprintf'>sprintf()</ref>, <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref></p>
</text></group></doc>
<method name='encode_value'>
<arguments><argument name='value'><type><mixed/></type></argument><argument name='codec'><type><or><object resolved='predef::encode_value'/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='encode_value_canonic'><doc><text><p>Code a value into a string on canonical form.</p>
<p> Takes a value and converts it to a string on canonical form, much like
 <ref resolved='predef::encode_value'>encode_value()</ref>. The canonical form means that if an identical value is
 encoded, it will produce exactly the same string again, even if it's
 done at a later time and/or in another Pike process. The produced
 string is compatible with <ref resolved='predef::decode_value'>decode_value()</ref>.</p>
</text><group><note/><text><p>Note that this function is more restrictive than <ref resolved='predef::encode_value'>encode_value()</ref> with
   respect to the types of values it can encode. It will throw an error
   if it can't encode to a canonical form.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::encode_value'>encode_value()</ref>, <ref resolved='predef::decode_value'>decode_value()</ref></p>
</text></group></doc>
<method name='encode_value_canonic'>
<arguments><argument name='value'><type><mixed/></type></argument><argument name='codec'><type><or><object resolved='predef::encode_value_canonic'/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='decode_value'><doc><text><p>Decode a value from the string <ref resolved='predef::decode_value.coded_value'>coded_value</ref>.</p>
<p> This function takes a string created with <ref resolved='predef::encode_value'>encode_value()</ref> or
 <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref> and converts it back to the value that was
 coded.</p>
<p> If <ref resolved='predef::decode_value.codec'>codec</ref> is specified, it's used as the codec for the decode.
 If no codec is specified, the current master object will be used.</p>
</text><group><seealso/><text><p><ref resolved='predef::encode_value'>encode_value()</ref>, <ref resolved='predef::encode_value_canonic'>encode_value_canonic()</ref></p>
</text></group></doc>
<method name='decode_value'>
<arguments><argument name='coded_value'><type><string/></type></argument><argument name='codec'><type><or><void/><object resolved='predef::Codec'>Codec</object></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>




<docgroup homogen-type='import'><doc/>
<import><source-position first-line='1489' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/><classname resolved='cpp::'>cpp::</classname></import>
</docgroup>
<docgroup homogen-type='method' homogen-name='cpp'><doc><text><p>Run a string through the preprocessor.</p>
<p> Preprocesses the string <ref resolved='predef::cpp.data'>data</ref> with Pike's builtin ANSI-C look-alike
 preprocessor. If the <ref resolved='predef::cpp.current_file'>current_file</ref> argument has not been specified,
 it will default to <expr>"-"</expr>. <ref resolved='predef::cpp.charset'>charset</ref> defaults to <expr>"ISO-10646"</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref></p>
</text></group></doc>
<method name='cpp'>
<arguments><argument name='data'><type><string/></type></argument><argument name='current_file'><type><or><string/><void/></or></type></argument><argument name='charset'><type><or><int/><string/><void/></or></type></argument><argument name='handler'><type><or><object resolved='predef::cpp'/><void/></or></type></argument><argument name='compat_major'><type><or><void/><int/></or></type></argument><argument name='compat_minor'><type><or><void/><int/></or></type></argument><argument name='warn_if_constant_throws'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>




<class name='string_assignment'><docgroup homogen-type='method' homogen-name='`[]'><doc><text><p>String index operator.</p>
</text></doc>
<method name='`[]'>
<arguments><argument name='i'><type><int/></type></argument><argument name='j'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]='><doc><text><p>String assign index operator.</p>
</text></doc>
<method name='`[]='>
<arguments><argument name='i'><type><int/></type></argument><argument name='j'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</class><docgroup homogen-type='method' homogen-name='`!='><doc><text><p>Inequality test.</p>
<p>   Every expression with the <expr>!=</expr> operator becomes a call to
   this function, i.e. <expr>a!=b</expr> is the same as
   <expr>predef::`!=(a,b)</expr>.</p>
<p>   This is the inverse of <ref resolved='predef::`=='>`==()</ref>; see that function for further
   details.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if the test is successful, <expr>0</expr>
   otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`=='>`==()</ref></p>
</text></group></doc>
<method name='`!='>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`=='><doc><text><p>Equality test.</p>
<p>   Every expression with the <expr>==</expr> operator becomes a call to
   this function, i.e. <expr>a==b</expr> is the same as
   <expr>predef::`==(a,b)</expr>.</p>
<p>   If more than two arguments are given, each argument is compared
   with the following one as described below, and the test is
   successful iff all comparisons are successful.</p>
<p>   If the first argument is an object with an <ref resolved='lfun::`=='>lfun::`==()</ref>, that
   function is called with the second as argument, and the test is
   successful iff its result is nonzero (according to <ref resolved='predef::`!'>`!</ref>).</p>
<p>   Otherwise, if the second argument is an object with an
   <ref resolved='lfun::`=='>lfun::`==()</ref>, that function is called with the first as
   argument, and the test is successful iff its result is nonzero
   (according to <ref resolved='predef::`!'>`!</ref>).</p>
<p>   Otherwise, if the arguments are of different types, the test is
   unsuccessful. Function pointers to programs are automatically
   converted to program pointers if necessary, though.</p>
<p>   Otherwise the test depends on the type of the arguments:</p>
<mixed><group><type><int/></type><text><p>Successful iff the two integers are numerically equal.</p>
</text></group><group><type><float/></type><text><p>Successful iff the two floats are numerically equal or if
       both are NaN.</p>
</text></group><group><type><string/></type><text><p>Successful iff the two strings are identical, character for
       character. (Since all strings are kept unique, this is
       actually a test whether the arguments point to the same
       string, and it therefore run in constant time.)</p>
</text></group><group><type><or><array/><mapping/><multiset/><object resolved='predef::`=='/><function/><program/><type><mixed/></type></or></type><text><p>Successful iff the two arguments point to the same instance.</p>
</text></group></mixed>
</text><group><returns/><text><p>Returns <expr>1</expr> if the test is successful, <expr>0</expr>
   otherwise.</p>
</text></group><group><note/><text><p>Floats and integers are not automatically converted to test
   against each other, so e.g. <expr>0==0.0</expr> is false.</p>
</text></group><group><note/><text><p>Programs are not automatically converted to types to be compared
   type-wise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`!'>`!()</ref>, <ref resolved='predef::`!='>`!=()</ref></p>
</text></group></doc>
<method name='`=='>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&lt;'><doc><text><p>Less than test.</p>
<p>   Every expression with the <expr>&lt;</expr> operator becomes a call to
   this function, i.e. <expr>a&lt;b</expr> is the same as
   <expr>predef::`&lt;(a,b)</expr>.</p>
<p>   If more than two arguments are given, each argument is compared
   with the following one as described below, and the test is
   successful iff all comparisons are successful. Thus a single
   call can be used to test if a whole list of values are in
   strictly increasing order.</p>
<p>   If the first argument is an object with an <ref resolved='lfun::`&lt;'>lfun::`&lt;()</ref>, that
   function is called with the second as argument, and the test is
   successful iff its result is nonzero (according to <ref resolved='predef::`!'>`!</ref>).</p>
<p>   Otherwise, if the second argument is an object with an
   <ref resolved='lfun::`=='>lfun::`==()</ref>, that function is called with the first as
   argument, and the test is successful iff its result is nonzero
   (according to <ref resolved='predef::`!'>`!</ref>).</p>
<p>   Otherwise, if the arguments are of different types, the test is
   unsuccessful. Function pointers to programs are automatically
   converted to program pointers if necessary, though.</p>
<p>   Otherwise the test depends on the type of the arguments:</p>
<mixed><group><type><int/></type><text><p>Successful iff the two integers are numerically equal.</p>
</text></group><group><type><float/></type><text><p>Successful iff the two floats are numerically equal or if
       both are NaN.</p>
</text></group><group><type><string/></type><text><p>Successful iff the two strings are identical, character for
       character. (Since all strings are kept unique, this is
       actually a test whether the arguments point to the same
       string, and it therefore run in constant time.)</p>
</text></group><group><type><or><array/><mapping/><multiset/><object resolved='predef::`&lt;'/><function/><program/><type><mixed/></type></or></type><text><p>Successful iff the two arguments point to the same instance.</p>
</text></group></mixed>
</text><group><returns/><text><p>Returns <expr>1</expr> if the test is successful, <expr>0</expr>
   otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&lt;='>`&lt;=()</ref>, <ref resolved='predef::`&gt;'>`&gt;()</ref>, <ref resolved='predef::`&gt;='>`&gt;=()</ref></p>
</text></group></doc>
<method name='`&lt;'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&lt;='><doc><text><p>Less than or equal test.</p>
<p>   Every expression with the <expr>&lt;=</expr> operator becomes a call to
   this function, i.e. <expr>a&lt;=b</expr> is the same as
   <expr>predef::`&lt;=(a,b)</expr>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are not strictly decreasing, and
   <expr>0</expr> (zero) otherwise.</p>
<p>   This is the inverse of <ref resolved='predef::`&gt;'>`&gt;()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&lt;'>`&lt;()</ref>, <ref resolved='predef::`&gt;'>`&gt;()</ref>, <ref resolved='predef::`&gt;='>`&gt;=()</ref></p>
</text></group></doc>
<method name='`&lt;='>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&gt;'><doc><text><p>Greater than test.</p>
<p>   Every expression with the <expr>&gt;</expr> operator becomes a call to
   this function, i.e. <expr>a&gt;b</expr> is the same as
   <expr>predef::`&gt;(a,b)</expr>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are strictly decreasing, and
   <expr>0</expr> (zero) otherwise.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&lt;'>`&lt;()</ref>, <ref resolved='predef::`&lt;='>`&lt;=()</ref>, <ref resolved='predef::`&gt;='>`&gt;=()</ref></p>
</text></group></doc>
<method name='`&gt;'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&gt;='><doc><text><p>Greater than or equal test.</p>
<p>   Every expression with the <expr>&gt;=</expr> operator becomes a call to
   this function, i.e. <expr>a&gt;=b</expr> is the same as
   <expr>predef::`&gt;=(a,b)</expr>.</p>
</text><group><returns/><text><p>Returns <expr>1</expr> if the arguments are not strictly increasing, and
   <expr>0</expr> (zero) otherwise.</p>
<p>   This is the inverse of <ref resolved='predef::`&lt;'>`&lt;()</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&lt;='>`&lt;=()</ref>, <ref resolved='predef::`&gt;'>`&gt;()</ref>, <ref resolved='predef::`&lt;'>`&lt;()</ref></p>
</text></group></doc>
<method name='`&gt;='>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`+'><doc><text><p>Addition/concatenation.</p>
<p>   Every expression with the <expr>+</expr> operator becomes a call to
   this function, i.e. <expr>a+b</expr> is the same as
   <expr>predef::`+(a,b)</expr>. Longer <expr>+</expr> expressions are
   normally optimized to one call, so e.g. <expr>a+b+c</expr> becomes
   <expr>predef::`+(a,b,c)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument is returned.</p>
<p>   If <ref resolved='predef::`+.arg'>arg</ref> is an object with only one reference and an
   <ref resolved='lfun::`+='>lfun::`+=()</ref>, that function is called with the rest of the
   arguments, and its result is returned.</p>
<p>   Otherwise, if <ref resolved='predef::`+.arg'>arg</ref> is an object with an <ref resolved='lfun::`+'>lfun::`+()</ref>, that
   function is called with the rest of the arguments, and its
   result is returned.</p>
<p>   Otherwise, if any of the other arguments is an object that has
   an <ref resolved='lfun::``+'>lfun::``+()</ref>, the first such function is called with the
   arguments leading up to it, and <ref resolved='predef::`+'>`+()</ref> is then called
   recursively with the result and the rest of the arguments.</p>
<p>   Otherwise, if <ref resolved='predef::`+.arg'>arg</ref> is <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> and the other arguments are
   either arrays, mappings or multisets, the first argument is
   ignored and the remaining are added together as described below.
   This is useful primarily when appending to mapping values since
   <expr>m[x] += ({foo})</expr> will work even if <expr>m[x]</expr> doesn't
   exist yet.</p>
<p>   Otherwise the result depends on the argument types:</p>
<mixed><group><type><or><int/><float/></or></type><text><p>The result is the sum of all the arguments. It's a float if
       any argument is a float.</p>
</text></group><group><type><or><string/><int/><float/></or></type><text><p>If any argument is a string, all will be converted to
       strings and concatenated in order to form the result.</p>
</text></group><group><type><array/></type><text><p>The array arguments are concatened in order to form the
       result.</p>
</text></group><group><type><mapping/></type><text><p>The result is like <ref resolved='predef::`+.arg'>arg</ref> but extended with the entries from
       the other arguments. If the same index (according to
       <ref resolved='predef::hash_value'>hash_value</ref> and <ref resolved='predef::`=='>`==</ref>) occur in several arguments, the
       value from the last one is used.</p>
</text></group><group><type><multiset/></type><text><p>The result is like <ref resolved='predef::`+.arg'>arg</ref> but extended with the entries from
       the other arguments. Subsequences with orderwise equal
       indices (i.e. where <ref resolved='predef::`&lt;'>`&lt;</ref> returns false) are concatenated
       into the result in argument order.</p>
</text></group></mixed><p>The function is not destructive on the arguments - the result is
   always a new instance.</p>
</text></group><group><note/><text><p>In Pike 7.0 and earlier the addition order was unspecified.</p>
<p>   The treatment of <ref resolved='predef::.UNDEFINED'>UNDEFINED</ref> was new
   in Pike 7.0.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`-'>`-()</ref>, <ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='lfun::``+'>lfun::``+()</ref></p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><object resolved='predef::`+'/></type></argument><argument name='more'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><int/></type></argument><argument name='more'><type><varargs><int/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><or><float/><int/></or></type></argument><argument name='more'><type><varargs><or><float/><int/></or></varargs></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><or><string/><float/><int/></or></type></argument><argument name='more'><type><varargs><or><string/><float/><int/></or></varargs></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><array/></type></argument><argument name='more'><type><varargs><array/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><mapping/></type></argument><argument name='more'><type><varargs><mapping/></varargs></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`+'>
<arguments><argument name='arg'><type><multiset/></type></argument><argument name='more'><type><varargs><multiset/></varargs></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`-'><doc><text><p>Negation/subtraction/set difference.</p>
<p>   Every expression with the <expr>-</expr> operator becomes a call to
   this function, i.e. <expr>-a</expr> is the same as
   <expr>predef::`-(a)</expr> and <expr>a-b</expr> is the same as
   <expr>predef::`-(a,b)</expr>. Longer <expr>-</expr> expressions are
   normally optimized to one call, so e.g. <expr>a-b-c</expr> becomes
   <expr>predef::`-(a,b,c)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument is returned negated.
   If <ref resolved='predef::`-.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`-'>lfun::`-()</ref>, that function is
   called without arguments, and its result is returned.</p>
<p>   If there are more than two arguments the result is:
   <expr>`-(`-(<ref resolved='predef::`-.arg1'>arg1</ref>, <ref resolved='predef::`-.arg2'>arg2</ref>), @<ref resolved='predef::`-.extras'>extras</ref>)</expr>.</p>
<p>   Otherwise, if <ref resolved='predef::`-.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`-'>lfun::`-()</ref>, that
   function is called with <ref resolved='predef::`-.arg2'>arg2</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise, if <ref resolved='predef::`-.arg2'>arg2</ref> is an object with an <ref resolved='lfun::``-'>lfun::``-()</ref>, that
   function is called with <ref resolved='predef::`-.arg1'>arg1</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise the result depends on the argument types:</p>
<mixed name='arg1'><group><type><or><int/><float/></or></type><text><p>The result is <expr><ref resolved='predef::`-.arg1'>arg1</ref> - <ref resolved='predef::`-.arg2'>arg2</ref></expr>, and is a float if
   	  either <ref resolved='predef::`-.arg1'>arg1</ref> or <ref resolved='predef::`-.arg2'>arg2</ref> is a float.</p>
</text></group><group><type><string/></type><text><p>The result is <ref resolved='predef::`-.arg1'>arg1</ref> with all nonoverlapping occurrences of
   	  the substring <ref resolved='predef::`-.arg2'>arg2</ref> removed. In cases with two overlapping
   	  occurrences, the leftmost is removed.</p>
</text></group><group><type><or><array/><mapping/><multiset/></or></type><text><p>The result is like <ref resolved='predef::`-.arg1'>arg1</ref> but without the elements/indices
   	  that match any in <ref resolved='predef::`-.arg2'>arg2</ref> (according to <ref resolved='predef::`=='>`==</ref> and, in the
   	  case of mappings, <ref resolved='predef::hash_value'>hash_value</ref>).</p>
</text></group></mixed><p>The function is not destructive on the arguments - the result is
   always a new instance.</p>
</text></group><group><note/><text><p>In Pike 7.0 and earlier the subtraction order was unspecified.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`+'>`+()</ref></p>
</text></group></doc>
<method name='`-'>
<arguments><argument name='arg1'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><object resolved='predef::`-'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`-'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><or><int/><float/></or></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`-'>
<arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&amp;'><doc><text><p>Bitwise and/intersection.</p>
<p>   Every expression with the <expr>&amp;</expr> operator becomes a call to
   this function, i.e. <expr>a&amp;b</expr> is the same as
   <expr>predef::`&amp;(a,b)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument is returned.</p>
<p>   If there are more than two arguments the result is:
   <expr>`&amp;(`&amp;(<ref resolved='predef::`&amp;.arg1'>arg1</ref>, <ref resolved='predef::`&amp;.arg2'>arg2</ref>), @<ref resolved='predef::`&amp;.extras'>extras</ref>)</expr>.</p>
<p>   Otherwise, if <ref resolved='predef::`&amp;.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`&amp;'>lfun::`&amp;()</ref>, that
   function is called with <ref resolved='predef::`&amp;.arg2'>arg2</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise, if <ref resolved='predef::`&amp;.arg2'>arg2</ref> is an object with an <ref resolved='lfun::``&amp;'>lfun::``&amp;()</ref>, that
   function is called with <ref resolved='predef::`&amp;.arg1'>arg1</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise the result depends on the argument types:</p>
<mixed name='arg1'><group><type><int/></type><text><p>Bitwise and of <ref resolved='predef::`&amp;.arg1'>arg1</ref> and <ref resolved='predef::`&amp;.arg2'>arg2</ref>.</p>
</text></group><group><type><string/></type><text><p>The result is a string where each character is the bitwise
   	  and of the characters in the same position in <ref resolved='predef::`&amp;.arg1'>arg1</ref> and
   	  <ref resolved='predef::`&amp;.arg2'>arg2</ref>. The arguments must be strings of the same length.</p>
</text></group><group><type><or><array/><mapping/><multiset/></or></type><text><p>The result is like <ref resolved='predef::`&amp;.arg1'>arg1</ref> but only with the
   	  elements/indices that match any in <ref resolved='predef::`&amp;.arg2'>arg2</ref> (according to
   	  <ref resolved='predef::`=='>`==</ref> and, in the case of mappings, <ref resolved='predef::hash_value'>hash_value</ref>).</p>
</text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>Type intersection of <ref resolved='predef::`&amp;.arg1'>arg1</ref> and <ref resolved='predef::`&amp;.arg2'>arg2</ref>.</p>
</text></group></mixed><p>The function is not destructive on the arguments - the result is
   always a new instance.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`|'>`|()</ref>, <ref resolved='lfun::`&amp;'>lfun::`&amp;()</ref>, <ref resolved='lfun::``&amp;'>lfun::``&amp;()</ref></p>
</text></group></doc>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><object resolved='predef::`&amp;'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`&amp;'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
<method name='`&amp;'>
<arguments><argument name='arg1'><type><or><type><mixed/></type><program/></or></type></argument><argument name='arg2'><type><or><type><mixed/></type><program/></or></type></argument></arguments>
<returntype><type><mixed/></type></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`|'><doc><text><p>Bitwise or/union.</p>
<p>   Every expression with the <expr>|</expr> operator becomes a call to
   this function, i.e. <expr>a|b</expr> is the same as
   <expr>predef::`|(a,b)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument is returned.</p>
<p>   If there are more than two arguments, the result is:
   <expr>`|(`|(<ref resolved='predef::`|.arg1'>arg1</ref>, <ref resolved='predef::`|.arg2'>arg2</ref>), @<ref resolved='predef::`|.extras'>extras</ref>)</expr>.</p>
<p>   Otherwise, if <ref resolved='predef::`|.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`|'>lfun::`|()</ref>, that
   function is called with <ref resolved='predef::`|.arg2'>arg2</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise, if <ref resolved='predef::`|.arg2'>arg2</ref> is an object with an <ref resolved='lfun::``|'>lfun::``|()</ref>, that
   function is called with <ref resolved='predef::`|.arg1'>arg1</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise the result depends on the argument types:</p>
<mixed name='arg1'><group><type><int/></type><text><p>Bitwise or of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p>
</text></group><group><type><string/></type><text><p>The result is a string where each character is the bitwise
       or of the characters in the same position in <ref resolved='predef::`|.arg1'>arg1</ref> and
       <ref resolved='predef::`|.arg2'>arg2</ref>. The arguments must be strings of the same length.</p>
</text></group><group><type><array/></type><text><p>The result is an array with the elements in <ref resolved='predef::`|.arg1'>arg1</ref>
       concatenated with those in <ref resolved='predef::`|.arg2'>arg2</ref> that doesn't occur in
       <ref resolved='predef::`|.arg1'>arg1</ref> (according to <ref resolved='predef::`=='>`==</ref>). The order between the
       elements that come from the same argument is kept.</p>
<p>       Every element in <ref resolved='predef::`|.arg1'>arg1</ref> is only matched once against an
       element in <ref resolved='predef::`|.arg2'>arg2</ref>, so if <ref resolved='predef::`|.arg2'>arg2</ref> contains several elements
       that are equal to each other and are more than their
       counterparts in <ref resolved='predef::`|.arg1'>arg1</ref>, the rightmost remaining elements in
       <ref resolved='predef::`|.arg2'>arg2</ref> are kept.</p>
</text></group><group><type><mapping/></type><text><p>The result is like <ref resolved='predef::`|.arg1'>arg1</ref> but extended with the entries
       from <ref resolved='predef::`|.arg2'>arg2</ref>. If the same index (according to <ref resolved='predef::hash_value'>hash_value</ref>
       and <ref resolved='predef::`=='>`==</ref>) occur in both, the value from <ref resolved='predef::`|.arg2'>arg2</ref> is used.</p>
</text></group><group><type><multiset/></type><text><p>The result is like <ref resolved='predef::`|.arg1'>arg1</ref> but extended with the entries in
       <ref resolved='predef::`|.arg2'>arg2</ref> that doesn't already occur in <ref resolved='predef::`|.arg1'>arg1</ref> (according to
       <ref resolved='predef::`=='>`==</ref>). Subsequences with orderwise equal entries (i.e.
       where <ref resolved='predef::`&lt;'>`&lt;</ref> returns false) are handled just like the array
       case above.</p>
</text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>Type union of <ref resolved='predef::`|.arg1'>arg1</ref> and <ref resolved='predef::`|.arg2'>arg2</ref>.</p>
</text></group></mixed><p>The function is not destructive on the arguments - the result is
   always a new instance.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&amp;'>`&amp;()</ref>, <ref resolved='lfun::`|'>lfun::`|()</ref>, <ref resolved='lfun::``|'>lfun::``|()</ref></p>
</text></group></doc>
<method name='`|'>
<arguments><argument name='arg1'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><object resolved='predef::`|'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`|'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
<method name='`|'>
<arguments><argument name='arg1'><type><or><program/><type><mixed/></type></or></type></argument><argument name='arg2'><type><or><program/><type><mixed/></type></or></type></argument></arguments>
<returntype><type><mixed/></type></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`^'><doc><text><p>Exclusive or.</p>
<p>   Every expression with the <expr>^</expr> operator becomes a call to
   this function, i.e. <expr>a^b</expr> is the same as
   <expr>predef::`^(a,b)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument is returned.</p>
<p>   If there are more than two arguments, the result is:
   <expr>`^(`^(<ref resolved='predef::`^.arg1'>arg1</ref>, <ref resolved='predef::`^.arg2'>arg2</ref>), @<ref resolved='predef::`^.extras'>extras</ref>)</expr>.</p>
<p>   Otherwise, if <ref resolved='predef::`^.arg1'>arg1</ref> is an object with an <ref resolved='lfun::`^'>lfun::`^()</ref>, that
   function is called with <ref resolved='predef::`^.arg2'>arg2</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise, if <ref resolved='predef::`^.arg2'>arg2</ref> is an object with an <ref resolved='lfun::``^'>lfun::``^()</ref>, that
   function is called with <ref resolved='predef::`^.arg1'>arg1</ref> as argument, and its result is
   returned.</p>
<p>   Otherwise the result depends on the argument types:</p>
<mixed name='arg1'><group><type><int/></type><text><p>Bitwise exclusive or of <ref resolved='predef::`^.arg1'>arg1</ref> and <ref resolved='predef::`^.arg2'>arg2</ref>.</p>
</text></group><group><type><string/></type><text><p>The result is a string where each character is the bitwise
       exclusive or of the characters in the same position in
       <ref resolved='predef::`^.arg1'>arg1</ref> and <ref resolved='predef::`^.arg2'>arg2</ref>. The arguments must be strings of the
       same length.</p>
</text></group><group><type><array/></type><text><p>The result is an array with the elements in <ref resolved='predef::`^.arg1'>arg1</ref> that
       doesn't occur in <ref resolved='predef::`^.arg2'>arg2</ref> concatenated with those in <ref resolved='predef::`^.arg2'>arg2</ref>
       that doesn't occur in <ref resolved='predef::`^.arg1'>arg1</ref> (according to <ref resolved='predef::`=='>`==</ref>). The
       order between the elements that come from the same argument
       is kept.</p>
<p>       Every element is only matched once against an element in the
       other array, so if one contains several elements that are
       equal to each other and are more than their counterparts in
       the other array, the rightmost remaining elements are kept.</p>
</text></group><group><type><mapping/></type><text><p>The result is like <ref resolved='predef::`^.arg1'>arg1</ref> but with the entries from <ref resolved='predef::`^.arg1'>arg1</ref>
       and <ref resolved='predef::`^.arg2'>arg2</ref> whose indices are different between them
       (according to <ref resolved='predef::hash_value'>hash_value</ref> and <ref resolved='predef::`=='>`==</ref>).</p>
</text></group><group><type><multiset/></type><text><p>The result is like <ref resolved='predef::`^.arg1'>arg1</ref> but with the entries from <ref resolved='predef::`^.arg1'>arg1</ref>
       and <ref resolved='predef::`^.arg2'>arg2</ref> that are different between them (according to
       <ref resolved='predef::hash_value'>hash_value</ref> and <ref resolved='predef::`=='>`==</ref>). Subsequences with orderwise equal
       entries (i.e. where <ref resolved='predef::`&lt;'>`&lt;</ref> returns false) are handled just
       like the array case above.</p>
</text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The result is a type computed like this:
   	  <expr>(<ref resolved='predef::`^.arg1'>arg1</ref>&amp;~<ref resolved='predef::`^.arg2'>arg2</ref>)|(~<ref resolved='predef::`^.arg1'>arg1</ref>&amp;<ref resolved='predef::`^.arg2'>arg2</ref>)</expr>.</p>
</text></group></mixed><p>The function is not destructive on the arguments - the result is
   always a new instance.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&amp;'>`&amp;()</ref>, <ref resolved='predef::`|'>`|()</ref>, <ref resolved='lfun::`^'>lfun::`^()</ref>, <ref resolved='lfun::``^'>lfun::``^()</ref></p>
</text></group></doc>
<method name='`^'>
<arguments><argument name='arg1'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><object resolved='predef::`^'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`^'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><mapping/></type></argument><argument name='arg2'><type><mapping/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><multiset/></type></argument><argument name='arg2'><type><multiset/></type></argument></arguments>
<returntype><multiset/></returntype>
</method>
<method name='`^'>
<arguments><argument name='arg1'><type><or><program/><type><mixed/></type></or></type></argument><argument name='arg2'><type><or><program/><type><mixed/></type></or></type></argument></arguments>
<returntype><type><mixed/></type></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&lt;&lt;'><doc><text><p>Left shift.</p>
<p>   Every expression with the <expr>&lt;&lt;</expr> operator becomes a call to
   this function, i.e. <expr>a&lt;&lt;b</expr> is the same as
   <expr>predef::`&lt;&lt;(a,b)</expr>.</p>
<p>   If <ref resolved='predef::`&lt;&lt;.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`&lt;&lt;'>lfun::`&lt;&lt;()</ref>, that
   function will be called with <ref resolved='predef::`&lt;&lt;.arg2'>arg2</ref> as the single argument.</p>
<p>   If <ref resolved='predef::`&lt;&lt;.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``&lt;&lt;'>lfun::``&lt;&lt;()</ref>, that
   function will be called with <ref resolved='predef::`&lt;&lt;.arg1'>arg1</ref> as the single argument.</p>
<p>   Otherwise <ref resolved='predef::`&lt;&lt;.arg1'>arg1</ref> will be shifted <ref resolved='predef::`&lt;&lt;.arg2'>arg2</ref> bits left.</p>
</text><group><seealso/><text><p><ref resolved='predef::`&gt;&gt;'>`&gt;&gt;()</ref></p>
</text></group></doc>
<method name='`&lt;&lt;'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`&lt;&lt;'>
<arguments><argument name='arg1'><type><object resolved='predef::`&lt;&lt;'/></type></argument><argument name='arg2'><type><or><int/><object resolved='predef::`&lt;&lt;'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&lt;&lt;'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><object resolved='predef::`&lt;&lt;'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`&gt;&gt;'><doc><text><p>Right shift.</p>
<p>   Every expression with the <expr>&gt;&gt;</expr> operator becomes a call to
   this function, i.e. <expr>a&gt;&gt;b</expr> is the same as
   <expr>predef::`&gt;&gt;(a,b)</expr>.</p>
<p>   If <ref resolved='predef::`&gt;&gt;.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`&gt;&gt;'>lfun::`&gt;&gt;()</ref>, that
   function will be called with <ref resolved='predef::`&gt;&gt;.arg2'>arg2</ref> as the single argument.</p>
<p>   If <ref resolved='predef::`&gt;&gt;.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``&gt;&gt;'>lfun::``&gt;&gt;()</ref>, that
   function will be called with <ref resolved='predef::`&gt;&gt;.arg1'>arg1</ref> as the single argument.</p>
<p>   Otherwise <ref resolved='predef::`&gt;&gt;.arg1'>arg1</ref> will be shifted <ref resolved='predef::`&gt;&gt;.arg2'>arg2</ref> bits right.</p>
</text><group><seealso/><text><p><ref resolved='predef::`&lt;&lt;'>`&lt;&lt;()</ref></p>
</text></group></doc>
<method name='`&gt;&gt;'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`&gt;&gt;'>
<arguments><argument name='arg1'><type><object resolved='predef::`&gt;&gt;'/></type></argument><argument name='arg2'><type><or><int/><object resolved='predef::`&gt;&gt;'/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`&gt;&gt;'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><object resolved='predef::`&gt;&gt;'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`*'><doc><text><p>Multiplication/repetition/implosion.</p>
<p>   Every expression with the <expr>*</expr> operator becomes a call to
   this function, i.e. <expr>a*b</expr> is the same as
   <expr>predef::`*(a,b)</expr>. Longer <expr>*</expr> expressions are
   normally optimized to one call, so e.g. <expr>a*b*c</expr> becomes
   <expr>predef::`*(a,b,c)</expr>.</p>
</text><group><returns/><text><p>If there's a single argument, that argument will be returned.</p>
<p>   If the first argument is an object that implements <ref resolved='lfun::`*'>lfun::`*()</ref>,
   that function will be called with the rest of the arguments.</p>
<p>   If there are more than two arguments, the result will be
   <expr>`*(`*(<ref resolved='predef::`*.arg1'>arg1</ref>, <ref resolved='predef::`*.arg2'>arg2</ref>), @<ref resolved='predef::`*.extras'>extras</ref>)</expr>.</p>
<p>   If <ref resolved='predef::`*.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``*'>lfun::``*()</ref>, that
   function will be called with <ref resolved='predef::`*.arg1'>arg1</ref> as the single argument.</p>
<p>   Otherwise the result will be as follows:</p>
<mixed name='arg1'><group><type><array/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be <ref resolved='predef::`*.arg1'>arg1</ref> concatenated <ref resolved='predef::`*.arg2'>arg2</ref> times.</p>
</text></group><group><type><or><string/><array/></or></type><text><p>The result will be the elements of <ref resolved='predef::`*.arg1'>arg1</ref> concatenated with
   	      <ref resolved='predef::`*.arg2'>arg2</ref> interspersed.</p>
</text></group></mixed></text></group><group><type><string/></type><text><p>The result will be <ref resolved='predef::`*.arg1'>arg1</ref> concatenated <ref resolved='predef::`*.arg2'>arg2</ref> times.</p>
</text></group><group><type><or><int/><float/></or></type><text><p>The result will be <expr><ref resolved='predef::`*.arg1'>arg1</ref> * <ref resolved='predef::`*.arg2'>arg2</ref></expr>, and will be a
   	  float if either <ref resolved='predef::`*.arg1'>arg1</ref> or <ref resolved='predef::`*.arg2'>arg2</ref> is a float.</p>
</text></group></mixed>
</text></group><group><note/><text><p>In Pike 7.0 and earlier the multiplication order was unspecified.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`+'>`+()</ref>, <ref resolved='predef::`-'>`-()</ref>, <ref resolved='predef::`/'>`/()</ref>, <ref resolved='lfun::`*'>lfun::`*()</ref>, <ref resolved='lfun::``*'>lfun::``*()</ref></p>
</text></group></doc>
<method name='`*'>
<arguments><argument name='arg1'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><object resolved='predef::`*'/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`*'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><array><valuetype><string/></valuetype></array></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><array><valuetype><array/></valuetype></array></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`*'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`/'><doc><text><p>Division/split.</p>
<p>   Every expression with the <expr>/</expr> operator becomes a call to
   this function, i.e. <expr>a/b</expr> is the same as
   <expr>predef::`/(a,b)</expr>.</p>
</text><group><returns/><text><p>If there are more than two arguments, the result will be
   <expr>`/(`/(<ref resolved='predef::`/.arg1'>arg1</ref>, <ref resolved='predef::`/.arg2'>arg2</ref>), @<ref resolved='predef::`/.extras'>extras</ref>)</expr>.</p>
<p>   If <ref resolved='predef::`/.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`/'>lfun::`/()</ref>, that
   function will be called with <ref resolved='predef::`/.arg2'>arg2</ref> as the single argument.</p>
<p>   If <ref resolved='predef::`/.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``/'>lfun::``/()</ref>, that
   function will be called with <ref resolved='predef::`/.arg1'>arg1</ref> as the single argument.</p>
<p>   Otherwise the result will be as follows:</p>
<mixed name='arg1'><group><type><string/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be and array of <ref resolved='predef::`/.arg1'>arg1</ref> split in segments
   	      of length <ref resolved='predef::`/.arg2'>arg2</ref>. If <ref resolved='predef::`/.arg2'>arg2</ref> is negative the splitting
   	      will start from the end of <ref resolved='predef::`/.arg1'>arg1</ref>.</p>
</text></group><group><type><string/></type><text><p>The result will be an array of <ref resolved='predef::`/.arg1'>arg1</ref> split at each
   	      occurrence of <ref resolved='predef::`/.arg2'>arg2</ref>. Note that the segments that
   	      matched against <ref resolved='predef::`/.arg2'>arg2</ref> will not be in the result.</p>
</text></group></mixed></text></group><group><type><array/></type><text><mixed name='arg2'><group><type><or><int/><float/></or></type><text><p>The result will be and array of <ref resolved='predef::`/.arg1'>arg1</ref> split in segments
   	      of length <ref resolved='predef::`/.arg2'>arg2</ref>. If <ref resolved='predef::`/.arg2'>arg2</ref> is negative the splitting
   	      will start from the end of <ref resolved='predef::`/.arg1'>arg1</ref>.</p>
</text></group><group><type><array/></type><text><p>The result will be an array of <ref resolved='predef::`/.arg1'>arg1</ref> split at each
   	      occurrence of <ref resolved='predef::`/.arg2'>arg2</ref>. Note that the elements that
   	      matched against <ref resolved='predef::`/.arg2'>arg2</ref> will not be in the result.</p>
</text></group></mixed></text></group><group><type><or><float/><int/></or></type><text><p>The result will be <expr><ref resolved='predef::`/.arg1'>arg1</ref> / <ref resolved='predef::`/.arg2'>arg2</ref></expr>. If both arguments
   	  are int, the result will be truncated to an int. Otherwise the
   	  result will be a float.</p>
</text></group></mixed></text></group><group><note/><text><p>Unlike in some languages, the function f(x) = x/n (x and n integers)
   behaves in a well-defined way and is always rounded down. When you
   increase x, f(x) will increase with one for each n:th increment. For
   all x, (x + n) / n = x/n + 1; crossing
   zero is not special. This also means that / and % are compatible, so
   that a = b*(a/b) + a%b for all a and b.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`%'>`%</ref></p>
</text></group></doc>
<method name='`/'>
<arguments><argument name='arg1'><type><object resolved='predef::`/'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`/'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array/></valuetype></array></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><int/><float/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`/'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><mixed/></type></argument><argument name='extras'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`%'><doc><text><p>Modulo.</p>
<p>   Every expression with the <expr>%</expr> operator becomes a call to
   this function, i.e. <expr>a%b</expr> is the same as
   <expr>predef::`%(a,b)</expr>.</p>
</text><group><returns/><text><p>If <ref resolved='predef::`%.arg1'>arg1</ref> is an object that implements <ref resolved='lfun::`%'>lfun::`%()</ref> then
   that function will be called with <ref resolved='predef::`%.arg2'>arg2</ref> as the single argument.</p>
<p>   If <ref resolved='predef::`%.arg2'>arg2</ref> is an object that implements <ref resolved='lfun::``%'>lfun::``%()</ref> then
   that function will be called with <ref resolved='predef::`%.arg2'>arg2</ref> as the single argument.</p>
<p>   Otherwise the result will be as follows:</p>
<mixed name='arg1'><group><type><or><string/><array/></or></type><text><p>If <ref resolved='predef::`%.arg2'>arg2</ref> is positive, the result will be the last
   	  <expr>`%(<ref resolved='predef::sizeof'>sizeof</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>), <ref resolved='predef::`%.arg2'>arg2</ref>)</expr> elements of <ref resolved='predef::`%.arg1'>arg1</ref>.
   	  If <ref resolved='predef::`%.arg2'>arg2</ref> is negative, the result will be the first
   	  <expr>`%(<ref resolved='predef::sizeof'>sizeof</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>), -<ref resolved='predef::`%.arg2'>arg2</ref>)</expr> elements of <ref resolved='predef::`%.arg1'>arg1</ref>.</p>
</text></group><group><type><or><int/><float/></or></type><text><p>The result will be
   	  <expr><ref resolved='predef::`%.arg1'>arg1</ref> - <ref resolved='predef::`%.arg2'>arg2</ref>*<ref resolved='predef::floor'>floor</ref>(<ref resolved='predef::`%.arg1'>arg1</ref>/<ref resolved='predef::`%.arg2'>arg2</ref>)</expr>.
   	  The result will be a float if either <ref resolved='predef::`%.arg1'>arg1</ref> or <ref resolved='predef::`%.arg2'>arg2</ref> is
   	  a float, and an int otherwise.</p>
</text></group></mixed><p>For numbers, this means that</p>
<ol><group><item/><text><p>a % b always has the same sign as b (typically b is positive;
       array size, rsa modulo, etc, and a varies a lot more than b).</p>
</text></group><group><item/><text><p>The function f(x) = x % n behaves in a sane way; as x increases,
       f(x) cycles through the values 0,1, ..., n-1, 0, .... Nothing
       strange happens when you cross zero.</p>
</text></group><group><item/><text><p>The % operator implements the binary "mod" operation, as defined
       by Donald Knuth (see the Art of Computer Programming, 1.2.4). It
       should be noted that Pike treats %-by-0 as an error rather than
       returning 0, though.</p>
</text></group><group><item/><text><p>/ and % are compatible, so that a = b*(a/b) + a%b for all a and b.</p>
</text></group></ol></text></group><group><seealso/><text><p><ref resolved='predef::`/'>`/</ref></p>
</text></group></doc>
<method name='`%'>
<arguments><argument name='arg1'><type><object resolved='predef::`%'/></type></argument><argument name='arg2'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><mixed/></type></argument><argument name='arg2'><type><object resolved='predef::`%'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><array/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><float/></type></argument><argument name='arg2'><type><or><float/><int/></or></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`%'>
<arguments><argument name='arg1'><type><int/></type></argument><argument name='arg2'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`!'><doc><text><p>Logical not.</p>
<p>   Every expression with the <expr>!</expr> operator becomes a call to
   this function, i.e. <expr>!a</expr> is the same as
   <expr>predef::`!(a)</expr>.</p>
<p>   It's also used when necessary to test truth on objects, i.e. in
   a statement <expr>if (o) ...</expr> where <expr>o</expr> is an object, the
   test becomes the equivalent of <expr>!!o</expr> so that any
   <ref resolved='lfun::`!'>lfun::`!()</ref> the object might have gets called.</p>
</text><group><returns/><text><p>If <ref resolved='predef::`!.arg'>arg</ref> is an object that implements <ref resolved='lfun::`!'>lfun::`!()</ref>, that function
   will be called.</p>
<p>   If <ref resolved='predef::`!.arg'>arg</ref> is <expr>0</expr> (zero), a destructed object, or a function in a
   destructed object, <expr>1</expr> will be returned.</p>
<p>   Otherwise <expr>0</expr> (zero) will be returned.</p>
</text></group><group><note/><text><p>No float is considered false, not even <expr>0.0</expr>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`=='>`==()</ref>, <ref resolved='predef::`!='>`!=()</ref>, <ref resolved='lfun::`!'>lfun::`!()</ref></p>
</text></group></doc>
<method name='`!'>
<arguments><argument name='arg'><type><or><object resolved='predef::`!'/><function/></or></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='`!'>
<arguments><argument name='arg'><type><int><min>0</min><max>0</max></int></type></argument></arguments>
<returntype><int><min>1</min><max>1</max></int></returntype>
</method>
<method name='`!'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`~'><doc><text><p>Complement/inversion.</p>
<p>   Every expression with the <expr>~</expr> operator becomes a call to
   this function, i.e. <expr>~a</expr> is the same as
   <expr>predef::`~(a)</expr>.</p>
</text><group><returns/><text><p>The result will be as follows:</p>
<mixed name='arg'><group><type><object resolved='predef::`~'/></type><text><p>If <ref resolved='predef::`~.arg'>arg</ref> implements <ref resolved='lfun::`~'>lfun::`~()</ref>, that function will be called.</p>
</text></group><group><type><int/></type><text><p>The bitwise inverse of <ref resolved='predef::`~.arg'>arg</ref> will be returned.</p>
</text></group><group><type><float/></type><text><p>The result will be <expr>-1.0 - <ref resolved='predef::`~.arg'>arg</ref></expr>.</p>
</text></group><group><type><or><type><mixed/></type><program/></or></type><text><p>The type inverse of <ref resolved='predef::`~.arg'>arg</ref> will be returned.</p>
</text></group><group><type><string/></type><text><p>If <ref resolved='predef::`~.arg'>arg</ref> only contains characters in the range 0 - 255 (8-bit),
   	  a string containing the corresponding 8-bit inverses will be
   	  returned.</p>
</text></group></mixed>
</text></group><group><seealso/><text><p><ref resolved='predef::`!'>`!()</ref>, <ref resolved='lfun::`~'>lfun::`~()</ref></p>
</text></group></doc>
<method name='`~'>
<arguments><argument name='arg'><type><object resolved='predef::`~'/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`~'>
<arguments><argument name='arg'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`~'>
<arguments><argument name='arg'><type><float/></type></argument></arguments>
<returntype><float/></returntype>
</method>
<method name='`~'>
<arguments><argument name='arg'><type><or><type><mixed/></type><program/></or></type></argument></arguments>
<returntype><type><mixed/></type></returntype>
</method>
<method name='`~'>
<arguments><argument name='arg'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]'><doc><text><p>Index/subrange.</p>
<p>   Every non-lvalue expression with the <expr>[]</expr> operator becomes
   a call to this function, i.e. <expr>a[i]</expr> is the same as
   <expr>predef::`[](a,i)</expr> and <expr>a[i..j]</expr> is the same as
   <expr>predef::`[](a,i,j)</expr>. If the lower limit <expr>i</expr> is left
   out, <expr>0</expr> is passed to the function. If the upper limit
   <expr>j</expr> is left out, <ref resolved='predef::Int.NATIVE_MAX'>Int.NATIVE_MAX</ref> is passed to the
   function, but that might be changed to an even larger number in
   the future.</p>
</text><group><returns/><text><p>If <ref resolved='predef::`[].arg'>arg</ref> is an object that implements <ref resolved='lfun::`[]'>lfun::`[]()</ref>, that function
   will be called with the rest of the arguments.</p>
<p>   If there are 2 arguments the result will be as follows:</p>
<mixed name='arg'><group><type><object resolved='predef::`[]'/></type><text><p>The non-static (ie public) symbol named <ref resolved='predef::`[].index'>index</ref> will be looked up
   	  in <ref resolved='predef::`[].arg'>arg</ref>.</p>
</text></group><group><type><int/></type><text><p>The bignum function named <ref resolved='predef::`[].index'>index</ref> will be looked up in <ref resolved='predef::`[].arg'>arg</ref>.</p>
</text></group><group><type><array/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> is an int, index number <ref resolved='predef::`[].index'>index</ref> of <ref resolved='predef::`[].arg'>arg</ref> will be
   	  returned. Otherwise an array of all elements in <ref resolved='predef::`[].arg'>arg</ref> indexed
   	  with <ref resolved='predef::`[].index'>index</ref> will be returned.</p>
</text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> exists in <ref resolved='predef::`[].arg'>arg</ref> the corresponding value will be
       returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p>
</text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`[].index'>index</ref> exists in <ref resolved='predef::`[].arg'>arg</ref>, <expr>1</expr> will be returned.
   	  Otherwise <expr>UNDEFINED</expr> will be returned.</p>
</text></group><group><type><string/></type><text><p>The character (int) at index <ref resolved='predef::`[].index'>index</ref> in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p>
</text></group><group><type><program/></type><text><p>The non-static (ie public) constant symbol <ref resolved='predef::`[].index'>index</ref> will be
   	  looked up in <ref resolved='predef::`[].arg'>arg</ref>.</p>
</text></group></mixed><p>Otherwise if there are 3 arguments the result will be as follows:</p>
<mixed name='arg'><group><type><string/></type><text><p>A string with the characters between <ref resolved='predef::`[].start'>start</ref> and <ref resolved='predef::`[].end'>end</ref> (inclusive)
   	  in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p>
</text></group><group><type><array/></type><text><p>An array with the elements between <ref resolved='predef::`[].start'>start</ref> and <ref resolved='predef::`[].end'>end</ref> (inclusive)
   	  in <ref resolved='predef::`[].arg'>arg</ref> will be returned.</p>
</text></group></mixed>
</text></group><group><note/><text><p>An indexing expression in an lvalue context, i.e. where the
   index is being assigned a new value, uses <ref resolved='predef::`[]='>`[]=</ref> instead of
   this function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`-&gt;'>`-&gt;()</ref>, <ref resolved='lfun::`[]'>lfun::`[]()</ref>, <ref resolved='predef::`[]='>`[]=</ref></p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><int/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><int/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><string/></type></argument><argument name='index'><type><int/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><program/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><object resolved='predef::`[]'/></type></argument><argument name='start'><type><mixed/></type></argument><argument name='end'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><string/></type></argument><argument name='start'><type><int/></type></argument><argument name='end'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='`[]'>
<arguments><argument name='arg'><type><array/></type></argument><argument name='start'><type><int/></type></argument><argument name='end'><type><int/></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`-&gt;'><doc><text><p>Arrow index.</p>
<p>   Every non-lvalue expression with the <expr>-&gt;</expr> operator becomes
   a call to this function. <expr>a-&gt;b</expr> is the same as
   <expr>predef::`^(a,"b")</expr> where <expr>"b"</expr> is the symbol
   <expr>b</expr> in string form.</p>
<p>   This function behaves like <ref resolved='predef::`[]'>`[]</ref>, except that the index is
   passed literally as a string instead of being evaluated.</p>
</text><group><returns/><text><p>If <ref resolved='predef::`-&gt;.arg'>arg</ref> is an object that implements <ref resolved='lfun::`-&gt;'>lfun::`-&gt;()</ref>, that function
   will be called with <ref resolved='predef::`-&gt;.index'>index</ref> as the single argument.</p>
<p>   Otherwise the result will be as follows:</p>
<mixed name='arg'><group><type><object resolved='predef::`-&gt;'/></type><text><p>The non-static (ie public) symbol named <ref resolved='predef::`-&gt;.index'>index</ref> will be looked up
   	  in <ref resolved='predef::`-&gt;.arg'>arg</ref>.</p>
</text></group><group><type><int/></type><text><p>The bignum function named <ref resolved='predef::`-&gt;.index'>index</ref> will be looked up in <ref resolved='predef::`-&gt;.arg'>arg</ref>.</p>
</text></group><group><type><array/></type><text><p>An array of all elements in <ref resolved='predef::`-&gt;.arg'>arg</ref> arrow indexed with <ref resolved='predef::`-&gt;.index'>index</ref>
   	  will be returned.</p>
</text></group><group><type><mapping/></type><text><p>If <ref resolved='predef::`-&gt;.index'>index</ref> exists in <ref resolved='predef::`-&gt;.arg'>arg</ref> the corresponding value will be
       returned. Otherwise <expr>UNDEFINED</expr> will be returned.</p>
</text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`-&gt;.index'>index</ref> exists in <ref resolved='predef::`-&gt;.arg'>arg</ref>, <expr>1</expr> will be returned.
   	  Otherwise <expr>UNDEFINED</expr> will be returned.</p>
</text></group><group><type><program/></type><text><p>The non-static (ie public) constant symbol <ref resolved='predef::`-&gt;.index'>index</ref> will be
   	  looked up in <ref resolved='predef::`-&gt;.arg'>arg</ref>.</p>
</text></group></mixed>
</text></group><group><note/><text><p>In an expression <expr>a-&gt;b</expr>, the symbol <expr>b</expr> can be any
   token that matches the identifier syntax - keywords are
   disregarded in that context.</p>
</text></group><group><note/><text><p>An arrow indexing expression in an lvalue context, i.e. where
   the index is being assigned a new value, uses <ref resolved='predef::`-&gt;='>`-&gt;=</ref> instead of
   this function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`[]'>`[]()</ref>, <ref resolved='lfun::`-&gt;'>lfun::`-&gt;()</ref>, <ref resolved='::`-&gt;'>::`-&gt;()</ref>, <ref resolved='predef::`-&gt;='>`-&gt;=</ref></p>
</text></group></doc>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><object resolved='predef::`-&gt;'/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><int/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><program/></type></argument><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`[]='><doc><text><p>Index assignment.</p>
<p>   Every lvalue expression with the <expr>[]</expr> operator becomes a
   call to this function, i.e. <expr>a[b]=c</expr> is the same as
   <expr>predef::`[]=(a,b,c)</expr>.</p>
<p>   If <ref resolved='predef::`[]=.arg'>arg</ref> is an object that implements <ref resolved='lfun::`[]='>lfun::`[]=()</ref>, that function
   will be called with <ref resolved='predef::`[]=.index'>index</ref> and <ref resolved='predef::`[]=.val'>val</ref> as the arguments.</p>
<mixed name='arg'><group><type><object resolved='predef::`[]='/></type><text><p>The non-static (ie public) variable named <ref resolved='predef::`[]=.index'>index</ref> will be looked up
   	  in <ref resolved='predef::`[]=.arg'>arg</ref>, and assigned <ref resolved='predef::`[]=.val'>val</ref>.</p>
</text></group><group><type><or><array/><mapping/></or></type><text><p>Index <ref resolved='predef::`[]=.index'>index</ref> in <ref resolved='predef::`[]=.arg'>arg</ref> will be assigned <ref resolved='predef::`[]=.val'>val</ref>.</p>
</text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`[]=.val'>val</ref> is <expr>0</expr> (zero), one occurrance of <ref resolved='predef::`[]=.index'>index</ref> in
   	  <ref resolved='predef::`[]=.arg'>arg</ref> will be removed. Otherwise <ref resolved='predef::`[]=.index'>index</ref> will be added
   	  to <ref resolved='predef::`[]=.arg'>arg</ref> if it is not already there.</p>
</text></group></mixed>
</text><group><returns/><text><p><ref resolved='predef::`[]=.val'>val</ref> will be returned.</p>
</text></group><group><note/><text><p>An indexing expression in a non-lvalue context, i.e. where the
   index is being queried instead of assigned, uses <ref resolved='predef::`[]'>`[]</ref> instead
   of this function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`-&gt;='>`-&gt;=()</ref>, <ref resolved='lfun::`[]='>lfun::`[]=()</ref>, <ref resolved='predef::`[]'>`[]</ref></p>
</text></group></doc>
<method name='`[]='>
<arguments><argument name='arg'><type><object resolved='predef::`[]='/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='arg'><type><object resolved='predef::`[]='/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='arg'><type><array/></type></argument><argument name='index'><type><int/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`[]='>
<arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><mixed/></type></argument><argument name='val'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='`-&gt;='><doc><text><p>Arrow index assignment.</p>
<p>   Every lvalue expression with the <expr>-&gt;</expr> operator becomes a
   call to this function, i.e. <expr>a-&gt;b=c</expr> is the same as
   <expr>predef::`-&gt;=(a,"b",c)</expr> where <expr>"b"</expr> is the symbol
   <expr>b</expr> in string form.</p>
<p>   This function behaves like <ref resolved='predef::`[]='>`[]=</ref>, except that the index is
   passed literally as a string instead of being evaluated.</p>
<p>   If <ref resolved='predef::`-&gt;=.arg'>arg</ref> is an object that implements <ref resolved='lfun::`-&gt;='>lfun::`-&gt;=()</ref>, that function
   will be called with <ref resolved='predef::`-&gt;=.index'>index</ref> and <ref resolved='predef::`-&gt;=.val'>val</ref> as the arguments.</p>
<mixed name='arg'><group><type><object resolved='predef::`-&gt;='/></type><text><p>The non-static (ie public) variable named <ref resolved='predef::`-&gt;=.index'>index</ref> will be looked up
   	  in <ref resolved='predef::`-&gt;=.arg'>arg</ref>, and assigned <ref resolved='predef::`-&gt;=.val'>val</ref>.</p>
</text></group><group><type><or><array/><mapping/></or></type><text><p>Index <ref resolved='predef::`-&gt;=.index'>index</ref> in <ref resolved='predef::`-&gt;=.arg'>arg</ref> will be assigned <ref resolved='predef::`-&gt;=.val'>val</ref>.</p>
</text></group><group><type><multiset/></type><text><p>If <ref resolved='predef::`-&gt;=.val'>val</ref> is <expr>0</expr> (zero), one occurrance of <ref resolved='predef::`-&gt;=.index'>index</ref> in
   	  <ref resolved='predef::`-&gt;=.arg'>arg</ref> will be removed. Otherwise <ref resolved='predef::`-&gt;=.index'>index</ref> will be added
   	  to <ref resolved='predef::`-&gt;=.arg'>arg</ref> if it is not already there.</p>
</text></group></mixed>
</text><group><returns/><text><p><ref resolved='predef::`-&gt;=.val'>val</ref> will be returned.</p>
</text></group><group><note/><text><p>In an expression <expr>a-&gt;b=c</expr>, the symbol <expr>b</expr> can be any
   token that matches the identifier syntax - keywords are
   disregarded in that context.</p>
</text></group><group><note/><text><p>An arrow indexing expression in a non-lvalue context, i.e. where
   the index is being queried instead of assigned, uses <ref resolved='predef::`-&gt;'>`-&gt;</ref>
   instead of this function.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`[]='>`[]=()</ref>, <ref resolved='lfun::`-&gt;='>lfun::`-&gt;=()</ref>, <ref resolved='predef::`-&gt;'>`-&gt;</ref></p>
</text></group></doc>
<method name='`-&gt;='>
<arguments><argument name='arg'><type><object resolved='predef::`-&gt;='/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;='>
<arguments><argument name='arg'><type><mapping/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='`-&gt;='>
<arguments><argument name='arg'><type><multiset/></type></argument><argument name='index'><type><string/></type></argument><argument name='val'><type><int><min>0</min><max>1</max></int></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-type='method' homogen-name='sizeof'><doc><text><p>Size query.</p>
</text><group><returns/><text><p>The result will be as follows:</p>
<mixed name='arg'><group><type><string/></type><text><p>The number of characters in <ref resolved='predef::sizeof.arg'>arg</ref> will be returned.</p>
</text></group><group><type><or><array/><multiset/></or></type><text><p>The number of elements in <ref resolved='predef::sizeof.arg'>arg</ref> will be returned.</p>
</text></group><group><type><mapping/></type><text><p>The number of key-value pairs in <ref resolved='predef::sizeof.arg'>arg</ref> will be returned.</p>
</text></group><group><type><object resolved='predef::sizeof'/></type><text><p>If <ref resolved='predef::sizeof.arg'>arg</ref> implements <ref resolved='lfun::_sizeof'>lfun::_sizeof()</ref>, that function will
   	  be called. Otherwise the number of non-static (ie public)
   	  symbols in <ref resolved='predef::sizeof.arg'>arg</ref> will be returned.</p>
</text></group></mixed>
</text></group><group><seealso/><text><p><ref resolved='lfun::_sizeof'>lfun::_sizeof()</ref></p>
</text></group></doc>
<method name='sizeof'>
<arguments><argument name='arg'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sizeof'>
<arguments><argument name='arg'><type><array/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sizeof'>
<arguments><argument name='arg'><type><mapping/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sizeof'>
<arguments><argument name='arg'><type><multiset/></type></argument></arguments>
<returntype><int/></returntype>
</method>
<method name='sizeof'>
<arguments><argument name='arg'><type><object resolved='predef::sizeof'/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>


<docgroup homogen-type='method'><doc><text><p>Call a function.</p>
<p> Calls the function <ref resolved='predef::`().fun'>fun</ref> with the arguments specified by <ref resolved='predef::`().args'>args</ref>.</p>
</text><group><seealso/><text><p><ref resolved='lfun::`()'>lfun::`()()</ref></p>
</text></group></doc>
<method name='`()'>
<arguments><argument name='fun'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
<method name='call_function'>
<arguments><argument name='fun'><type><function/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup>



<docgroup homogen-name='error' homogen-type='method'><doc><text><p>Throws an error. A more readable version of the code
 <expr>throw( ({ sprintf(f, @args), backtrace() }) )</expr>.</p>
</text></doc>
<method name='error'><source-position first-line='133' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='f'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='is_absolute_path' homogen-type='method'><doc><text><p>Check if a path <ref resolved='predef::is_absolute_path.p'>p</ref> is fully qualified (ie not relative).</p>
</text><group><returns/><text><p>Returns 1 if the path is absolute, 0 otherwise.</p>
</text></group></doc>
<method name='is_absolute_path'><source-position first-line='206' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='p'><type><string/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='explode_path' homogen-type='method'><doc><text><p>Split a path <ref resolved='predef::explode_path.p'>p</ref> into its components.</p>
<p> This function divides a path into its components. This might seem like
 it could be done by dividing the string on &lt;tt&gt;"/"&lt;/tt&gt;, but that will
 not work on some operating systems.  To turn the components back into
 a path again, use <ref resolved='predef::combine_path'>combine_path()</ref>.</p>
</text></doc>
<method name='explode_path'><source-position first-line='238' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='p'><type><string/></type></argument></arguments>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup><docgroup homogen-name='dirname' homogen-type='method'><doc><text><p>Returns all but the last segment of a path. Some example inputs and
 outputs:</p>
<p> <matrix>
 <r><c><b>Expression</b></c><c><b>Value</b></c></r>
 <r><c>dirname("/a/b")</c><c>"/a"</c></r>
 <r><c>dirname("/a/")</c><c>"/a"</c></r>
 <r><c>dirname("/a")</c><c>"/"</c></r>
 <r><c>dirname("/")</c><c>"/"</c></r>
 <r><c>dirname("")</c><c>""</c></r>
 </matrix></p>
</text><group><seealso/><text><p><ref resolved='predef::basename'>basename()</ref>, <ref resolved='predef::explode_path'>explode_path()</ref></p>
</text></group></doc>
<method name='dirname'><source-position first-line='269' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='x'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='basename' homogen-type='method'><doc><text><p>Returns the last segment of a path.</p>
</text><group><seealso/><text><p><ref resolved='predef::dirname'>dirname()</ref>, <ref resolved='predef::explode_path'>explode_path()</ref></p>
</text></group></doc>
<method name='basename'><source-position first-line='290' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='x'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='compile_string' homogen-type='method'><doc><text><p>Compile the Pike code in the string <ref resolved='predef::compile_string.source'>source</ref> into a program.
 If <ref resolved='predef::compile_string.filename'>filename</ref> is not specified, it will default to <expr>"-"</expr>.</p>
<p> Functionally equal to <expr><ref resolved='predef::compile'>compile</ref>(<ref resolved='predef::cpp'>cpp</ref>(<ref resolved='predef::compile_string.source'>source</ref>, <ref resolved='predef::compile_string.filename'>filename</ref>))</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref>, <ref resolved='predef::cpp'>cpp()</ref>, <ref resolved='predef::compile_file'>compile_file()</ref></p>
</text></group></doc>
<method name='compile_string'><source-position first-line='343' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='source'><type><string/></type></argument><argument name='filename'><type><or><void/><string/></or></type></argument><argument name='handler'><type><or><object resolved='predef::compile_string'/><void/></or></type></argument><argument name='p'><type><or><void/><program/></or></type></argument><argument name='o'><type><or><void/><object resolved='predef::compile_string'/></or></type></argument><argument name='_show_if_constant_errors'><type><or><void/><int/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup><docgroup homogen-name='getenv' homogen-type='method'><doc><text><p>When called with no arguments, a mapping with all current environment
 variables will be returned. Destructive opreations on the mapping
 will not affect the internal environment representation.</p>
<p> If the <ref resolved='predef::getenv.varname'>varname</ref> argument has been given, the value of the environment
 variable with the name <ref resolved='predef::getenv.varname'>varname</ref> will be returned. If no such
 environment variable exists, <expr>0</expr> (zero) will be returned.</p>
<p> On NT the environment variable name is case insensitive.</p>
</text></doc>
<method name='getenv'>
<arguments><argument name='varname'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
<method name='getenv'>
<arguments/>
<returntype><mapping><indextype><string/></indextype><valuetype><string/></valuetype></mapping></returntype>
</method>
</docgroup><docgroup homogen-name='compile_file' homogen-type='method'><doc><text><p>Compile the Pike code contained in the file <ref resolved='predef::compile_file.filename'>filename</ref> into a program.</p>
<p> This function will compile the file <ref resolved='predef::compile_file.filename'>filename</ref> to a Pike program that can
 later be instantiated. It is the same as doing
 <expr><ref resolved='predef::compile_string'>compile_string</ref>(<ref resolved='predef::Stdio.read_file'>Stdio.read_file</ref>(<ref resolved='predef::compile_file.filename'>filename</ref>), <ref resolved='predef::compile_file.filename'>filename</ref>)</expr>.</p>
</text><group><seealso/><text><p><ref resolved='predef::compile'>compile()</ref>, <ref resolved='predef::compile_string'>compile_string()</ref>, <ref resolved='predef::cpp'>cpp()</ref></p>
</text></group></doc>
<method name='compile_file'><source-position first-line='493' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='filename'><type><string/></type></argument><argument name='handler'><type><or><object resolved='predef::compile_file'/><void/></or></type></argument><argument name='p'><type><or><void/><program/></or></type></argument><argument name='o'><type><or><void/><object resolved='predef::compile_file'/></or></type></argument></arguments>
<returntype><program/></returntype>
</method>
</docgroup><docgroup homogen-name='putenv' homogen-type='method'><doc><text><p>Sets the environment variable <ref resolved='predef::putenv.varname'>varname</ref> to <ref resolved='predef::putenv.value'>value</ref>.</p>
<p> On NT the environment variable name is case insensitive.</p>
</text><group><seealso/><text><p><ref resolved='predef::getenv'>getenv()</ref></p>
</text></group></doc>
<method name='putenv'><source-position first-line='547' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='varname'><type><string/></type></argument><argument name='value'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='normalize_path' homogen-type='method'><doc><text><p>Replaces "\" with "/" if runing on MS Windows. It is
 adviced to use <ref resolved='predef::System.normalize_path'>System.normalize_path</ref> instead.</p>
</text></doc>
<method name='normalize_path'><source-position first-line='561' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='path'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='strlen' homogen-type='method'><doc><text><p>Alias for <ref resolved='predef::sizeof'>sizeof</ref>.</p>
</text><group><deprecated><name>sizeof</name></deprecated></group></doc>
<method name='strlen'>
<arguments><argument name='thing'><type><or><string/><multiset/><array/><mapping/><object resolved='predef::strlen'/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='write' homogen-type='method'><doc><text><p>Writes a string on stdout. Works just like <ref resolved='predef::Stdio.File.write'>Stdio.File.write</ref>
 on <ref resolved='predef::Stdio.stdout'>Stdio.stdout</ref>.</p>
</text></doc>
<method name='write'>
<arguments><argument name='fmt'><type><string/></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='describe_backtrace' homogen-type='method'><doc><text><p>Return a readable message that describes where the backtrace
 <ref resolved='predef::describe_backtrace.trace'>trace</ref> was made (by <ref resolved='predef::backtrace'>backtrace</ref>).</p>
<p> It may also be an error object or array (typically caught by a
 <ref>catch</ref>), in which case the error message also is included in the
 description.</p>
</text><group><seealso/><text><p><ref resolved='predef::backtrace'>backtrace()</ref>, <ref resolved='predef::describe_error'>describe_error()</ref>, <ref>catch()</ref>, <ref resolved='predef::throw'>throw()</ref></p>
</text></group></doc>
<method name='describe_backtrace'><source-position first-line='3375' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='trace'><type><mixed/></type></argument><argument name='linewidth'><type><or><void/><int/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='describe_error' homogen-type='method'><doc><text><p>Return the error message from an error object or array (typically
 caught by a <ref>catch</ref>). The type of the error is checked, hence
 <ref resolved='predef::describe_error.err'>err</ref> is declared as <expr>mixed</expr> and not <expr>object|array</expr>.</p>
<p> If an error message couldn't be obtained, a fallback message
 describing the failure is returned. No errors due to incorrectness
 in <ref resolved='predef::describe_error.err'>err</ref> are thrown.</p>
</text><group><seealso/><text><p><ref resolved='predef::describe_backtrace'>describe_backtrace()</ref>, <ref resolved='predef::get_backtrace'>get_backtrace</ref></p>
</text></group></doc>
<method name='describe_error'><source-position first-line='3604' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='err'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='get_backtrace' homogen-type='method'><doc><text><p>Return the backtrace array from an error object or array
 (typically caught by a <ref>catch</ref>), or zero if there is none. Errors
 are thrown on if there are problems retrieving the backtrace.</p>
</text><group><seealso/><text><p><ref resolved='predef::describe_backtrace'>describe_backtrace()</ref>, <ref resolved='predef::describe_error'>describe_error()</ref></p>
</text></group></doc>
<method name='get_backtrace'><source-position first-line='3651' file='/home/peter/hack/Pike/7.6-distmaker/lib/master.pike.in'/>
<arguments><argument name='err'><type><or><object resolved='predef::get_backtrace'/><array/></or></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup></namespace>













































































































































































































































































































































































































































































<namespace name='7.4'>

<module name='Locale'>

<module name='Charset'>

<class name='ascii'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Locale.pmod/Charset.pmod'/><doc><text><p>This class does not exist in the Locale module in Pike 7.6.</p>
</text><group><deprecated><name>ASCIIDec</name></deprecated></group></doc></class><docgroup homogen-type='inherit' homogen-name='Charset'><doc>
</doc>
<inherit name='Charset'><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Locale.pmod/Charset.pmod'/><classname resolved='7.4::Locale.Charset'>Locale.Charset</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='_encoder'><doc><group><deprecated><name>Encoder</name></deprecated></group></doc>
<constant name='_encoder'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Locale.pmod/Charset.pmod'/></constant>
</docgroup>
</module></module>

<module name='SSL'>

<class name='constants'><doc><text><p>Protocol constants</p>
</text><group><deprecated><name>SSL.Constants</name></deprecated></group></doc></class>

<class name='cipher'><doc><text><p>Encryption and MAC algorithms used in SSL.</p>
</text><group><deprecated><name>SSL.Cipher</name></deprecated></group></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='15' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/SSL.pmod/cipher.pike'/><classname resolved='7.4::SSL.constants'>"constants"</classname></inherit>
</docgroup>
</class>

<class name='sslfile'><doc><text><p>Interface similar to Stdio.File.</p>
</text></doc><docgroup homogen-type='inherit'><doc>
</doc>
<inherit><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/SSL.pmod/sslfile.pike'/><classname resolved='7.4::SSL.cipher'>"cipher"</classname></inherit>
</docgroup>
<docgroup homogen-type='inherit' homogen-name='connection'><doc>
</doc>
<inherit name='connection'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/SSL.pmod/sslfile.pike'/><classname>SSL.connection</classname></inherit>
</docgroup>
</class></module>





<module name='Standards'>

<module name='ASN1'>

<module name='Encode'><doc><text><p>This module is obsolete. All code should use ASN1.Types instead.</p>
</text></doc></module></module>

<module name='PKCS'>

<module name='Signature'><docgroup homogen-type='inherit' homogen-name='Signature'><doc>
</doc>
<inherit name='Signature'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Standards.pmod/PKCS.pmod/Signature.pmod'/><classname resolved='7.4::Standards.PKCS.Signature'>Standards.PKCS.Signature</classname></inherit>
</docgroup>
<docgroup homogen-name='build_digestinfo' homogen-type='method'><doc><text><p>In Pike 7.6 the <ref resolved='7.4::Standards.PKCS.Signature.build_digestinfo.hash'>hash</ref> is required to be a <ref>Crypto.Hash</ref> object.</p>
</text></doc>
<method name='build_digestinfo'><source-position first-line='7' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Standards.pmod/PKCS.pmod/Signature.pmod'/>
<arguments><argument name='msg'><type><string/></type></argument><argument name='hash'><type><object resolved='7.4::Standards.PKCS.Signature.build_digestinfo'/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module></module></module>



<module name='Stdio'>

<class name='File'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Stdio.pmod/module.pmod'/><doc><text><p>The life length of the Fd instance has changed. In newer versions
 it's always the same as for the File instance. That can
 theoretically cause incompatibilities in code that uses File.dup
 and File.assign, which are deprecated and very rarely used.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='File'><doc>
</doc>
<inherit name='File'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Stdio.pmod/module.pmod'/><classname resolved='7.4::Stdio.File'>Stdio.File</classname></inherit>
</docgroup>
</class></module>

<module name='Sql'>

<class name='sql'><doc><group><deprecated><name>Sql.Sql</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Sql'><doc>
</doc>
<inherit name='Sql'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Sql.pmod/sql.pike'/><classname>Sql.Sql</classname></inherit>
</docgroup>
</class></module>

<module name='ADT'>

<class name='Heap'><docgroup homogen-type='inherit' homogen-name='Heap'><doc>
</doc>
<inherit name='Heap'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/ADT.pmod/Heap.pike'/><classname resolved='7.4::ADT.Heap'>ADT.Heap</classname></inherit>
</docgroup>
<docgroup homogen-name='top' homogen-type='method'><doc><text><p>This method has been renamed to <expr>pop</expr> in Pike 7.6.</p>
</text><group><deprecated><name>pop</name></deprecated></group></doc>
<method name='top'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/ADT.pmod/Heap.pike'/>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup>
</class></module>

<module name='Protocols'>

<module name='SMTP'>

<class name='protocol'><source-position first-line='4' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Protocols.pmod/SMTP.pmod'/><doc><group><deprecated><name>Protocol</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Protocol'><doc>
</doc>
<inherit name='Protocol'><source-position first-line='5' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Protocols.pmod/SMTP.pmod'/><classname>Protocols.SMTP.Protocol</classname></inherit>
</docgroup>
</class>

<class name='client'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Protocols.pmod/SMTP.pmod'/><doc><group><deprecated><name>Client</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Client'><doc>
</doc>
<inherit name='Client'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Protocols.pmod/SMTP.pmod'/><classname>Protocols.SMTP.Client</classname></inherit>
</docgroup>
</class></module></module>

<module name='Crypto'>

<class name='substitution'><doc><group><deprecated><name>Crypto.Substitution</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Substitution'><doc>
</doc>
<inherit name='Substitution'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/substitution.pike'/><classname>Crypto.Substitution</classname></inherit>
</docgroup>
</class>

<module name='koremutake'><doc><group><deprecated><name>Crypto.Koremutake</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Koremutake'><doc>
</doc>
<inherit name='Koremutake'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/koremutake.pmod'/><classname>Crypto.Koremutake</classname></inherit>
</docgroup>
</module>

<class name='arcfour'><doc><group><deprecated><name>Crypto.Arcfour</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='ARCFOUR_State'><doc>
</doc>
<inherit name='ARCFOUR_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/arcfour.pike'/><classname resolved='predef::Nettle.ARCFOUR_State'>Nettle.ARCFOUR_State</classname></inherit>
</docgroup>
</class>

<class name='des'><doc><group><deprecated><name>Crypto.DES</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='DES_State'><doc>
</doc>
<inherit name='DES_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/des.pike'/><classname resolved='predef::Nettle.DES_State'>Nettle.DES_State</classname></inherit>
</docgroup>
</class>

<class name='crypto'><doc><group><deprecated><name>Crypto.Buffer</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='Proxy'><doc>
</doc>
<inherit name='Proxy'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/crypto.pike'/><classname>Nettle.Proxy</classname></inherit>
</docgroup>
</class>

<module name='randomness'><doc><text><p>Assorted stronger or weaker randomnumber generators.
 These devices try to collect entropy from the environment.
 They differ in behaviour when they run low on entropy, /dev/random
 will block if it can't provide enough random bits, while /dev/urandom
 will degenerate into a reasonably strong pseudo random generator</p>
</text><group><deprecated><name>Crypto.Random</name></deprecated></group></doc>

<class name='RandomSource'><source-position first-line='93' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/><doc><text><p>Virtual class for randomness source object.</p>
</text></doc><docgroup homogen-name='read' homogen-type='method'><doc><text><p>Returns a string of length len with (pseudo) random values.</p>
</text></doc>
<method name='read'><source-position first-line='96' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments><argument name='len'><type><int><min>0</min><max/></int></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='arcfour_random'><source-position first-line='109' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/><doc><text><p>A pseudo random generator based on the arcfour crypto.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='ARCFOUR_State'><doc>
</doc>
<inherit name='ARCFOUR_State'><source-position first-line='111' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/><classname resolved='predef::Nettle.ARCFOUR_State'>Nettle.ARCFOUR_State</classname></inherit>
</docgroup>
<docgroup homogen-name='create' homogen-type='method'><doc><text><p>Initialize and seed the arcfour random generator.</p>
</text></doc>
<method name='create'><source-position first-line='114' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments><argument name='secret'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='read' homogen-type='method'><doc><text><p>Return a string of the next len random characters from the
 arcfour random generator.</p>
</text></doc>
<method name='read'><source-position first-line='121' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments><argument name='len'><type><int/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class><docgroup homogen-name='some_entropy' homogen-type='method'><doc><text><p>Executes several programs (last -256, arp -a, netstat -anv, netstat -mv,
 netstat -sv, uptime, ps -fel, ps aux, vmstat -s, vmstat -M, iostat,
 iostat -cdDItx) to generate some entropy from their output. On Microsoft
 Windows the Windows cryptographic routines are called to generate random
 data.</p>
</text></doc>
<method name='some_entropy'><source-position first-line='60' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='reasonably_random' homogen-type='method'><doc><text><p>Returns a reasonably random random-source.</p>
</text></doc>
<method name='reasonably_random'><source-position first-line='129' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments/>
<returntype><object resolved='7.4::Crypto.randomness.RandomSource'>RandomSource</object></returntype>
</method>
</docgroup>
<docgroup homogen-name='really_random' homogen-type='method'><doc><text><p>Returns a really random random-source.</p>
</text></doc>
<method name='really_random'><source-position first-line='153' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/randomness.pmod'/>
<arguments><argument name='may_block'><type><or><int/><void/></or></type></argument></arguments>
<returntype><object resolved='7.4::Crypto.randomness.RandomSource'>RandomSource</object></returntype>
</method>
</docgroup>
</module>

<class name='dsa'><doc><group><deprecated><name>Crypto.DSA</name></deprecated></group></doc></class>

<class name='rijndael'><doc><group><deprecated><name>Crypto.AES</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='AES_State'><doc>
</doc>
<inherit name='AES_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/rijndael.pike'/><classname resolved='predef::Nettle.AES_State'>Nettle.AES_State</classname></inherit>
</docgroup>
</class>

<class name='cbc'><doc><group><deprecated><name>Crypto.CBC</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/cbc.pike'/><classname>Nettle.CBC</classname></inherit>
</docgroup>
</class>

<class name='cast'><doc><group><deprecated><name>Crypto.CAST</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='CAST128_State'><doc>
</doc>
<inherit name='CAST128_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/cast.pike'/><classname resolved='predef::Nettle.CAST128_State'>Nettle.CAST128_State</classname></inherit>
</docgroup>
</class>

<class name='sha'><doc><group><deprecated><name>Crypto.SHA1</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='SHA1_State'><doc>
</doc>
<inherit name='SHA1_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/sha.pike'/><classname resolved='predef::Nettle.SHA1_State'>Nettle.SHA1_State</classname></inherit>
</docgroup>
</class>

<class name='des_cbc'><doc><text><p>Use <expr>Crypto.CBC(Crypto.DES)</expr> instead.</p>
</text><group><deprecated/></group></doc><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/des_cbc.pike'/><classname>Nettle.CBC</classname></inherit>
</docgroup>
</class>

<class name='aes'><doc><group><deprecated><name>Crypto.AES</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='AES_State'><doc>
</doc>
<inherit name='AES_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/aes.pike'/><classname resolved='predef::Nettle.AES_State'>Nettle.AES_State</classname></inherit>
</docgroup>
</class><docgroup homogen-name='crypt_md5' homogen-type='method'><doc><text><p>From Pike 7.5 <ref resolved='7.4::Crypto.crypt_md5.pw'>pw</ref> and <ref resolved='7.4::Crypto.crypt_md5.salt'>salt</ref> are binary strings, so
 the result is different if any of these includes <expr>"\0"</expr>.</p>
<p> The return type is also changed from string to int|string. If
 the second argument is a hash, <ref resolved='7.4::Crypto.crypt_md5.pw'>pw</ref> will be hashed with the
 salt from the hash and compared with the hash.</p>
</text></doc>
<method name='crypt_md5'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='pw'><type><string/></type></argument><argument name='salt'><type><or><void/><string/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-type='constant' homogen-name='string_to_hex'><doc><group><deprecated><name>String.string2hex</name></deprecated></group></doc>
<constant name='string_to_hex'><source-position first-line='21' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='hex_to_string'><doc><group><deprecated><name>String.hex2string</name></deprecated></group></doc>
<constant name='hex_to_string'><source-position first-line='24' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/module.pmod'/></constant>
</docgroup>
<docgroup homogen-name='des_parity' homogen-type='method'><doc><text><p>des_parity is removed. Instead there is <ref>Crypto.DES-&gt;fix_parity</ref>,
 but it always outputs a key sized string.</p>
</text></doc>
<method name='des_parity'><source-position first-line='28' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/module.pmod'/>
<arguments><argument name='s'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>


<class name='rsa'><doc><group><deprecated><name>Crypto.RSA</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='RSA'><doc>
</doc>
<inherit name='RSA'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/rsa.pike'/><classname>Crypto.RSA</classname></inherit>
</docgroup>
</class>

<class name='des3'><doc><group><deprecated><name>Crypto.DES3</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='DES3_State'><doc>
</doc>
<inherit name='DES3_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/des3.pike'/><classname resolved='predef::Nettle.DES3_State'>Nettle.DES3_State</classname></inherit>
</docgroup>
</class>

<class name='idea_cbc'><doc><text><p>Use <expr>Crypto.CBC(Crypto.IDEA)</expr> instead.</p>
</text><group><deprecated/></group></doc><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/idea_cbc.pike'/><classname>Nettle.CBC</classname></inherit>
</docgroup>
</class>

<class name='invert'><doc><text><p>Inversion crypto module.</p>
</text></doc><docgroup homogen-name='name' homogen-type='method'><doc><text><p>Returns the string <expr>"INVERT"</expr>.</p>
</text></doc>
<method name='name'><source-position first-line='8' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments/>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_block_size' homogen-type='method'><doc><text><p>Returns the block size for the invert crypto (currently 8).</p>
</text></doc>
<method name='query_block_size'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments/>
<returntype><int><min>8</min><max>8</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='query_key_length' homogen-type='method'><doc><text><p>Returns the minimum key length for the invert crypto.</p>
<p> Since this crypto doesn't use a key, this will be 0.</p>
</text></doc>
<method name='query_key_length'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments/>
<returntype><int><min>0</min><max>0</max></int></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_encrypt_key' homogen-type='method'><doc><text><p>Set the encryption key (currently a no op).</p>
</text></doc>
<method name='set_encrypt_key'><source-position first-line='19' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='set_decrypt_key' homogen-type='method'><doc><text><p>Set the decryption key (currently a no op).</p>
</text></doc>
<method name='set_decrypt_key'><source-position first-line='22' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup>
<docgroup homogen-name='crypt_block' homogen-type='method'><doc><text><p>De/encrypt the string <ref resolved='7.4::Crypto.invert.crypt_block.data'>data</ref> with the invert crypto
 (ie invert the string).</p>
</text></doc>
<method name='crypt_block'><source-position first-line='26' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/invert.pike'/>
<arguments><argument name='data'><type><string/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</class>

<class name='des3_cbc'><doc><text><p>Use <expr>Crypto.CBC(Crypto.DES3)</expr> instead.</p>
</text><group><deprecated/></group></doc><docgroup homogen-type='inherit' homogen-name='CBC'><doc>
</doc>
<inherit name='CBC'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/des3_cbc.pike'/><classname>Nettle.CBC</classname></inherit>
</docgroup>
</class>

<class name='md4'><doc><group><deprecated><name>Crypto.MD4</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='MD4_State'><doc>
</doc>
<inherit name='MD4_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/md4.pike'/><classname resolved='predef::Nettle.MD4_State'>Nettle.MD4_State</classname></inherit>
</docgroup>
</class>

<class name='idea'><doc><group><deprecated><name>Crypto.IDEA</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='IDEA_State'><doc>
</doc>
<inherit name='IDEA_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/idea.pike'/><classname resolved='predef::Nettle.IDEA_State'>Nettle.IDEA_State</classname></inherit>
</docgroup>
</class>

<class name='md2'><doc><group><deprecated><name>Crypto.MD2</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='MD2_State'><doc>
</doc>
<inherit name='MD2_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/md2.pike'/><classname resolved='predef::Nettle.MD2_State'>Nettle.MD2_State</classname></inherit>
</docgroup>
</class>

<class name='hmac'><doc><group><deprecated><name>Crypto.HMAC</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='HMAC'><doc>
</doc>
<inherit name='HMAC'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/hmac.pike'/><classname>Crypto.HMAC</classname></inherit>
</docgroup>
</class>

<class name='md5'><doc><group><deprecated><name>Crypto.MD5</name></deprecated></group></doc><docgroup homogen-type='inherit' homogen-name='MD5_State'><doc>
</doc>
<inherit name='MD5_State'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Crypto.pmod/md5.pike'/><classname resolved='predef::Nettle.MD5_State'>Nettle.MD5_State</classname></inherit>
</docgroup>
</class></module>













































<doc><text><p>Pike 7.4 compatibility.</p>
<p> The symbols in this namespace will appear in
 programs that use <tt>#pike 7.4</tt> or lower.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name=''><doc/>
<inherit name=''><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/__default.pmod'/><classname resolved='predef::'>predef::</classname></inherit>
</docgroup>
<docgroup homogen-name='rusage' homogen-type='method'><doc><text><p>Return resource usage. An error is thrown if it isn't supported
   or if the system fails to return any information.</p>
</text><group><returns/><text><p>Returns an array of ints describing how much resources the interpreter
   process has used so far. This array will have at least 29 elements, of
   which those values not available on this system will be zero.</p>
<p>   The elements are as follows:</p>
<array><group><elem><type><int/></type><index>user_time</index></elem><text><p>Time in milliseconds spent in user code.</p>
</text></group><group><elem><type><int/></type><index>system_time</index></elem><text><p>Time in milliseconds spent in system calls.</p>
</text></group><group><elem><type><int/></type><index>maxrss</index></elem><text><p>Maximum used resident size in kilobytes.</p>
</text></group><group><elem><type><int/></type><index>ixrss</index></elem><text><p>Quote from GNU libc: An integral value expressed in
       kilobytes times ticks of execution, which indicates the
       amount of memory used by text that was shared with other
       processes.</p>
</text></group><group><elem><type><int/></type><index>idrss</index></elem><text><p>Quote from GNU libc: An integral value expressed the same
       way, which is the amount of unshared memory used for data.</p>
</text></group><group><elem><type><int/></type><index>isrss</index></elem><text><p>Quote from GNU libc: An integral value expressed the same
       way, which is the amount of unshared memory used for stack
       space.</p>
</text></group><group><elem><type><int/></type><index>minor_page_faults</index></elem><text><p>Minor page faults, i.e. TLB misses which required no disk I/O.</p>
</text></group><group><elem><type><int/></type><index>major_page_faults</index></elem><text><p>Major page faults, i.e. paging with disk I/O required.</p>
</text></group><group><elem><type><int/></type><index>swaps</index></elem><text><p>Number of times the process has been swapped out entirely.</p>
</text></group><group><elem><type><int/></type><index>block_input_op</index></elem><text><p>Number of block input operations.</p>
</text></group><group><elem><type><int/></type><index>block_output_op</index></elem><text><p>Number of block output operations.</p>
</text></group><group><elem><type><int/></type><index>messages_sent</index></elem><text><p>Number of IPC messsages sent.</p>
</text></group><group><elem><type><int/></type><index>messages_received</index></elem><text><p>Number of IPC messsages received.</p>
</text></group><group><elem><type><int/></type><index>signals_received</index></elem><text><p>Number of signals received.</p>
</text></group><group><elem><type><int/></type><index>voluntary_context_switches</index></elem><text><p>Number of voluntary context switches (usually to wait for
       some service).</p>
</text></group><group><elem><type><int/></type><index>involuntary_context_switches</index></elem><text><p>Number of preemptions, i.e. context switches due to expired
       time slices, or when processes with higher priority were
       scheduled.</p>
</text></group><group><elem><type><int/></type><index>sysc</index></elem><text><p>Number of system calls.</p>
</text></group><group><elem><type><int/></type><index>ioch</index></elem><text><p>Number of characters read and written.</p>
</text></group><group><elem><type><int/></type><index>rtime</index></elem><text><p>Elapsed real time (ms).</p>
</text></group><group><elem><type><int/></type><index>ttime</index></elem><text><p>Elapsed system trap (system call) time (ms).</p>
</text></group><group><elem><type><int/></type><index>tftime</index></elem><text><p>Text page fault sleep time (ms).</p>
</text></group><group><elem><type><int/></type><index>dftime</index></elem><text><p>Data page fault sleep time (ms).</p>
</text></group><group><elem><type><int/></type><index>kftime</index></elem><text><p>Kernel page fault sleep time (ms).</p>
</text></group><group><elem><type><int/></type><index>ltime</index></elem><text><p>User lock wait sleep time (ms).</p>
</text></group><group><elem><type><int/></type><index>slptime</index></elem><text><p>Other sleep time (ms).</p>
</text></group><group><elem><type><int/></type><index>wtime</index></elem><text><p>Wait CPU (latency) time (ms).</p>
</text></group><group><elem><type><int/></type><index>stoptime</index></elem><text><p>Time spent in stopped (suspended) state.</p>
</text></group><group><elem><type><int/></type><index>brksize</index></elem><text><p>Heap size.</p>
</text></group><group><elem><type><int/></type><index>stksize</index></elem><text><p>Stack size.</p>
</text></group></array><p>The values will not be further explained here; read your system manual
   for more information.</p>
</text></group><group><note/><text><p>All values may not be present on all systems.</p>
</text></group><group><deprecated><name>System.getrusage</name></deprecated></group><group><seealso/><text><p><ref resolved='predef::time'>time()</ref>, <ref resolved='predef::System.getrusage'>System.getrusage()</ref></p>
</text></group></doc>
<method name='rusage'><source-position first-line='102' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/__default.pmod'/>
<arguments/>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>


<module name='Thread'><docgroup homogen-type='inherit' homogen-name='Thread'><doc>
</doc>
<inherit name='Thread'><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Thread.pmod'/><classname resolved='predef::Thread'>Thread</classname></inherit>
</docgroup>
<docgroup homogen-type='constant' homogen-name='Mutex'><doc><text><p>The Mutex destruct behaviour in Pike 7.4 and below is different
 from 7.6 in that destructing a mutex destroys the key that is
 locking it.</p>
</text></doc>
<constant name='Mutex'><source-position first-line='10' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Thread.pmod'/><modifiers><optional/></modifiers></constant>
</docgroup>
</module>

<module name='Array'><docgroup homogen-type='inherit' homogen-name='Array'><doc>
</doc>
<inherit name='Array'><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Array.pmod'/><classname resolved='predef::Array'>Array</classname></inherit>
</docgroup>
<docgroup homogen-name='diff3_old' homogen-type='method'><doc><text><p>This diff3 implementation is obsoleted by <ref resolved='predef::Array.diff3'>Array.diff3</ref>.</p>
</text><group><deprecated><name>diff3</name></deprecated></group></doc>
<method name='diff3_old'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.4/modules/Array.pmod'/>
<arguments><argument name='mid'><type><array/></type></argument><argument name='left'><type><array/></type></argument><argument name='right'><type><array/></type></argument></arguments>
<returntype><array><valuetype><array><valuetype><array/></valuetype></array></valuetype></array></returntype>
</method>
</docgroup>
</module></namespace>









































































<namespace name='0.6'>

<module name='Array'><docgroup homogen-type='inherit' homogen-name='Array'><doc>
</doc>
<inherit name='Array'><source-position first-line='3' file='/home/peter/hack/Pike/7.6-distmaker/lib/0.6/modules/Array.pmod'/><classname resolved='7.4::Array'>Array</classname></inherit>
</docgroup>
<docgroup homogen-name='map' homogen-type='method'><doc><text><p>Much simplified type compared to later versions of map.</p>
</text></doc>
<method name='map'><source-position first-line='6' file='/home/peter/hack/Pike/7.6-distmaker/lib/0.6/modules/Array.pmod'/>
<arguments><argument name='x'><type><array/></type></argument><argument name='fun'><type><or><int/><string/><function/></or></type></argument><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array/></returntype>
</method>
</docgroup>
</module><doc><text><p>Pike 0.6 compatibility.</p>
<p> The symbols in this namespace will appear in
 programs that use <tt>#pike 0.6</tt> or lower.</p>
</text><group><seealso/><text><p><ref resolved='7.0::'>7.0::</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name=''><doc/>
<inherit name=''><source-position first-line='13' file='/home/peter/hack/Pike/7.6-distmaker/lib/0.6/modules/__default.pmod'/><classname resolved='7.0::'>7.0::</classname></inherit>
</docgroup>
<docgroup homogen-name='aggregate' homogen-type='method'><doc><text><p>More lax types than in later versions.</p>
</text></doc>
<method name='aggregate'><source-position first-line='16' file='/home/peter/hack/Pike/7.6-distmaker/lib/0.6/modules/__default.pmod'/>
<arguments><argument name='args'><type><varargs><mixed/></varargs></type></argument></arguments>
<returntype><array><valuetype><mixed/></valuetype></array></returntype>
</method>
</docgroup>
</namespace>



<namespace name='7.0'>

<module name='Calendar'>

<module name='Stardate'><doc><text><p>time unit: TNGDate</p>
</text></doc>

<class name='TNGDate'><source-position first-line='9' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Stardate.pmod'/><doc><text><p>Implements ST:TNG stardates.
	Can be used as create argument to Day.</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='_TimeUnit'><doc>
</doc>
<inherit name='_TimeUnit'><source-position first-line='11' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Stardate.pmod'/><classname resolved='7.0::Calendar._TimeUnit'>Calendar._TimeUnit</classname></inherit>
</docgroup>
</class></module><doc><text><p>This module implements calendar calculations, and base classes
   for time units. </p>
<p>   This module exists only for backward compatibility with Pike 7.0.</p>
</text></doc>

<class name='_TimeUnit'><source-position first-line='12' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/module.pmod'/><doc><text><p>Base class for units of time.</p>
</text></doc><docgroup homogen-name='lesser' homogen-type='method'><doc><text><p>Gives a list of methods to get lesser (shorter) time units.
	ie, for a month, this gives back <expr>({"day"})</expr>
	and the method <expr>day(mixed n)</expr> gives back that 
	day object. The method <expr>days()</expr> gives back a
	list of possible argument values to the method <expr>day</expr>.
	Concurrently, <expr>Array.map(o-&gt;days(),o-&gt;day)</expr> gives
	a list of day objects in the object <expr>o</expr>.</p>
<p>	Ie: <pre>
	  array(string) lesser()    - gives back a list of possible xxx's.
	  object xxxs()             - gives back a list of possible n's.
	  object xxx(mixed n)       - gives back xxx n
	  object xxx(object(Xxx) o) - gives back the corresponing xxx 
	</pre></p>
<p>	The list of n's (as returned from xxxs) are always in order.</p>
<p>	There are two n's with special meaning, 0 and -1.
	0 always gives the first xxx, equal to 
	my_obj-&gt;xxx(my_obj-&gt;xxxs()[0]), and -1 gives the last,
	equal to my_obj-&gt;xxx(my_obj-&gt;xxxs()[-1]).</p>
<p>	To get all xxxs in the object, do something like
	<expr>Array.map(my_obj-&gt;xxxs(),my_obj-&gt;xxx)</expr>.</p>
<p>	xxx(object) may return zero, if there was no correspondning xxx.</p>
</text></doc>
<method name='lesser'><source-position first-line='44' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='greater' homogen-type='method'><doc><text><p>Gives a list of methods to get greater (longer) time units 
	from this object. For a month, this gives back <expr>({"year"})</expr>,
	thus the method <expr>month-&gt;year()</expr> gives the year object.</p>
</text></doc>
<method name='greater'><source-position first-line='50' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/module.pmod'/>
<arguments/>
<returntype><array><valuetype><string/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-type='method'><doc><text><p><ref resolved='7.0::Calendar._TimeUnit.next'>next()</ref> and <ref resolved='7.0::Calendar._TimeUnit.next'>prev()</ref> give the logical next and previous object.
	The <ref resolved='7.0::Calendar._TimeUnit.next'>`+()</ref> operator gives that logical relative object,
	ie <expr>my_day+14</expr> gives 14 days ahead.
   <ref resolved='7.0::Calendar._TimeUnit.next'>`-()</ref> works the same way, but can also take an object
	of the same type and give the difference as an integer.</p>
</text></doc>
<method name='next'>
<arguments/>
<returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype>
</method>
<method name='prev'>
<arguments/>
<returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype>
</method>
<method name='`+'>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype>
</method>
<method name='`-'>
<arguments><argument name='n'><type><int/></type></argument></arguments>
<returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype>
</method>
<method name='`-'>
<arguments><argument name='x'><type><object resolved='7.0::Calendar._TimeUnit.next'/></type></argument></arguments>
<returntype><object resolved='7.0::Calendar._TimeUnit.next'/></returntype>
</method>
</docgroup>
</class>

<module name='Gregorian'><doc><text><p>time units:
	&lt;ref&gt;Year&lt;/ref&gt;, &lt;ref&gt;Month&lt;/ref&gt;, &lt;ref&gt;Week&lt;/ref&gt;, &lt;ref&gt;Day&lt;/ref&gt;</p>
</text></doc>

<class name='Year'><source-position first-line='40' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/><doc><text><p>A <ref resolved='7.0::Calendar._TimeUnit'>Calendar._TimeUnit</ref>. </p>
<p>	Lesser units: &lt;ref&gt;Month&lt;/ref&gt;, &lt;ref&gt;Week&lt;/ref&gt;, &lt;ref&gt;Day&lt;/ref&gt;
	Greater units: none</p>
</text></doc><docgroup homogen-type='inherit' homogen-name='_TimeUnit'><doc>
</doc>
<inherit name='_TimeUnit'><source-position first-line='42' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/><classname resolved='7.0::Calendar._TimeUnit'>_TimeUnit</classname></inherit>
</docgroup>
</class><docgroup homogen-name='parse' homogen-type='method'><doc><text><p>parse a date, create relevant object
	<ref resolved='7.0::Calendar.Gregorian.parse.fmt'>fmt</ref> is in the format "abc%xdef..."
	where abc and def is matched, and %x is
	one of those time units:
	%Y absolute year 
	%y year (70-99 is 1970-1999, 0-69 is 2000-2069)
	%M month (number, name or short name) (needs %y)
	%W week (needs %y)
	%D date (needs %y, %m)
	%a day (needs %y)
	%e weekday (needs %y, %w)
	%h hour (needs %d, %D or %W)
	%m minute (needs %h)
	%s second (needs %s)</p>
</text></doc>
<method name='parse'><source-position first-line='1424' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/>
<arguments><argument name='fmt'><type><string/></type></argument><argument name='arg'><type><string/></type></argument></arguments>
<returntype><object resolved='7.0::Calendar.Gregorian.parse'/></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime' homogen-type='method'><doc><text><p>Replacement for <ref resolved='predef::localtime'>localtime()</ref>.</p>
</text></doc>
<method name='datetime'><source-position first-line='1488' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument><argument name='skip_extra'><type><or><int/><void/></or></type></argument></arguments>
<returntype><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime_name' homogen-type='method'><doc><text><p>Replacement for <ref resolved='predef::ctime'>ctime()</ref>.</p>
</text></doc>
<method name='datetime_name'><source-position first-line='1510' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='datetime_short_name' homogen-type='method'><doc><text><p>Replacement for ctime.</p>
</text></doc>
<method name='datetime_short_name'><source-position first-line='1522' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/Calendar.pmod/Gregorian.pmod'/>
<arguments><argument name='unix_time'><type><or><int/><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
</module></module>



<doc><text><p>Pike 7.0 compatibility.</p>
<p> The symbols in this namespace will appear in
 programs that use <tt>#pike 7.0</tt> or lower.</p>
</text><group><seealso/><text><p><ref resolved='7.2::'>7.2::</ref></p>
</text></group></doc><docgroup homogen-type='inherit' homogen-name=''><doc/>
<inherit name=''><source-position first-line='14' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/__default.pmod'/><classname resolved='7.2::'>7.2::</classname></inherit>
</docgroup>
<docgroup homogen-name='file_stat' homogen-type='method'><doc><text><p>Stat a file (Pike 7.0 compatibility).</p>
</text><group><returns/><text><p>Returns an array with the following content:</p>
<array><group><elem><type><int/></type><index>mode</index></elem><text><p>Access mode.</p>
</text></group><group><elem><type><int/></type><index>size</index></elem><text><p>Size in bytes, or filetype indicator.</p>
</text></group><group><elem><type><int/></type><index>atime</index></elem><text><p>Last access time.</p>
</text></group><group><elem><type><int/></type><index>mtime</index></elem><text><p>Last modification time.</p>
</text></group><group><elem><type><int/></type><index>ctime</index></elem><text><p>Last change time.</p>
</text></group><group><elem><type><int/></type><index>uid</index></elem><text><p>User id.</p>
</text></group><group><elem><type><int/></type><index>gid</index></elem><text><p>Group id.</p>
</text></group></array><p>See <ref resolved='predef::file_stat'>predef::file_stat()</ref> for a full description of the array.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::file_stat'>predef::file_stat()</ref></p>
</text></group></doc>
<method name='file_stat'>
<arguments><argument name='path'><type><string/></type></argument><argument name='symlink'><type><or><void/><int/></or></type></argument></arguments>
<returntype><array><valuetype><int/></valuetype></array></returntype>
</method>
</docgroup>
<docgroup homogen-name='_typeof' homogen-type='method'><doc><text><p>Get the runtime type of a value (Pike 7.0 compatibility).</p>
</text><group><returns/><text><p>Returns the type of <ref resolved='7.0::_typeof.x'>x</ref> as a string.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::_typeof'>predef::_typeof()</ref></p>
</text></group></doc>
<method name='_typeof'><source-position first-line='70' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/__default.pmod'/>
<arguments><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup>
<docgroup homogen-name='m_delete' homogen-type='method'><doc><text><p>Delete an entry <ref resolved='7.0::m_delete.x'>x</ref> from a mapping <ref resolved='7.0::m_delete.m'>m</ref> (Pike 7.0 compatibility).</p>
</text><group><returns/><text><p>Returns <ref resolved='7.0::m_delete.m'>m</ref>.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::m_delete'>predef::m_delete()</ref></p>
</text></group></doc>
<method name='m_delete'><source-position first-line='82' file='/home/peter/hack/Pike/7.6-distmaker/lib/7.0/modules/__default.pmod'/>
<arguments><argument name='m'><type><mapping/></type></argument><argument name='x'><type><mixed/></type></argument></arguments>
<returntype><mapping/></returntype>
</method>
</docgroup>
<docgroup homogen-name='hash' homogen-type='method'><doc><text><p>Calculate a hash of a string (Pike 7.0 compatibility).</p>
<p>   This function is now available as <ref resolved='predef::hash_7_0'>predef::hash_7_0()</ref>.</p>
</text><group><seealso/><text><p><ref resolved='predef::hash_7_0'>predef::hash_7_0()</ref>, <ref resolved='predef::hash'>predef::hash()</ref></p>
</text></group></doc>
<method name='hash'>
<arguments><argument name='s'><type><string/></type></argument><argument name='f'><type><or><int/><void/></or></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup>
</namespace>









































































































































































































































































































































































































































































































































<namespace name='lfun'><doc><text><p>Callback functions used to overload various builtin functions.</p>
<p> The functions can be grouped into a few sets:</p>
<ul><group><item/><text><p>Object initialization and destruction.</p>
<p>     <ref resolved='lfun::__INIT'>__INIT()</ref>, <ref resolved='lfun::create'>create()</ref>, <ref resolved='lfun::destroy'>destroy()</ref></p>
</text></group><group><item/><text><p>Unary operator overloading.</p>
<p>     <ref resolved='lfun::`~'>`~()</ref>, <ref resolved='lfun::`!'>`!()</ref>,
     <ref resolved='lfun::_values'>_values()</ref>, <ref resolved='lfun::cast'>cast()</ref>,
     <ref resolved='lfun::_sizeof'>_sizeof()</ref>, <ref resolved='lfun::_indices'>_indices()</ref>,
     <ref resolved='lfun::__hash'>__hash()</ref></p>
</text></group><group><item/><text><p>Binary asymmetric operator overloading.</p>
<p>     <ref resolved='lfun::`+'>`+()</ref>, <ref resolved='lfun::``+'>``+()</ref>,
     <ref resolved='lfun::`-'>`-()</ref>, <ref resolved='lfun::``-'>``-()</ref>,
     <ref resolved='lfun::`&amp;'>`&amp;()</ref>, <ref resolved='lfun::``&amp;'>``&amp;()</ref>,
     <ref resolved='lfun::`|'>`|()</ref>, <ref resolved='lfun::``|'>``|()</ref>,
     <ref resolved='lfun::`^'>`^()</ref>, <ref resolved='lfun::``^'>``^()</ref>,
     <ref resolved='lfun::`&lt;&lt;'>`&lt;&lt;()</ref>, <ref resolved='lfun::``&lt;&lt;'>``&lt;&lt;()</ref>,
     <ref resolved='lfun::`&gt;&gt;'>`&gt;&gt;()</ref>, <ref resolved='lfun::``&gt;&gt;'>``&gt;&gt;()</ref>,
     <ref resolved='lfun::`*'>`*()</ref>, <ref resolved='lfun::``*'>``*()</ref>,
     <ref resolved='lfun::`/'>`/()</ref>, <ref resolved='lfun::``/'>``/()</ref>,
     <ref resolved='lfun::`%'>`%()</ref>, <ref resolved='lfun::``%'>``%()</ref></p>
</text></group><group><item/><text><p>Binary symmetric operator overloading.</p>
<p>     The optimizer will make assumptions about the relations
     between these functions.</p>
<p>     <ref resolved='lfun::`=='>`==()</ref>, <ref resolved='lfun::_equal'>_equal()</ref>, <ref resolved='lfun::`&lt;'>`&lt;()</ref>, <ref resolved='lfun::`&gt;'>`&gt;()</ref></p>
</text></group><group><item/><text><p>Other binary operator overloading.</p>
<p>     <ref resolved='lfun::`[]'>`[]()</ref>, <ref resolved='lfun::`[]='>`[]=()</ref>, <ref resolved='lfun::`-&gt;'>`-&gt;()</ref>,
     <ref resolved='lfun::`-&gt;='>`-&gt;=()</ref>, <ref resolved='lfun::`+='>`+=()</ref>, <ref resolved='lfun::`()'>`()()</ref></p>
</text></group><group><item/><text><p>Overloading of other builtin functions.</p>
<p>     <ref resolved='lfun::_is_type'>_is_type()</ref>, <ref resolved='lfun::_sprintf'>_sprintf()</ref>, <ref resolved='lfun::_m_delete'>_m_delete()</ref>,
     <ref resolved='lfun::_get_iterator'>_get_iterator()</ref>, <ref resolved='lfun::_search'>_search()</ref></p>
</text></group></ul>
</text><group><note/><text><p>Although these functions are called from outside the object
   they exist in, they will still be used even if they are
   declared <expr>static</expr>. It is in fact recommended to declare
   them <expr>static</expr>, since that will hinder them being used
   for other purposes.</p>
</text></group><group><seealso/><text><p><ref resolved='::'>::</ref></p>
</text></group></doc>












































<docgroup homogen-name='_sqrt' homogen-type='method'><doc><text><p>Called by sqrt when the square root of an object is requested.</p>
</text><group><note/><text><p>_sqrt is not a real lfun, so it must not be defined as static.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sqrt'>predef::sqrt()</ref></p>
</text></group></doc>
<method name='_sqrt'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='_random' homogen-type='method'><doc><text><p>Called by <ref>random</ref>. Typical uses is when the object implements
   a ADT, then a call to this lfun should return a random member of
   the ADT or range implied by the ADT.</p>
</text><group><seealso/><text><p><ref resolved='predef::random'>predef::random()</ref></p>
</text></group></doc>
<method name='_random'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='__INIT' homogen-type='method'><doc><text><p>Inherit and variable initialization.</p>
<p>   This function is generated automatically by the compiler. It's
   called just before <ref resolved='lfun::create'>lfun::create()</ref> when an object is
   instantiated.</p>
<p>   It first calls any <expr>__INIT</expr> functions in inherited classes
   (regardless of modifiers on the inherits). It then executes all
   the variable initialization expressions in this class, in the
   order they occur.</p>
</text><group><note/><text><p>This function can not be overloaded or blocked from executing.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::create'>lfun::create()</ref></p>
</text></group></doc>
<method name='__INIT'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='create' homogen-type='method'><doc><text><p>Object creation callback.</p>
<p>   This function is called right after <ref resolved='lfun::__INIT'>lfun::__INIT()</ref>.</p>
<p>   <ref resolved='lfun::create.args'>args</ref> are the arguments passed when the program was called.</p>
</text><group><note/><text><p>In Pike 7.2 and later this function can be created implicitly
   by the compiler using the new syntax:</p>
<code><text><p>class Foo(int foo) {
   int bar;
 }</p>
</text></code><p>In the above case an implicit <ref resolved='lfun::create'>lfun::create()</ref> is created, and
   it's equvivalent to:</p>
<code><text><p>class Foo {
   int foo;
   int bar;
   static void create(int foo)
   {
     local::foo = foo;
   }
 }</p>
</text></code>
</text></group><group><seealso/><text><p><ref resolved='lfun::__INIT'>lfun::__INIT()</ref>, <ref resolved='lfun::destroy'>lfun::destroy()</ref></p>
</text></group></doc>
<method name='create'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='destroy' homogen-type='method'><doc><text><p>Object destruction callback.</p>
<p>   This function is called by <ref resolved='predef::destruct'>predef::destruct()</ref> right before it
   zeroes all the object variables and destroys the object.</p>
</text><group><note/><text><p>Note that it's also called on implicit destruct, i.e. when there
   are no more references to the object, or when the garbage
   collector decides to destruct it.</p>
</text></group><group><note/><text><p>Regarding destruction order during garbage collection:</p>
<p> If an object is destructed by the garbage collector, it's part of
 a reference cycle with other things but with no external
 references. If there are other objects with <expr>destroy</expr>
 functions in the same cycle, it becomes a problem which to call
 first.</p>
<p> E.g. if this object has a variable with another object which
 (directly or indirectly) points back to this one, you might find
 that the other object already has been destructed and the variable
 thus contains zero.</p>
<p> The garbage collector tries to minimize such problems by defining
 an order as far as possible:</p>
<ul><group><item/><text><p>If an object A contains an <ref resolved='lfun::destroy'>lfun::destroy</ref> and an object B does
   not, then A is destructed before B.</p>
</text></group><group><item/><text><p>If A references B single way, then A is destructed before B.</p>
</text></group><group><item/><text><p>If A and B are in a cycle, and there is a reference somewhere
   from B to A that is weaker than any reference from A to B, then
   A is destructed before B.</p>
</text></group><group><item/><text><p>Weak references (e.g. set with <ref resolved='predef::set_weak_flag'>predef::set_weak_flag()</ref>) are considered
   weaker than normal references, and both are considered weaker
   than strong references.</p>
</text></group><group><item/><text><p>Strong references are those from objects to the objects of their
   lexically surrounding classes. There can never be a cycle
   consisting only of strong references. (This means the gc never
   destructs a parent object before all children have been
   destructed.)</p>
</text></group></ul><p>An example with well defined destruct order due to strong
 references:</p>
<code><text><p>class Super {
   class Sub {
     static void destroy() {
       if (!Super::this)
         error ("My parent has been destructed!\n");
     }
   }
   Sub sub = Sub();
   static void destroy() {
     if (!sub)
       werror ("sub already destructed.\n");
   }
 }</p>
</text></code><p>The garbage collector ensures that these objects are destructed in
 an order so that <expr>werror</expr> in <expr>Super</expr> is called and not
 <expr>error</expr> in <expr>Sub</expr>.</p>
</text></group><group><note/><text><p>When the garbage collector calls <ref resolved='lfun::destroy'>lfun::destroy</ref>, all accessible
 non-objects and objects without <expr>destroy</expr> functions are
 still intact. They are not freed if the <expr>destroy</expr> function
 adds external references to them. However, all objects with
 <ref resolved='lfun::destroy'>lfun::destroy</ref> in the cycle are already scheduled for
 destruction and are thus be destroyed even if external references
 are added to them.</p>
</text></group><group><note/><text><p>The garbage collector had completely random destruct order in
 versions prior to 7.2.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::create'>lfun::create()</ref>, <ref resolved='predef::destruct'>predef::destruct()</ref></p>
</text></group></doc>
<method name='destroy'>
<arguments/>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='`+' homogen-type='method'><doc><text><p>Left side addition/concatenation callback.</p>
<p>   This is used by <ref resolved='predef::`+'>predef::`+</ref>. It's called with any arguments
   that follow this object in the argument list of the call to
   <ref resolved='predef::`+'>predef::`+</ref>. The returned value should be a new instance that
   represents the addition/concatenation between this object and
   the arguments in the order they are given.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``+'>lfun::``+()</ref>, <ref resolved='lfun::`+='>lfun::`+=()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p>
</text></group></doc>
<method name='`+'>
<arguments><argument name='arg'><type><zero/></type></argument><argument name='rest'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`+=' homogen-type='method'><doc><text><p>Destructive addition/concatenation callback.</p>
<p>   This is used by <ref resolved='predef::`+'>predef::`+</ref>. It's called with any arguments
   that follow this object in the argument list of the call to
   <ref resolved='predef::`+'>predef::`+</ref>. It should update this object to represent the
   addition/concatenation between it and the arguments in the order
   they are given. It should always return this object.</p>
</text><group><note/><text><p>This function should only be implemented if <ref resolved='lfun::`+'>lfun::`+()</ref> also
   is. It should only work as a more optimized alternative to that
   one, for the case when it's safe to change the object
   destructively and use it directly as the result.</p>
</text></group><group><note/><text><p>This function is not an lfun for the <expr>+=</expr> operator. It's
   only whether or not it's safe to do a destructive change that
   decides if this function or <ref resolved='lfun::`+'>lfun::`+()</ref> is called; both the
   <expr>+</expr> operator and the <expr>+=</expr> operator can call either
   one.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p>
</text></group></doc>
<method name='`+='>
<arguments><argument name='arg'><type><zero/></type></argument><argument name='rest'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><object>this_program</object></returntype>
</method>
</docgroup><docgroup homogen-name='``+' homogen-type='method'><doc><text><p>Right side addition/concatenation callback.</p>
<p>   This is used by <ref resolved='predef::`+'>predef::`+</ref>. It's called with any arguments
   that precede this object in the argument list of the call to
   <ref resolved='predef::`+'>predef::`+</ref>. The returned value should be a new instance that
   represents the addition/concatenation between the arguments in
   the order they are given and this object.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`+'>lfun::`+()</ref>, <ref resolved='predef::`+'>predef::`+()</ref></p>
</text></group></doc>
<method name='``+'>
<arguments><argument name='arg'><type><zero/></type></argument><argument name='rest'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`-' homogen-type='method'><doc><text><p>Negation and left side subtraction/set difference callback.</p>
<p>   This is used by <ref resolved='predef::`-'>predef::`-</ref>. When called without an argument
   the result should be a new instance that represents the negation
   of this object, otherwise the result should be a new instance
   that represents the difference between this object and <ref resolved='lfun::`-.arg'>arg</ref>.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``-'>lfun::``-()</ref>, <ref resolved='predef::`-'>predef::`-()</ref></p>
</text></group></doc>
<method name='`-'>
<arguments><argument name='arg'><type><or><void/><zero/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``-' homogen-type='method'><doc><text><p>Right side subtraction/set difference callback.</p>
<p>   This is used by <ref resolved='predef::`-'>predef::`-</ref>. The result should be a new
   instance that represents the difference between <ref resolved='lfun::``-.arg'>arg</ref> and this
   object.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`-'>lfun::`-()</ref>, <ref resolved='predef::`-'>predef::`-()</ref></p>
</text></group></doc>
<method name='``-'>
<arguments><argument name='arg'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`&amp;' homogen-type='method'><doc><text><p>Left side bitwise and/intersection callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``&amp;'>lfun::``&amp;()</ref>, <ref resolved='predef::`&amp;'>predef::`&amp;()</ref></p>
</text></group></doc>
<method name='`&amp;'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``&amp;' homogen-type='method'><doc><text><p>Right side bitwise and/intersection callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`&amp;'>lfun::`&amp;()</ref>, <ref resolved='predef::`&amp;'>predef::`&amp;()</ref></p>
</text></group></doc>
<method name='``&amp;'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`|' homogen-type='method'><doc><text><p>Left side bitwise or/union callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``|'>lfun::``|()</ref>, <ref resolved='predef::`|'>predef::`|()</ref></p>
</text></group></doc>
<method name='`|'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``|' homogen-type='method'><doc><text><p>Right side bitwise or/union callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`|'>lfun::`|()</ref>, <ref resolved='predef::`|'>predef::`|()</ref></p>
</text></group></doc>
<method name='``|'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`^' homogen-type='method'><doc><text><p>Left side exclusive or callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``^'>lfun::``^()</ref>, <ref resolved='predef::`^'>predef::`^()</ref></p>
</text></group></doc>
<method name='`^'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``^' homogen-type='method'><doc><text><p>Right side exclusive or callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`^'>lfun::`^()</ref>, <ref resolved='predef::`^'>predef::`^()</ref></p>
</text></group></doc>
<method name='``^'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`&lt;&lt;' homogen-type='method'><doc><text><p>Left side left shift callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``&lt;&lt;'>lfun::``&lt;&lt;()</ref>, <ref resolved='predef::`&lt;&lt;'>predef::`&lt;&lt;()</ref></p>
</text></group></doc>
<method name='`&lt;&lt;'>
<arguments><argument name='arg'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``&lt;&lt;' homogen-type='method'><doc><text><p>Right side left shift callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`&lt;&lt;'>lfun::`&lt;&lt;()</ref>, <ref resolved='predef::`&lt;&lt;'>predef::`&lt;&lt;()</ref></p>
</text></group></doc>
<method name='``&lt;&lt;'>
<arguments><argument name='arg'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`&gt;&gt;' homogen-type='method'><doc><text><p>Left side right shift callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``&gt;&gt;'>lfun::``&gt;&gt;()</ref>, <ref resolved='predef::`&gt;&gt;'>predef::`&gt;&gt;()</ref></p>
</text></group></doc>
<method name='`&gt;&gt;'>
<arguments><argument name='arg'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``&gt;&gt;' homogen-type='method'><doc><text><p>Right side right shift callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`&gt;&gt;'>lfun::`&gt;&gt;()</ref>, <ref resolved='predef::`&gt;&gt;'>predef::`&gt;&gt;()</ref></p>
</text></group></doc>
<method name='``&gt;&gt;'>
<arguments><argument name='arg'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`*' homogen-type='method'><doc><text><p>Left side multiplication/repetition/implosion callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``*'>lfun::``*()</ref>, <ref resolved='predef::`*'>predef::`*()</ref></p>
</text></group></doc>
<method name='`*'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``*' homogen-type='method'><doc><text><p>Right side multiplication/repetition/implosion callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`*'>lfun::`*()</ref>, <ref resolved='predef::`*'>predef::`*()</ref></p>
</text></group></doc>
<method name='``*'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`/' homogen-type='method'><doc><text><p>Left side division/split callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``/'>lfun::``/()</ref>, <ref resolved='predef::`/'>predef::`/()</ref></p>
</text></group></doc>
<method name='`/'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``/' homogen-type='method'><doc><text><p>Right side division/split callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`/'>lfun::`/()</ref>, <ref resolved='predef::`/'>predef::`/()</ref></p>
</text></group></doc>
<method name='``/'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`%' homogen-type='method'><doc><text><p>Left side modulo callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::``%'>lfun::``%()</ref>, <ref resolved='predef::`%'>predef::`%()</ref></p>
</text></group></doc>
<method name='`%'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='``%' homogen-type='method'><doc><text><p>Right side modulo callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`%'>lfun::`%()</ref>, <ref resolved='predef::`%'>predef::`%()</ref></p>
</text></group></doc>
<method name='``%'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`!' homogen-type='method'><doc><text><p>Logical not callback.</p>
</text><group><returns/><text><p>Returns non-zero if the object should be evaluated as false,
   and <expr>0</expr> (zero) otherwise.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`!'>predef::`!()</ref></p>
</text></group></doc>
<method name='`!'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='`~' homogen-type='method'><doc><text><p>Complement/inversion callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`~'>predef::`~()</ref></p>
</text></group></doc>
<method name='`~'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`==' homogen-type='method'><doc><text><p>Equality test callback.</p>
</text><group><note/><text><p>If this is implemented it might be necessary to implement
   <ref resolved='lfun::__hash'>lfun::__hash</ref> too. Otherwise mappings might hold several
   objects as indices which are duplicates according to this
   function. Various other functions that use hashing also might
   not work correctly, e.g. <ref resolved='predef::Array.uniq'>predef::Array.uniq</ref>.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`=='>predef::`==()</ref>, <ref resolved='lfun::__hash'>lfun::__hash</ref></p>
</text></group></doc>
<method name='`=='>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup><docgroup homogen-name='`&lt;' homogen-type='method'><doc><text><p>Less than test callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&lt;'>predef::`&lt;()</ref></p>
</text></group></doc>
<method name='`&lt;'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup><docgroup homogen-name='`&gt;' homogen-type='method'><doc><text><p>Greater than test callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`&gt;'>predef::`&gt;()</ref></p>
</text></group></doc>
<method name='`&gt;'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup><docgroup homogen-name='__hash' homogen-type='method'><doc><text><p>Hashing callback.</p>
<p>   This function gets called by various mapping operations when the
   object is used as index in a mapping. It should return an
   integer that corresponds to the object in such a way that all
   values which <ref resolved='lfun::`=='>lfun::`==</ref> considers equal to the object gets the
   same hash value.</p>
</text><group><note/><text><p>The function <ref resolved='predef::hash'>predef::hash</ref> does not return hash values that
   are compatible with this one.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='lfun::`=='>lfun::`==</ref></p>
</text></group></doc>
<method name='__hash'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='cast' homogen-type='method'><doc><text><p>Value cast callback.</p>
</text><group><param name='requested_type'/><text><p>Type to cast to.</p>
</text></group><group><returns/><text><p>Expected to return the object value-casted (converted) to
   the type described by <ref resolved='lfun::cast.requested_type'>requested_type</ref>.</p>
</text></group><group><note/><text><p>The argument is currently a string with the name
   of the type, but might in the future be a value of the type type.</p>
</text></group><group><note/><text><p>Currently casting between object types is a noop.</p>
</text></group><group><note/><text><p>If the returned value is not deemed to be of the requested type
   a runtime error may be thrown.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group></doc>
<method name='cast'>
<arguments><argument name='requested_type'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`[]' homogen-type='method'><doc><text><p>Index/subrange callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`[]'>predef::`[]()</ref></p>
</text></group></doc>
<method name='`[]'>
<arguments><argument name='arg1'><type><zero/></type></argument><argument name='arg2'><type><or><zero/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`[]=' homogen-type='method'><doc><text><p>Index assignment callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::`[]='>predef::`[]=()</ref>, <ref resolved='lfun::`-&gt;='>lfun::`-&gt;=()</ref></p>
</text></group></doc>
<method name='`[]='>
<arguments><argument name='arg1'><type><zero/></type></argument><argument name='arg2'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`-&gt;' homogen-type='method'><doc><text><p>Arrow index callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::`-&gt;'>predef::`-&gt;()</ref></p>
</text></group></doc>
<method name='`-&gt;'>
<arguments><argument name='arg'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`-&gt;=' homogen-type='method'><doc><text><p>Arrow index assignment callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::`-&gt;='>predef::`-&gt;=()</ref>, <ref resolved='lfun::`[]='>lfun::`[]=()</ref></p>
</text></group></doc>
<method name='`-&gt;='>
<arguments><argument name='arg1'><type><string/></type></argument><argument name='arg2'><type><zero/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='_sizeof' homogen-type='method'><doc><text><p>Size query callback.</p>
<p>   Called by <ref resolved='predef::sizeof'>predef::sizeof()</ref> to determine the number of elements
   in an object. If this function is not present, the number
   of public symbols in the object will be returned.</p>
</text><group><returns/><text><p>Expected to return the number of valid indices in the object.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sizeof'>predef::sizeof()</ref></p>
</text></group></doc>
<method name='_sizeof'>
<arguments/>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>List indices callback.</p>
</text><group><returns/><text><p>Expected to return an array with the valid indices in the object.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::indices'>predef::indices()</ref>, <ref resolved='lfun::_values'>lfun::_values()</ref></p>
</text></group></doc>
<method name='_indices'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup><docgroup homogen-name='_values' homogen-type='method'><doc><text><p>List values callback.</p>
</text><group><returns/><text><p>Expected to return an array with the values corresponding to
   the indices returned by <ref resolved='lfun::_indices'>lfun::_indices()</ref>.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::values'>predef::values()</ref>, <ref resolved='lfun::_indices'>lfun::_indices()</ref></p>
</text></group></doc>
<method name='_values'>
<arguments/>
<returntype><array/></returntype>
</method>
</docgroup><docgroup homogen-name='`()' homogen-type='method'><doc><text><p>Apply callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::`()'>predef::`()</ref></p>
</text></group></doc>
<method name='`()'>
<arguments><argument name='args'><type><varargs><zero/></varargs></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='_is_type' homogen-type='method'><doc><text><p>Type comparison callback.</p>
<p>   Called by the cast operator to determine if an object
   simulates a basic type.</p>
</text><group><param name='basic_type'/><text><p>One of:</p>
<string><group><value>"array"</value><value>"float"</value><value>"function"</value><value>"int"</value><value>"mapping"</value><value>"multiset"</value><value>"object"</value><value>"program"</value><value>"string"</value><value>"type"</value><value>"void"</value><value>"zero"</value></group></string><p>The following five shouldn't occurr, but are here for completeness:</p>
<string><group><value>"lvalue"</value><value>"mapping_data"</value><value>"object storage"</value><value>"pike_frame"</value><value>"unknown"</value></group></string>
</text></group><group><returns/><text><p>Expected to return <expr>1</expr> if the object is to be regarded as a
   simulation of the type specified by <ref resolved='lfun::_is_type.basic_type'>basic_type</ref>.</p>
</text></group><group><note/><text><p>The argument is currently a string with the name
   of the type, but might in the future be a value of the type type.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group></doc>
<method name='_is_type'>
<arguments><argument name='basic_type'><type><string/></type></argument></arguments>
<returntype><int><min>0</min><max>1</max></int></returntype>
</method>
</docgroup><docgroup homogen-name='_sprintf' homogen-type='method'><doc><text><p>Sprintf callback.</p>
<p>   This method is called by <ref resolved='predef::sprintf'>predef::sprintf()</ref> to print objects. If it is
   not present, printing of the object will not be supported for any
   conversion-type except for the <tt>%O</tt>-conversion-type, which
   will output <expr>"object"</expr>.</p>
</text><group><param name='conversion_type'/><text><p>One of:</p>
<int><group><value>'b'</value><text><p>Signed binary integer.</p>
</text></group><group><value>'d'</value><text><p>Signed decimal integer.</p>
</text></group><group><value>'u'</value><text><p>Unsigned decimal integer.</p>
</text></group><group><value>'o'</value><text><p>Signed octal integer.</p>
</text></group><group><value>'x'</value><text><p>Lowercase signed hexadecimal integer.</p>
</text></group><group><value>'X'</value><text><p>Uppercase signed hexadecimal integer.</p>
</text></group><group><value>'c'</value><text><p>Character. If a fieldsize has been specified this will output
       the low-order bytes of the integer in network byte order.</p>
</text></group><group><value>'f'</value><text><p>Float.</p>
</text></group><group><value>'g'</value><text><p>Heuristically chosen representation of float.</p>
</text></group><group><value>'G'</value><text><p>Like <tt>%g</tt>, but uses uppercase <tt>E</tt> for exponent.</p>
</text></group><group><value>'e'</value><text><p>Exponential notation float.</p>
</text></group><group><value>'E'</value><text><p>Like <tt>%e</tt>, but uses uppercase <tt>E</tt> for exponent.</p>
</text></group><group><value>'s'</value><text><p>String.</p>
</text></group><group><value>'O'</value><text><p>Any value (debug style).</p>
</text></group><group><value>'t'</value><text><p>Type of the argument.</p>
</text></group></int>
</text></group><group><param name='params'/><text><p>Conversion parameters. The following parameters may be supplied:</p>
<mapping><group><member><type><int/></type><index>"precision"</index></member><text><p>Precision.</p>
</text></group><group><member><type><int/></type><index>"width"</index></member><text><p>Field width.</p>
</text></group><group><member><type><int><min>1</min><max>1</max></int></type><index>"flag_left"</index></member><text><p>Indicates that the output should be left-aligned.</p>
</text></group><group><member><type><int/></type><index>"indent"</index></member><text><p>Indentation level in <tt>%O</tt>-mode.</p>
</text></group></mapping>
</text></group><group><returns/><text><p>Is expected to return a string describing the object formatted
   according to <ref resolved='lfun::_sprintf.conversion_type'>conversion_type</ref>.</p>
</text></group><group><note/><text><p><ref resolved='lfun::_sprintf'>_sprintf()</ref> is currently not called for the following
   conversion-types:</p>
<int><group><value>'F'</value><text><p>Binary IEEE representation of float (<tt>%4F</tt> gives 
       single precision, <tt>%8F</tt> gives double precision.)</p>
</text></group></int>
</text></group><group><note/><text><p>This function might be called at odd times, e.g. before
   <ref resolved='lfun::create'>lfun::create</ref> has been called or when an error has occurred.
   The reason is typically that it gets called when a backtrace is
   being formatted to report an error. It should therefore be very
   robust and not make any assumptions about its own internal
   state, at least not when <ref resolved='lfun::_sprintf.conversion_type'>conversion_type</ref> is <expr>'O'</expr>.</p>
</text></group><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::sprintf'>predef::sprintf()</ref></p>
</text></group></doc>
<method name='_sprintf'>
<arguments><argument name='conversion_type'><type><int/></type></argument><argument name='params'><type><or><mapping><indextype><string/></indextype><valuetype><int/></valuetype></mapping><void/></or></type></argument></arguments>
<returntype><string/></returntype>
</method>
</docgroup><docgroup homogen-name='_equal' homogen-type='method'><doc><text><p>Recursive equality callback.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::equal'>predef::equal()</ref>, <ref resolved='lfun::`=='>lfun::`==()</ref></p>
</text></group></doc>
<method name='_equal'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><int/></returntype>
</method>
</docgroup><docgroup homogen-name='_m_delete' homogen-type='method'><doc><text><p>Delete index callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::m_delete'>predef::m_delete()</ref></p>
</text></group></doc>
<method name='_m_delete'>
<arguments><argument name='arg'><type><mixed/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='_get_iterator' homogen-type='method'><doc><text><p>Iterator creation callback.</p>
<p>   The returned <ref resolved='predef::Iterator'>predef::Iterator</ref> instance works as a cursor that
   references a specific item contained (in some arbitrary sense)
   in this one.</p>
</text><group><note/><text><p>It's assumed that this function is side-effect free.</p>
</text></group><group><seealso/><text><p><ref resolved='predef::Iterator'>predef::Iterator</ref>, <ref resolved='predef::get_iterator'>predef::get_iterator</ref>, <ref>predef::foreach()</ref></p>
</text></group></doc>
<method name='_get_iterator'>
<arguments/>
<returntype><object resolved='predef::Iterator'>predef::Iterator</object></returntype>
</method>
</docgroup><docgroup homogen-name='_search' homogen-type='method'><doc><text><p>Search callback.</p>
</text><group><seealso/><text><p><ref resolved='predef::search'>predef::search()</ref></p>
</text></group></doc>
<method name='_search'>
<arguments><argument name='needle'><type><mixed/></type></argument><argument name='start'><type><or><mixed/><void/></or></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup></namespace>

















<namespace name='cpp'><docgroup homogen-type='constant' homogen-name='__VERSION__'><doc><text><p>This define contains the current Pike version as a float. If
 another Pike version is emulated, this define is updated
 accordingly.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__REAL_VERSION__'>__REAL_VERSION__</ref></p>
</text></group></doc>
<constant name='__VERSION__'><source-position first-line='1494' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__REAL_VERSION__'><doc><text><p>This define always contains the version of the current Pike,
 represented as a float.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__VERSION__'>__VERSION__</ref></p>
</text></group></doc>
<constant name='__REAL_VERSION__'><source-position first-line='1504' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__MAJOR__'><doc><text><p>This define contains the major part of the current Pike version,
 represented as an integer. If another Pike version is emulated,
 this define is updated accordingly.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MAJOR__'>__REAL_MAJOR__</ref></p>
</text></group></doc>
<constant name='__MAJOR__'><source-position first-line='1513' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__REAL_MAJOR__'><doc><text><p>This define always contains the major part of the version of the
 current Pike, represented as an integer.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__MAJOR__'>__MAJOR__</ref></p>
</text></group></doc>
<constant name='__REAL_MAJOR__'><source-position first-line='1523' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__MINOR__'><doc><text><p>This define contains the minor part of the current Pike version,
 represented as an integer. If another Pike version is emulated,
 this define is updated accordingly.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MINOR__'>__REAL_MINOR__</ref></p>
</text></group></doc>
<constant name='__MINOR__'><source-position first-line='1532' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__REAL_MINOR__'><doc><text><p>This define always contains the minor part of the version of the
 current Pike, represented as an integer.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__MINOR__'>__MINOR__</ref></p>
</text></group></doc>
<constant name='__REAL_MINOR__'><source-position first-line='1541' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__BUILD__'><doc><text><p>This constant contains the build number of the current Pike version,
 represented as an integer. If another Pike version is emulated,
 this constant remains unaltered.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__REAL_MINOR__'>__REAL_MINOR__</ref></p>
</text></group></doc>
<constant name='__BUILD__'><source-position first-line='1550' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__REAL_BUILD__'><doc><text><p>This define always contains the minor part of the version of the
 current Pike, represented as an integer.</p>
</text><group><seealso/><text><p><ref resolved='cpp::.__BUILD__'>__BUILD__</ref></p>
</text></group></doc>
<constant name='__REAL_BUILD__'><source-position first-line='1559' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__LINE__'><doc><text><p>This define contains the current line number, represented as an
 integer, in the source file.</p>
</text></doc>
<constant name='__LINE__'><source-position first-line='1568' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__FILE__'><doc><text><p>This define contains the file path and name of the source file.</p>
</text></doc>
<constant name='__FILE__'><source-position first-line='1574' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__DATE__'><doc><text><p>This define contains the current date at the time of compilation,
 e.g. "Jul 28 2001".</p>
</text></doc>
<constant name='__DATE__'><source-position first-line='1579' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__TIME__'><doc><text><p>This define contains the current time at the time of compilation,
 e.g. "12:20:51".</p>
</text></doc>
<constant name='__TIME__'><source-position first-line='1585' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__PIKE__'><doc><text><p>This define is always true.</p>
</text></doc>
<constant name='__PIKE__'><source-position first-line='1591' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__AUTO_BIGNUM__'><doc><text><p>This define is defined when automatic bignum conversion is enabled.
 When enabled all integers will automatically be converted to
 bignums when they get bigger than what can be represented by
 an integer, hampering performance slightly instead of crashing
 the program.</p>
</text></doc>
<constant name='__AUTO_BIGNUM__'><source-position first-line='1596' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__NT__'><doc><text><p>This define is defined when the Pike is running on a Microsoft Windows OS,
 not just Microsoft Windows NT, as the name implies.</p>
</text></doc>
<constant name='__NT__'><source-position first-line='1605' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
<docgroup homogen-type='constant' homogen-name='__amigaos__'><doc><text><p>This define is defined when the Pike is running on Amiga OS.</p>
</text></doc>
<constant name='__amigaos__'><source-position first-line='1611' file='/home/peter/hack/Pike/7.6-distmaker/src/cpp.c'/></constant>
</docgroup>
</namespace>









<namespace name=''><doc><text><p>Symbols implicitly inherited from the virtual base class.</p>
<p> These symbols exist mainly to simplify implementation of
 the corresponding lfuns.</p>
</text><group><seealso/><text><p><ref resolved='lfun::'>lfun::</ref></p>
</text></group></doc>



<docgroup homogen-name='`-&gt;' homogen-type='method'><doc><text><p>Builtin arrow operator.</p>
<p> This function indexes the current object with the string <ref resolved='::`-&gt;.index'>index</ref>.
 This is useful when the arrow operator has been overloaded.</p>
</text><group><seealso/><text><p><ref resolved='::`-&gt;='>::`-&gt;=()</ref></p>
</text></group></doc>
<method name='`-&gt;'>
<arguments><argument name='index'><type><string/></type></argument></arguments>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='`-&gt;=' homogen-type='method'><doc><text><p>Builtin arrow set operator.</p>
<p> This function indexes the current object with the string <ref resolved='::`-&gt;=.index'>index</ref>,
 and sets it to <ref resolved='::`-&gt;=.value'>value</ref>.
 This is useful when the arrow set operator has been overloaded.</p>
</text><group><seealso/><text><p><ref resolved='::`-&gt;'>::`-&gt;()</ref></p>
</text></group></doc>
<method name='`-&gt;='>
<arguments><argument name='index'><type><string/></type></argument><argument name='value'><type><mixed/></type></argument></arguments>
<returntype><void/></returntype>
</method>
</docgroup><docgroup homogen-name='_indices' homogen-type='method'><doc><text><p>Builtin function to list the identifiers of an object.
 This is useful when <ref resolved='lfun::_indices'>lfun::_indices</ref> has been overloaded.</p>
</text><group><seealso/><text><p><ref resolved='::_values'>::_values, ::`-&gt;</ref></p>
</text></group></doc>
<method name='_indices'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup><docgroup homogen-name='_values' homogen-type='method'><doc><text><p>Builtin function to list the values of the identifiers of an
 object. This is useful when <ref resolved='lfun::_values'>lfun::_values</ref> has been overloaded.</p>
</text><group><seealso/><text><p><ref resolved='::_indices'>::_indices, ::`-&gt;</ref></p>
</text></group></doc>
<method name='_values'>
<arguments/>
<returntype><mixed/></returntype>
</method>
</docgroup></namespace></autodoc>