/* do not edit automatically generated by mc from M2Dependent. */ /* M2Dependent.def defines the run time module dependencies interface. Copyright (C) 2022-2023 Free Software Foundation, Inc. Contributed by Gaius Mulley . This file is part of GNU Modula-2. GNU Modula-2 is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or (at your option) any later version. GNU Modula-2 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. Under Section 7 of GPL version 3, you are granted additional permissions described in the GCC Runtime Library Exception, version 3.1, as published by the Free Software Foundation. You should have received a copy of the GNU General Public License and a copy of the GCC Runtime Library Exception along with this program; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see . */ #if !defined (_M2Dependent_H) # define _M2Dependent_H # ifdef __cplusplus extern "C" { # endif # if !defined (PROC_D) # define PROC_D typedef void (*PROC_t) (void); typedef struct { PROC_t proc; } PROC; # endif # include "GSYSTEM.h" # if defined (_M2Dependent_C) # define EXTERN # else # define EXTERN extern # endif typedef struct M2Dependent_ArgCVEnvP_p M2Dependent_ArgCVEnvP; typedef void (*M2Dependent_ArgCVEnvP_t) (int, void *, void *); struct M2Dependent_ArgCVEnvP_p { M2Dependent_ArgCVEnvP_t proc; }; EXTERN void M2Dependent_ConstructModules (void * applicationmodule, void * libname, int argc, void * argv, void * envp); EXTERN void M2Dependent_DeconstructModules (void * applicationmodule, void * libname, int argc, void * argv, void * envp); /* RegisterModule - adds module name to the list of outstanding modules which need to have their dependencies explored to determine initialization order. */ EXTERN void M2Dependent_RegisterModule (void * modulename, void * libname, M2Dependent_ArgCVEnvP init, M2Dependent_ArgCVEnvP fini, PROC dependencies); /* RequestDependant - used to specify that modulename:libname is dependant upon module dependantmodule:dependantlibname */ EXTERN void M2Dependent_RequestDependant (void * modulename, void * libname, void * dependantmodule, void * dependantlibname); # ifdef __cplusplus } # endif # undef EXTERN #endif