with Interfaces.C.Pointers; with Interfaces.C.Strings; with GNAT.Sockets.Constants; with System;
package GNAT.Sockets.Thin is
chars_ptr_array
Fd_Set
Clear
Empty
Is_Empty
Is_Set
Max
Set
Fd_Set_Access
Hostent
Hostent_Access
In_Addr
In_Addr_Access
In_Addr_Access_Array
Int_Access
Sockaddr
Sockaddr_Access
Sockaddr_In
Sockaddr_In_Access
Socket_Fd_Array
Timeval
Timeval_Access
Timeval_Unit
long
Two_Int
Failure : constant C.int := -1;
Immediat : constant Timeval := (0, 0);
Inaddr_Any : aliased constant In_Addr := (others => 0);
Null_Fd_Set : constant Fd_Set := (0, (others => 0));
Success : constant C.int := 0;
package C renames Interfaces.C;
use type C.int;
type Socket_Fd_Array is array (C.unsigned range 1 .. 64) of C.int; pragma Convention (C, Socket_Fd_Array);
type Fd_Set is record fd_count : C.unsigned; fd_array : Socket_Fd_Array; end record; pragma Convention (C, Fd_Set);
type Fd_Set_Access is access all Fd_Set; pragma Convention (C, Fd_Set_Access);
type Timeval_Unit is new C.long; pragma Convention (C, Timeval_Unit);
type Timeval is record Tv_Sec : Timeval_Unit; Tv_Usec : Timeval_Unit; end record; pragma Convention (C, Timeval);
type Timeval_Access is access all Timeval; pragma Convention (C, Timeval_Access);
type Int_Access is access all C.int; pragma Convention (C, Int_Access);
type Chars_Ptr_Array is array (C.size_t range <>) of aliased C.Strings.chars_ptr;
package Chars_Ptr_Pointers is new C.Pointers (C.size_t, C.Strings.chars_ptr, chars_ptr_array, C.Strings.Null_Ptr);
type In_Addr is record S_B1, S_B2, S_B3, S_B4 : C.unsigned_char; end record; pragma Convention (C, In_Addr);
type In_Addr_Access is access all In_Addr; pragma Convention (C, In_Addr_Access);
type In_Addr_Access_Array is array (C.size_t range <>) of aliased In_Addr_Access; pragma Convention (C, In_Addr_Access_Array);
package In_Addr_Access_Pointers is new C.Pointers (C.size_t, In_Addr_Access, In_Addr_Access_Array, null);
type Sockaddr is record Sa_Family : C.unsigned_short; Sa_Data : C.char_array (1 .. 14); end record; pragma Convention (C, Sockaddr);
type Sockaddr_Access is access all Sockaddr; pragma Convention (C, Sockaddr_Access);
type Sockaddr_In is record Sin_Family : C.unsigned_short := Constants.AF_INET; Sin_Port : C.unsigned_short := 0; Sin_Addr : In_Addr := Inaddr_Any; Sin_Zero : C.char_array (1 .. 8) := (others => C.char'Val (0)); end record; pragma Convention (C, Sockaddr_In);
type Sockaddr_In_Access is access all Sockaddr_In; pragma Convention (C, Sockaddr_In_Access);
type Hostent is record H_Name : C.Strings.chars_ptr; H_Aliases : Chars_Ptr_Pointers.Pointer; H_Addrtype : C.short; H_Length : C.short; H_Addr_List : In_Addr_Access_Pointers.Pointer; end record; pragma Convention (C, Hostent);
type Hostent_Access is access all Hostent; pragma Convention (C, Hostent_Access);
type Two_Int is array (0 .. 1) of C.int; pragma Convention (C, Two_Int);
function C_Accept (S : C.int; Addr : System.Address; Addrlen : access C.int) return C.int;
function C_Bind (S : C.int; Name : System.Address; Namelen : C.int) return C.int;
function C_Close (Fd : C.int) return C.int;
function C_Connect (S : C.int; Name : System.Address; Namelen : C.int) return C.int;
function C_Gethostbyaddr (Addr : System.Address; Length : C.int; Typ : C.int) return Hostent_Access;
function C_Gethostbyname (Name : C.char_array) return Hostent_Access;
function C_Gethostname (Name : System.Address; Namelen : C.int) return C.int;
function C_Getpeername (S : C.int; Name : System.Address; Namelen : access C.int) return C.int;
function C_Getsockname (S : C.int; Name : System.Address; Namelen : access C.int) return C.int;
function C_Getsockopt (S : C.int; Level : C.int; Optname : C.int; Optval : System.Address; Optlen : access C.int) return C.int;
function C_Inet_Addr (Cp : C.Strings.chars_ptr) return C.int;
function C_Ioctl (S : C.int; Req : C.int; Arg : Int_Access) return C.int;
function C_Listen (S, Backlog : C.int) return C.int;
function C_Pipe (Fds : access Two_Int) return C.int;
function C_Read (Fildes : C.int; Buf : System.Address; Nbyte : C.int) return C.int;
function C_Recv (S : C.int; Buf : System.Address; Len : C.int; Flags : C.int) return C.int;
function C_Recvfrom (S : C.int; Buf : System.Address; Len : C.int; Flags : C.int; From : Sockaddr_In_Access; Fromlen : access C.int) return C.int;
function C_Select (Nfds : C.int; Readfds : Fd_Set_Access; Writefds : Fd_Set_Access; Exceptfds : Fd_Set_Access; Timeout : Timeval_Access) return C.int;
function C_Send (S : C.int; Buf : System.Address; Len : C.int; Flags : C.int) return C.int;
function C_Sendto (S : C.int; Msg : System.Address; Len : C.int; Flags : C.int; To : Sockaddr_In_Access; Tolen : C.int) return C.int;
function C_Setsockopt (S : C.int; Level : C.int; Optname : C.int; Optval : System.Address; Optlen : C.int) return C.int;
function C_Shutdown (S : C.int; How : C.int) return C.int;
function C_Socket (Domain, Typ, Protocol : C.int) return C.int;
function C_Strerror (Errnum : C.int) return C.Strings.chars_ptr;
function C_System (Command : System.Address) return C.int;
function C_Write (Fildes : C.int; Buf : System.Address; Nbyte : C.int) return C.int;
function WSAStartup (WS_Version : Interfaces.C.int; WSADataAddress : System.Address) return Interfaces.C.int;
procedure WSACleanup;
procedure Clear (Item : in out Fd_Set; Socket : in C.int);
procedure Empty (Item : in out Fd_Set);
function Is_Empty (Item : Fd_Set) return Boolean;
function Is_Set (Item : Fd_Set; Socket : C.int) return Boolean;
function Max (Item : Fd_Set) return C.int;
procedure Set (Item : in out Fd_Set; Socket : in C.int);
procedure Finalize;
procedure Initialize (Process_Blocking_IO : Boolean := False);
private -- Implementation-defined ...
end GNAT.Sockets.Thin;