/* : : generated by proto : : */
/* : : generated from contrib/ast/src/lib/libdll/features/dll by iffe version 2012-07-17 : : */

#ifndef _def_dll_dll
#if !defined(__PROTO__)
#  if defined(__STDC__) || defined(__cplusplus) || defined(_proto) || defined(c_plusplus)
#    if defined(__cplusplus)
#      define __LINKAGE__	"C"
#    else
#      define __LINKAGE__
#    endif
#    define __STDARG__
#    define __PROTO__(x)	x
#    define __OTORP__(x)
#    define __PARAM__(n,o)	n
#    if !defined(__STDC__) && !defined(__cplusplus)
#      if !defined(c_plusplus)
#      	define const
#      endif
#      define signed
#      define void		int
#      define volatile
#      define __V_		char
#    else
#      define __V_		void
#    endif
#  else
#    define __PROTO__(x)	()
#    define __OTORP__(x)	x
#    define __PARAM__(n,o)	o
#    define __LINKAGE__
#    define __V_		char
#    define const
#    define signed
#    define void		int
#    define volatile
#  endif
#  define __MANGLE__	__LINKAGE__
#  if defined(__cplusplus) || defined(c_plusplus)
#    define __VARARG__	...
#  else
#    define __VARARG__
#  endif
#  if defined(__STDARG__)
#    define __VA_START__(p,a)	va_start(p,a)
#  else
#    define __VA_START__(p,a)	va_start(p)
#  endif
#  if !defined(__INLINE__)
#    if defined(__cplusplus)
#      define __INLINE__	extern __MANGLE__ inline
#    else
#      if defined(_WIN32) && !defined(__GNUC__)
#      	define __INLINE__	__inline
#      endif
#    endif
#  endif
#endif
#if !defined(__LINKAGE__)
#define __LINKAGE__		/* 2004-08-11 transition */
#endif

#define _def_dll_dll	1
#define _sys_types	1	/* #include <sys/types.h> ok */
#define _hdr_dlfcn	1	/* #include <dlfcn.h> ok */
#define _LIB_dl	1	/* -ldl is a library */
#define _lib_dlopen	1	/* dlopen() in default lib(s) */
#define _DLL_NEXT_PATH	"/usr/lib/libc.so.1"

#if defined(__MVS__) && !defined(__SUSV3)
#define __SUSV3		1
#endif
#include <dlfcn.h>

#define DLL_INFO_PREVER	0x0001	/* pre-suffix style version */
#define DLL_INFO_DOTVER	0x0002	/* post-suffix style version */

typedef unsigned long (*Dll_plugin_version_f) __PROTO__((void));
typedef int (*Dllerror_f) __PROTO__((__V_*, __V_*, int, ...));

typedef struct Dllinfo_s
{
	char**	sibling;	/* sibling dirs on $PATH */
	char*	prefix;		/* library name prefix */
	char*	suffix;		/* library name suffix */
	char*	env;		/* library path env var */
	int	flags;		/* DLL_INFO_* flags */
#ifdef _DLLINFO_PRIVATE_
	_DLLINFO_PRIVATE_
#endif
} Dllinfo_t;

typedef struct Dllnames_s
{
	char*		id;
	char*		name;
	char*		base;
	char*		type;
	char*		opts;
	char*		path;
	char		data[1024];
} Dllnames_t;

typedef struct Dllent_s
{
	char*		path;
	char*		name;
#ifdef _DLLENT_PRIVATE_
	_DLLENT_PRIVATE_
#endif
} Dllent_t;

typedef struct Dllscan_s
{
	__V_*		pad;
#ifdef _DLLSCAN_PRIVATE_
	_DLLSCAN_PRIVATE_
#endif
} Dllscan_t;

#if _BLD_dll && defined(__EXPORT__)
#undef __MANGLE__
#define __MANGLE__ __LINKAGE__          __EXPORT__
#endif

extern __MANGLE__ Dllinfo_t*	dllinfo __PROTO__((void));
extern __MANGLE__ __V_*		dllplugin __PROTO__((const char*, const char*, const char*, unsigned long, unsigned long*, int, char*, size_t));
extern __MANGLE__ __V_*		dllplug __PROTO__((const char*, const char*, const char*, int, char*, size_t));
extern __MANGLE__ __V_*		dllfind __PROTO__((const char*, const char*, int, char*, size_t));
extern __MANGLE__ Dllnames_t*	dllnames __PROTO__((const char*, const char*, Dllnames_t*));
extern __MANGLE__ __V_*		dll_lib __PROTO__((Dllnames_t*, unsigned long, Dllerror_f, __V_*));
extern __MANGLE__ __V_*		dllmeth __PROTO__((const char*, const char*, unsigned long));
extern __MANGLE__ __V_*		dllopen __PROTO__((const char*, int));
extern __MANGLE__ __V_*		dllnext __PROTO__((int));
extern __MANGLE__ __V_*		dlllook __PROTO__((__V_*, const char*));
extern __MANGLE__ int		dllcheck __PROTO__((__V_*, const char*, unsigned long, unsigned long*));
extern __MANGLE__ unsigned long	dllversion __PROTO__((__V_*, const char*));
extern __MANGLE__ char*		dllerror __PROTO__((int));

extern __MANGLE__ Dllscan_t*	dllsopen __PROTO__((const char*, const char*, const char*));
extern __MANGLE__ Dllent_t*	dllsread __PROTO__((Dllscan_t*));
extern __MANGLE__ int		dllsclose __PROTO__((Dllscan_t*));

#undef __MANGLE__
#define __MANGLE__ __LINKAGE__

#endif