(* libsimpleio bindings for GNU Modula-2 *)

(* Copyright (C)2018-2023, Philip Munts dba Munts Technologies.                *)
(*                                                                             *)
(* Redistribution and use in source and binary forms, with or without          *)
(* modification, are permitted provided that the following conditions are met: *)
(*                                                                             *)
(* * Redistributions of source code must retain the above copyright notice,    *)
(*   this list of conditions and the following disclaimer.                     *)
(*                                                                             *)
(* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" *)
(* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE   *)
(* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE  *)
(* ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE   *)
(* LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR         *)
(* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF        *)
(* SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS    *)
(* INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN     *)
(* CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)     *)
(* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE  *)
(* POSSIBILITY OF SUCH DAMAGE.                                                 *)

DEFINITION MODULE FOR "C" libevent;

  PROCEDURE EVENT_open
   (VAR epfd   : INTEGER;
    VAR error  : CARDINAL);

  PROCEDURE EVENT_register_fd
   (epfd       : INTEGER;
    fd         : INTEGER;
    events     : CARDINAL;
    handle     : CARDINAL;
    VAR error  : CARDINAL);

  PROCEDURE EVENT_modify_fd
   (epfd       : INTEGER;
    fd         : INTEGER;
    events     : CARDINAL;
    handle     : CARDINAL;
    VAR error  : CARDINAL);

  PROCEDURE EVENT_unregister_fd
   (epfd       : INTEGER;
    fd         : INTEGER;
    VAR error  : CARDINAL);

  PROCEDURE EVENT_wait
   (epfd       : INTEGER;
    VAR fd     : INTEGER;
    VAR event  : CARDINAL;
    VAR handle : CARDINAL;
    timeoutms  : INTEGER;
    VAR error  : CARDINAL);

  PROCEDURE EVENT_close
   (epfd       : INTEGER;
    VAR error  : CARDINAL);

END libevent.
