#ifndef _INLINE_AMARQUEE_H
#define _INLINE_AMARQUEE_H

#ifndef AMARQUEE_BASE_NAME
#define AMARQUEE_BASE_NAME AMarqueeBase
#endif

#define QFreeSession(session) \
	((LONG (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 36))(session, AMARQUEE_BASE_NAME)

#define QDebugOp(session, string) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 42))(session, string, AMARQUEE_BASE_NAME)

#define QGetOp(session, path, maxBytes) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 48))(session, path, maxBytes, AMARQUEE_BASE_NAME)

#define QDeleteOp(session, path) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 54))(session, path, AMARQUEE_BASE_NAME)

#define QRenameOp(session, path, label) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), STRPTR __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 60))(session, path, label, AMARQUEE_BASE_NAME)

#define QSubscribeOp(session, path, maxBytes) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 66))(session, path, maxBytes, AMARQUEE_BASE_NAME)

#define QSetOp(session, path, buf, len) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), VOID * __asm("d0"), ULONG __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 72))(session, path, buf, len, AMARQUEE_BASE_NAME)

#define QClearSubscriptionsOp(session, which) \
	((LONG (*)(struct QSession * __asm("a0"), LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 78))(session, which, AMARQUEE_BASE_NAME)

#define QPingOp(session) \
	((LONG (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 84))(session, AMARQUEE_BASE_NAME)

#define QInfoOp(session) \
	((LONG (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 90))(session, AMARQUEE_BASE_NAME)

#define QSetAccessOp(session, hosts) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 96))(session, hosts, AMARQUEE_BASE_NAME)

#define FreeQMessage(session, qmsg) \
	((VOID (*)(struct QSession * __asm("a0"), struct QMessage * __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 102))(session, qmsg, AMARQUEE_BASE_NAME)

#define QGo(session, sync) \
	((LONG (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 108))(session, sync, AMARQUEE_BASE_NAME)

#define QStreamOp(session, path, buf, len) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), VOID * __asm("d0"), ULONG __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 120))(session, path, buf, len, AMARQUEE_BASE_NAME)

#define QSetMessageAccessOp(session, access, maxbytes) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 132))(session, access, maxbytes, AMARQUEE_BASE_NAME)

#define QMessageOp(session, hosts, buffer, len) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), VOID * __asm("d0"), ULONG __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 138))(session, hosts, buffer, len, AMARQUEE_BASE_NAME)

#define QNumQueuedPackets(session) \
	((ULONG (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 150))(session, AMARQUEE_BASE_NAME)

#define QNumQueuedBytes(session) \
	((ULONG (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 156))(session, AMARQUEE_BASE_NAME)

#define QErrorName(session) \
	((STRPTR (*)(LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 162))(session, AMARQUEE_BASE_NAME)

#define QRequestPrivilegesOp(session, privBits) \
	((LONG (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 168))(session, privBits, AMARQUEE_BASE_NAME)

#define QReleasePrivilegesOp(session, privBits) \
	((LONG (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 174))(session, privBits, AMARQUEE_BASE_NAME)

#define QKillClientsOp(session, hosts) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 180))(session, hosts, AMARQUEE_BASE_NAME)

#define QSetParameterOp(session, paramName, newValue) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), STRPTR __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 186))(session, paramName, newValue, AMARQUEE_BASE_NAME)

#define QGetParameterOp(session, paramName) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 192))(session, paramName, AMARQUEE_BASE_NAME)

#define QSysMessageOp(session, hosts, message) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), STRPTR __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 198))(session, hosts, message, AMARQUEE_BASE_NAME)

#define QGetAndSubscribeOp(session, path, maxBytes) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), LONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 210))(session, path, maxBytes, AMARQUEE_BASE_NAME)

#define QDetachSession(session, flags) \
	((BOOL (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 216))(session, flags, AMARQUEE_BASE_NAME)

#define QReattachSession(session, flags) \
	((BOOL (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 222))(session, flags, AMARQUEE_BASE_NAME)

#define QNewSocketSession(host, port, tags) \
	((struct QSession * (*)(STRPTR __asm("a0"), LONG __asm("d0"), struct TagItem * __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 228))(host, port, tags, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewSocketSessionTags(host, port, tags...) \
	({uint32 _tags[] = {tags}; QNewSocketSession((host), (port), (Tag) _tags);})
#endif

#define QSendRawOp(session, buf, len) \
	((LONG (*)(struct QSession * __asm("a0"), VOID * __asm("a1"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 234))(session, buf, len, AMARQUEE_BASE_NAME)

#define QNewSocketSessionAsync(host, port, tags) \
	((struct QSession * (*)(STRPTR __asm("a0"), LONG __asm("d0"), struct TagItem * __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 240))(host, port, tags, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewSocketSessionAsyncTags(host, port, tags...) \
	({uint32 _tags[] = {tags}; QNewSocketSessionAsync((host), (port), (Tag) _tags);})
#endif

#define QNewSocketServerSession(port, tags) \
	((struct QSession * (*)(LONG * __asm("a0"), struct TagItem * __asm("a1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 246))(port, tags, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewSocketServerSessionTags(port, tags...) \
	({uint32 _tags[] = {tags}; QNewSocketServerSession((port), (Tag) _tags);})
#endif

#define QSetKeyAccessOp(session, path, hosts) \
	((LONG (*)(struct QSession * __asm("a0"), STRPTR __asm("a1"), STRPTR __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 252))(session, path, hosts, AMARQUEE_BASE_NAME)

#define QGetHostName(session) \
	((STRPTR (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 258))(session, AMARQUEE_BASE_NAME)

#define QGetProgName(session) \
	((STRPTR (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 264))(session, AMARQUEE_BASE_NAME)

#define QSetMaxRawBufSize(session, maxBufSize) \
	((VOID (*)(struct QSession * __asm("a0"), ULONG __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 270))(session, maxBufSize, AMARQUEE_BASE_NAME)

#define QNewSession(host, port, name, taglist) \
	((struct QSession * (*)(STRPTR __asm("a0"), LONG __asm("d0"), STRPTR __asm("a1"), struct TagItem * __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 276))(host, port, name, taglist, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewSessionTags(host, port, name, tags...) \
	({uint32 _tags[] = {tags}; QNewSession((host), (port), (name), (Tag) _tags);})
#endif

#define QNewSessionAsync(host, port, name, taglist) \
	((struct QSession * (*)(STRPTR __asm("a0"), LONG __asm("d0"), STRPTR __asm("a1"), struct TagItem * __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 282))(host, port, name, taglist, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewSessionAsyncTags(host, port, name, tags...) \
	({uint32 _tags[] = {tags}; QNewSessionAsync((host), (port), (name), (Tag) _tags);})
#endif

#define QNewHostSession(hostnames, port, names, taglist) \
	((struct QSession * (*)(STRPTR __asm("a0"), LONG * __asm("a1"), STRPTR __asm("d0"), struct TagItem * __asm("d1"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 288))(hostnames, port, names, taglist, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewHostSessionTags(hostnames, port, names, tags...) \
	({uint32 _tags[] = {tags}; QNewHostSession((hostnames), (port), (names), (Tag) _tags);})
#endif

#define QNewServerSession(hostNames, progNames, taglist) \
	((struct QSession * (*)(STRPTR __asm("a0"), STRPTR __asm("a1"), struct TagItem * __asm("d0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 294))(hostNames, progNames, taglist, AMARQUEE_BASE_NAME)

#ifndef NO_INLINE_STDARG
#define QNewServerSessionTags(hostNames, progNames, tags...) \
	({uint32 _tags[] = {tags}; QNewServerSession((hostNames), (progNames), (Tag) _tags);})
#endif

#define QCreateSharedMessagePort() \
	((struct QSharedMessagePort * (*)(struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 300))(AMARQUEE_BASE_NAME)

#define QDeleteSharedMessagePort(mp) \
	((VOID (*)(struct QSharedMessagePort * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 306))(mp, AMARQUEE_BASE_NAME)

#define QGetLocalIP(session) \
	((STRPTR (*)(struct QSession * __asm("a0"), struct Library * __asm("a6"))) \
  (((char *) AMARQUEE_BASE_NAME) - 312))(session, AMARQUEE_BASE_NAME)

#endif /*  _INLINE_AMARQUEE_H  */
