<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook MathML Module V1.1b1//EN"
              "http://www.oasis-open.org/docbook/xml/mathml/1.1CR1/dbmathml.dtd">
<refentry>
    <refentryinfo>
        <keywordset>
            <keyword>                            
                clGetExtensionFunctionAddress
            </keyword>
        </keywordset>
    </refentryinfo>

    <refmeta>                                    
        <refentrytitle>clGetExtensionFunctionAddress</refentrytitle>

        <refmiscinfo>
            <copyright>
                <year>2007-2009</year>
                <holder>The Khronos Group Inc. 
 Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.</holder>
            </copyright>
        </refmiscinfo>
        <manvolnum>2</manvolnum>
    </refmeta>

<!-- ================================ SYNOPSIS -->

    <refnamediv id="clGetExtensionFunctionAddress">             
        <refname>clGetExtensionFunctionAddress</refname>

        <refpurpose>
            Returns the address of the extension function named by <varname>funcname</varname>.
        </refpurpose>
    </refnamediv>


    <refsynopsisdiv xmlns:xlink="http://www.w3.org/1999/xlink"><title></title>
        <funcsynopsis>
            <funcprototype>
                <funcdef>
                    <function>                   
                        clGetExtensionFunctionAddress
                    </function>
                </funcdef>

                <paramdef><parameter>funcname</parameter></paramdef>

            </funcprototype>
        </funcsynopsis>
    </refsynopsisdiv>


<!-- ================================ PARAMETERS -->


    <refsect1 id="parameters">
        <title>Parameters</title>
        <variablelist>


            <varlistentry>
                <term>
                    <varname> <!-- parameter name -->
                        funcname
                    </varname>
                </term>

                <listitem>
                    <para> <!-- parameter description -->
                        Name of an extension function.
                    </para>
               </listitem>
            </varlistentry>

        </variablelist>
    </refsect1>


<!-- ================================ DESCRIPTION  -->

    <refsect1 id="description"><title>Description</title>
        <para>
The macro <function>clGetExtensionFunctionAddress</function>
returns the address of the extension function named by <varname>funcname</varname>. The pointer returned should be cast to a function pointer type matching the extension function's definition defined in the
appropriate extension specification and header file. A return value of NULL indicates that the
specified function does not exist for the implementation. A non-NULL return value for
<function>clGetExtensionFunctionAddress</function> does not guarantee that an extension function is actually supported. The application must also make a corresponding query using
<citerefentry><refentrytitle>clGetPlatformInfo</refentrytitle></citerefentry>(platform, <constant>CL_PLATFORM_EXTENSIONS</constant>, ... ) or <citerefentry><refentrytitle>clGetDeviceInfo</refentrytitle></citerefentry>(device,
<constant>CL_DEVICE_EXTENSIONS</constant>, ... ) to determine if an extension is supported by the OpenCL
implementation.
		</para>
		<para>
<function>clGetExtensionFunctionAddress</function> may not be queried for core (non-extension) functions in OpenCL. For functions that are queryable with <function>clGetExtensionFunctionAddress</function>,
implementations may choose to also export those functions statically from the object libraries
implementing those functions. However, portable applications cannot rely on this behavior.
        </para>
    </refsect1>


<!-- ================================ NOTES  -->


    <refsect1 id="notes"><title>Notes</title>
        <para>
  Since there is no way to qualify the query with a device, the function pointer returned must work for all implementations of that extension on different devices. The behavior of calling a device extension function on a device not supporting that extension is undefined.
        </para>
    </refsect1>



<!-- ================================ EXAMPLE  -->
<!-- DO NOT DELETE IN CASE AN EXAMPLE IS ADDED IN THE FUTURE -->
<!--
    <refsect2 id="example1">
        <title>
            Example
        </title>

        <informaltable frame="none">
            <tgroup cols="1" align="left" colsep="0" rowsep="0">
                <colspec colname="col1" colnum="1" />
                <tbody>
                    <row>
                        <entry>
                            Example goes here - it will be set in "code" type with white space preserved.
                        </entry>
                    </row>
                </tbody>
            </tgroup>
        </informaltable>
    </refsect2>
-->


<!-- ================================ SPECIFICATION  -->
<!-- Set the "uri" attribute in the <olink /> element to the "named destination" for the PDF page
-->
    <refsect1 id="specification"><title>Specification</title>
        <para>
            <imageobject>
                <imagedata fileref="pdficon_small1.gif" format="gif" />
            </imageobject>
                                                 
            <olink uri="clGetExtensionFunctionAddress">OpenCL Specification</olink>
        </para>
    </refsect1>


<!-- ================================ ALSO SEE  -->

    <refsect1 id="seealso"><title>Also see</title>
        <para>
            <citerefentry>
                <refentrytitle>EXTENSION</refentrytitle>
            </citerefentry>
        </para>
    </refsect1>



<!-- ============================== COPYRIGHT -->
<!-- Content included from copyright.inc.xsl -->

    <refsect3 id="Copyright"><title></title>
		<imageobject>
                <imagedata fileref="KhronosLogo.jpg" format="jpg" />
        </imageobject>
		<para />
    </refsect3>

</refentry>

