Next: Pragma Export_Value, Previous: Pragma Export_Object, Up: Implementation Defined Pragmas
pragma Export_Procedure ( [Internal =>] LOCAL_NAME [, [External =>] EXTERNAL_SYMBOL] [, [Parameter_Types =>] PARAMETER_TYPES] [, [Mechanism =>] MECHANISM]); EXTERNAL_SYMBOL ::= IDENTIFIER | static_string_EXPRESSION | "" PARAMETER_TYPES ::= null | TYPE_DESIGNATOR {, TYPE_DESIGNATOR} TYPE_DESIGNATOR ::= subtype_NAME | subtype_Name ' Access MECHANISM ::= MECHANISM_NAME | (MECHANISM_ASSOCIATION {, MECHANISM_ASSOCIATION}) MECHANISM_ASSOCIATION ::= [formal_parameter_NAME =>] MECHANISM_NAME MECHANISM_NAME ::= Value | Reference | Descriptor [([Class =>] CLASS_NAME)] | Short_Descriptor [([Class =>] CLASS_NAME)] CLASS_NAME ::= ubs | ubsb | uba | s | sb | a
This pragma is identical to Export_Function
except that it
applies to a procedure rather than a function and the parameters
Result_Type
and Result_Mechanism
are not permitted.
GNAT does not require a separate pragma Export
, but if none is
present, Convention Ada
is assumed, which is usually
not what is wanted, so it is usually appropriate to use this
pragma in conjunction with a Export
or Convention
pragma that specifies the desired foreign convention.
Passing by descriptor is supported only on the OpenVMS ports of GNAT. The default behavior for Export_Procedure is to accept either 64bit or 32bit descriptors unless short_descriptor is specified, then only 32bit descriptors are accepted.
Special treatment is given if the EXTERNAL is an explicit null string or a static string expressions that evaluates to the null string. In this case, no external name is generated. This form still allows the specification of parameter mechanisms.