/*
 *  MODULE  :   import.h
 *              handles import of modules, reads interface files
 *
{*  last modification:  12.12.91  17:22   }
 *  BB  11.12.91 : name and path in modrec are pointers now,
 *                 iroutname added, initname added to inirec.
 *
*/
 
#define  do_nothing     /*_used_in_while_loops_*/
 
#define  ACTUAL_VERSION  3      /* Version 2 is the actual version of pxsc */
 
#define FlagIndicator   '*'     /* If an identifier carries flags, this */
#define HasdynFlag      'H'     /* sign indicates the start of flag-list. */
 
/*---------------------------------------------------------------------------*/
 
typedef struct modrec *modptr;
typedef struct inirec *iniptr;
 
extern  modptr modlist ;                                /* linear list */
extern  modptr modlast ;                 /* last member of linear list */
extern  iniptr initlist;                                /* linear list */
extern  iniptr initlast;                 /* last member of linear list */
 
/*---------------------------------------------------------------------------*/
 
#ifdef LINT_ARGS

global  char   *iroutname  (char*); 

global  modptr  insmod     (char*, boolean, boolean);
global  void    import     (void);
 
global  boolean timecheck  (modptr, modptr);
 
global  void    code_init  (void);
global  void    code_reset (void);
global  int     id_setcode (idptr);
global  int     id_getcode (idptr);
global  idptr   id_decod   (int);
 
#else
 
global  char   *iroutname  ( ); 

global  modptr  insmod     ( );
global  void    import     ( );
 
global  boolean timecheck  ( );
 
global  void    code_init  ( );
global  void    code_reset ( );
global  int     id_setcode ( );
global  int     id_getcode ( );
global  idptr   id_decod   ( );
 
#endif
 
/*---------------------------------------------------------------------------*/
 
/*!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/
/* The following declaration is necessary to satisfy forward declaration. */
/* Do not use the following names globally. */
 
typedef struct modrec {
          modptr     next;      /* next member of linear list */
          char      *name;      /* modulename, at most 8 char */
          char      *path;      /* path, where module was found */
          int     time[4];      /* creating date of module */
          int     version;      /* strings or BYTE-codes */
          postype  nampos;      /* position of module-name in the use-clause */
          boolean  usglob;      /* same as imported */
          boolean  inited;      /* is member of inilist */
          boolean  direct;      /* used directly by translated prog */
          boolean  stdmod;      /* module is a standart-module */
        } modrec;
 
typedef struct inirec {
          iniptr  next;         /* next member of linear list */
          modptr  md;           /* pointer to modlist to get modulename */
          boolean initrout;     /* module has initialisation-routine */
          char *initname;       /* pointer to name of init-rout */
        } inirec;
