Next: , Previous: Pragma Export_Object, Up: Implementation Defined Pragmas


2.56 Pragma Export_Procedure

Syntax:

    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

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.

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.