#ifndef INLINE_LOWLEVEL_H
#define INLINE_LOWLEVEL_H

/*
    *** Automatically generated from '/data/deadwood/gitAROS/AROS/workbench/libs/lowlevel/lowlevel.conf'. Edits will be lost. ***
    Copyright © 1995-2011, The AROS Development Team. All rights reserved.
*/

/*
    Desc: Inline function for lowlevel
*/

#include <aros/libcall.h>
#include <exec/types.h>
#include <aros/symbolsets.h>
#include <aros/preprocessor/variadic/cast2iptr.hpp>


static inline ULONG __inline_LowLevel_ReadJoyPort(ULONG __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC1(ULONG, ReadJoyPort,
        AROS_LCA(ULONG,(__arg1),D0),
        struct Library *, (__LowLevelBase), 5, LowLevel    );
}

#define ReadJoyPort(arg1) \
    __inline_LowLevel_ReadJoyPort((arg1), (APTR)LowLevelBase)

static inline ULONG __inline_LowLevel_GetLanguageSelection(APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC0(ULONG, GetLanguageSelection,
        struct Library *, (__LowLevelBase), 6, LowLevel    );
}

#define GetLanguageSelection() \
    __inline_LowLevel_GetLanguageSelection((APTR)LowLevelBase)

static inline ULONG __inline_LowLevel_GetKey(APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC0(ULONG, GetKey,
        struct Library *, (__LowLevelBase), 8, LowLevel    );
}

#define GetKey() \
    __inline_LowLevel_GetKey((APTR)LowLevelBase)

static inline void __inline_LowLevel_QueryKeys(struct KeyQuery * __arg1, UBYTE __arg2, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC2NR(void, QueryKeys,
        AROS_LCA(struct KeyQuery *,(__arg1),A0),
        AROS_LCA(UBYTE,(__arg2),D1),
        struct Library *, (__LowLevelBase), 9, LowLevel    );
}

#define QueryKeys(arg1, arg2) \
    __inline_LowLevel_QueryKeys((arg1), (arg2), (APTR)LowLevelBase)

static inline APTR __inline_LowLevel_AddKBInt(APTR __arg1, APTR __arg2, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC2(APTR, AddKBInt,
        AROS_LCA(APTR,(__arg1),A0),
        AROS_LCA(APTR,(__arg2),A1),
        struct Library *, (__LowLevelBase), 10, LowLevel    );
}

#define AddKBInt(arg1, arg2) \
    __inline_LowLevel_AddKBInt((arg1), (arg2), (APTR)LowLevelBase)

static inline void __inline_LowLevel_RemKBInt(APTR __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC1NR(void, RemKBInt,
        AROS_LCA(APTR,(__arg1),A1),
        struct Library *, (__LowLevelBase), 11, LowLevel    );
}

#define RemKBInt(arg1) \
    __inline_LowLevel_RemKBInt((arg1), (APTR)LowLevelBase)

static inline APTR __inline_LowLevel_AddTimerInt(APTR __arg1, APTR __arg2, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC2(APTR, AddTimerInt,
        AROS_LCA(APTR,(__arg1),A0),
        AROS_LCA(APTR,(__arg2),A1),
        struct Library *, (__LowLevelBase), 13, LowLevel    );
}

#define AddTimerInt(arg1, arg2) \
    __inline_LowLevel_AddTimerInt((arg1), (arg2), (APTR)LowLevelBase)

static inline void __inline_LowLevel_RemTimerInt(APTR __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC1NR(void, RemTimerInt,
        AROS_LCA(APTR,(__arg1),A1),
        struct Library *, (__LowLevelBase), 14, LowLevel    );
}

#define RemTimerInt(arg1) \
    __inline_LowLevel_RemTimerInt((arg1), (APTR)LowLevelBase)

static inline void __inline_LowLevel_StopTimerInt(APTR __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC1NR(void, StopTimerInt,
        AROS_LCA(APTR,(__arg1),A1),
        struct Library *, (__LowLevelBase), 15, LowLevel    );
}

#define StopTimerInt(arg1) \
    __inline_LowLevel_StopTimerInt((arg1), (APTR)LowLevelBase)

static inline void __inline_LowLevel_StartTimerInt(APTR __arg1, ULONG __arg2, BOOL __arg3, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC3NR(void, StartTimerInt,
        AROS_LCA(APTR,(__arg1),A1),
        AROS_LCA(ULONG,(__arg2),D0),
        AROS_LCA(BOOL,(__arg3),D1),
        struct Library *, (__LowLevelBase), 16, LowLevel    );
}

#define StartTimerInt(arg1, arg2, arg3) \
    __inline_LowLevel_StartTimerInt((arg1), (arg2), (arg3), (APTR)LowLevelBase)

static inline ULONG __inline_LowLevel_ElapsedTime(struct EClockVal * __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC1(ULONG, ElapsedTime,
        AROS_LCA(struct EClockVal *,(__arg1),A0),
        struct Library *, (__LowLevelBase), 17, LowLevel    );
}

#define ElapsedTime(arg1) \
    __inline_LowLevel_ElapsedTime((arg1), (APTR)LowLevelBase)

static inline APTR __inline_LowLevel_AddVBlankInt(APTR __arg1, APTR __arg2, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    return AROS_LC2(APTR, AddVBlankInt,
        AROS_LCA(APTR,(__arg1),A0),
        AROS_LCA(APTR,(__arg2),A1),
        struct Library *, (__LowLevelBase), 18, LowLevel    );
}

#define AddVBlankInt(arg1, arg2) \
    __inline_LowLevel_AddVBlankInt((arg1), (arg2), (APTR)LowLevelBase)

static inline void __inline_LowLevel_RemVBlankInt(APTR __arg1, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 40)
    AROS_LC1NR(void, RemVBlankInt,
        AROS_LCA(APTR,(__arg1),A1),
        struct Library *, (__LowLevelBase), 19, LowLevel    );
}

#define RemVBlankInt(arg1) \
    __inline_LowLevel_RemVBlankInt((arg1), (APTR)LowLevelBase)

static inline BOOL __inline_LowLevel_SetJoyPortAttrsA(ULONG __arg1, struct TagItem * __arg2, APTR __LowLevelBase)
{
    AROS_LIBREQ(LowLevelBase, 41)
    return AROS_LC2(BOOL, SetJoyPortAttrsA,
        AROS_LCA(ULONG,(__arg1),D0),
        AROS_LCA(struct TagItem *,(__arg2),A1),
        struct Library *, (__LowLevelBase), 22, LowLevel    );
}

#define SetJoyPortAttrsA(arg1, arg2) \
    __inline_LowLevel_SetJoyPortAttrsA((arg1), (arg2), (APTR)LowLevelBase)

#if !defined(NO_INLINE_STDARG) && !defined(LOWLEVEL_NO_INLINE_STDARG)
#define SetJoyPortAttrs(arg1, ...) \
({ \
    IPTR __args[] = { AROS_PP_VARIADIC_CAST2IPTR(__VA_ARGS__) }; \
    SetJoyPortAttrsA((arg1), (struct TagItem *)__args); \
})
#endif /* !NO_INLINE_STDARG */

#endif /* INLINE_LOWLEVEL_H*/
