#ifndef S_SOL_SHOBJ_H
#define S_SOL_SHOBJ_H

#include <sccs.h>

#define S_SHOBJLIST_NULL_NAME "(pre-linked shared objects)"

typedef struct shobj_t {
    struct shobj_t *next;
    char *name;
    void *handle;
} shobj;

typedef struct shobjlist_t {
    shobj *head;/* singly linked list of shobj's */
} shobjlist;

shobjlist *S_shobjlist;/* The shobjlist created by S-PLUS. */

int		S_shobjlist_lazy_init(void);
void		S_shobjlist_shut(shobjlist *sl);
void *		S_shobjlist_sym(shobjlist *sl, char *symbol);
void		S_QPE_shobjlist_load(char **name, long *pos,
				     char **symbols, long *nsymbols);
vector *	S_QPE_shobjlist_list(vector *ent, vector *arglist);

#endif
