Skip to main content

  | मौसम…

411 समाचार
Public archive edition · Attributed source reporting with original dates · AI drafts are excluded

411 REFERENCE · Wikibooks

Ada Programming/Libraries/Interfaces

Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.

Packages Interfaces __TOC__ The Interfaces package helps in interfacing with other programming languages. Ada is one of the few languages where interfacing with other languages is part of the language standard. The language standard defines the interfaces for C, Cobol and Fortran. Of course any implementation might define further interfaces — GNAT, for example, defines an interface to C++. Interfacing with other languages is actually provided by Export, Import and Convention. In Ada 2012 these clauses have an alternate form using "with" in place of "pragma." Example As an example, here is a complete program that queries the terminfo (terminal information) database on Unix systems to get the dimensions of the current terminal window. It interfaces with C language functions in the ncurses package, so it must be linked with ncurses (e.g. with the -lncurses switch) when it is compiled. with Ada Text_IO; with Interfaces C; with Interfaces C Pointers; with Interfaces C Strings; procedure ctest is use Interfaces.C; type int_array is array (size_t range <>) of aliased int with Pack; package Int_Pointers is new Pointers ( Index => size_t, Element => int, Element_Array => int_array, Default_Terminator => 0 ); int setupterm (char *term, int fildes, int *errret); function Get_Terminal_Data ( terminal : Interfaces.C.Strings.chars_ptr; file_descriptor : int; error_code_pointer : Int_Pointers.Pointer ) return int with Import => True, Convention => C, External_Name => "setupterm"; int tigetnum (char *name); function Get_Numeric_Value (name : Interfaces.C.Strings.chars_ptr) return int with Import => True, Convention => C, External_Name => "tigetnum"; function Format (value : int) return String is result : String := int'Image (value); begin return (if result(1) = ' ' then result(2..result'Last) else result); end Format; error_code : aliased int; error_code_pointer : Int_Pointers.Pointer := error_code'Access; begin if Get_Terminal_Data (Interfaces.C.Strings.Null_Ptr, 1, error_code_pointer) = 0 then Ada.Text_IO.Put_Line ( "Window size: " & Format (Get_Numeric_Value (Interfaces.C.Strings.New_String ("cols"))) & "x" & Format (Get_Numeric_Value (Interfaces.C.Strings.New_String ("lines"))) ); else Ada.Text_IO.Put_Line ("Can't access terminal data"); end if; end ctest; Child Packages Interfaces.C Interfaces.C.Extensions (GNAT) Interfaces.C.Pointers Interfaces.C.Streams (GNAT) Interfaces.C.Strings Interfaces.CPP (GNAT) Interfaces.COBOL Interfaces.Fortran Interfaces.OS2Lib (GNAT, OS/2) Interfaces.OS2Lib.Errors (GNAT, OS/2) Interfaces.OS2Lib.Synchronization (GNAT, OS/2) Interfaces.OS2Lib.Threads (GNAT, OS/2) Interfaces.Packed_Decimal (GNAT) Interfaces.VxWorks (GNAT, VxWorks) Interfaces.VxWorks.IO (GNAT, VxWorks) See also Wikibook Ada Programming Ada Programming/Libraries Ada Programming/Libraries/Standard Ada Programming/Libraries/Ada Ada Programming/Libraries/System Ada Reference Manual Ada 95 B Interface to Other Languages B 2 The Package Interfaces Ada 2005 B Interface to Other Languages B 2 The Package Interfaces Interfaces es:Programación en Ada/Unidades predefinidas/Interfaces