<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<!--
// // See license.txt for license information. // // schema_method.xml // // 21-Aug-2003 phamilton Created //
-->

<object xmlns:xi="http://www.w3.org/2001/XInclude" xmlns="urn:xmlliterate.schema" name="method">
    <description>A method on an object. Often called a "procedure" in some languages. Methods can be "called" in the language to produce some effect.</description>
    <classname>schema_method</classname>
    <enumerations>
        <enumeration name="e_inheritance">
            <description>An enumeration of all inheritance types.</description>
            <classname>schema_e_inheritance</classname>
            <tokens>
                <token name="concrete">
                    <description>A method that is concrete.</description>
                    <id>concrete_</id>
                </token>
                <token name="abstract">
                    <description>A method that is abstract.</description>
                    <id>abstract_</id>
                </token>
                <token name="override">
                    <description>A method that is overridden from an abstract method.</description>
                    <id>override_</id>
                </token>
                <token name="virtual">
                    <description>A method that can be overridden in a class.</description>
                    <id>virtual_</id>
                </token>
            </tokens>
        </enumeration>
        <enumeration name="e_scope">
            <description>An enumeration of all scope types.</description>
            <classname>schema_e_scope</classname>
            <tokens>
                <token name="object">
                    <description>A method that belongs as part of an object. This is often called an "instance" method.</description>
                    <id>object_</id>
                </token>
                <token name="class">
                    <description>A method that is global of all objects of this class. This is often called a "static" or a "class" method.</description>
                    <id>class_</id>
                </token>
                <token name="global">
                    <description>A method that is global to the library or application. This is often called a "static" method.</description>
                    <id>global_</id>
                </token>
            </tokens>
        </enumeration>
    </enumerations>
    <members>
        <enumtypename name="access">
            <description>The access level for this method.</description>
            <enumeration>e_access</enumeration>
        </enumtypename>
        <enumtypename name="inheritance">
            <description>The inheritance for this method.</description>
            <enumeration>e_inheritance</enumeration>
        </enumtypename>
        <enumtypename name="scope">
            <description>The scope for this method.</description>
            <enumeration>e_scope</enumeration>
        </enumtypename>
        <booltype name="readonly">
            <description>This method does not modify any of the members of the object. This is called "const" in some languages.</description>
        </booltype>
        <typedobjreftype name="returns">
            <description>The return type of the method</description>
            <reftype>@typename</reftype>
        </typedobjreftype>
        <typedobjvectortype name="arguments">
            <description>All the arguments for the method.</description>
            <reftype>@typename</reftype>
        </typedobjvectortype>
        <stringtype name="includes">
            <description>Include files that are needed because of any of the arguments or return types. This is really only for obscure cases. We handle most of them.</description>
        </stringtype>
        <typedobjvectortype name="implementations">
            <description>The implementation(s) for this method.</description>
            <reftype>@implementation</reftype>
        </typedobjvectortype>
    </members>
</object>