static void OuyaPlugin_clearButtonStates_wrap()
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_clearButtonStates"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_clearButtonStates, 0);
}
static void OneSignalGetTags_wrap(OneSignalTagsReceivedCallbackFn callbackFn)
{
    IwTrace(ONESIGNAL_VERBOSE, ("calling s3eOneSignal func on main thread: OneSignalGetTags"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OneSignalGetTags, 1, callbackFn);
}
static void OneSignalSendPurchase_wrap(const double* amount)
{
    IwTrace(ONESIGNAL_VERBOSE, ("calling s3eOneSignal func on main thread: OneSignalSendPurchase"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OneSignalSendPurchase, 1, amount);
}
static const char * getAppsFlyerUID_wrap()
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: getAppsFlyerUID"));
    return (const char *)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)getAppsFlyerUID, 0);
}
static void s3eAppsFlyerSetCollectMACAddress_wrap(s3eBool _disable)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerSetCollectMACAddress"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerSetCollectMACAddress, 1, _disable);
}
static void s3eAppsFlyerSetIsDebug_wrap(s3eBool _isDebug)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerSetIsDebug"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerSetIsDebug, 1, _isDebug);
}
static void s3eAppsFlyerSetCustomerUserID_wrap(const char* customerUserID)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerSetCustomerUserID"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerSetCustomerUserID, 1, customerUserID);
}
static int OuyaPlugin_JSONObject_Construct_wrap()
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_JSONObject_Construct"));
    return (int)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_JSONObject_Construct, 0);
}
static void OuyaPlugin_JSONObject_Put_wrap(int jsonObject, const char* name, const char* value)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_JSONObject_Put"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_JSONObject_Put, 3, jsonObject, name, value);
}
static void OuyaPlugin_asyncOuyaRequestPurchase_wrap(const char* purchasable, s3eCallback onSuccess, s3eCallback onFailure, s3eCallback onCancel)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_asyncOuyaRequestPurchase"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_asyncOuyaRequestPurchase, 4, purchasable, onSuccess, onFailure, onCancel);
}
static void OuyaPlugin_asyncOuyaRequestReceipts_wrap(s3eCallback onSuccess, s3eCallback onFailure, s3eCallback onCancel)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_asyncOuyaRequestReceipts"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_asyncOuyaRequestReceipts, 3, onSuccess, onFailure, onCancel);
}
static void OuyaPlugin_asyncOuyaRequestProducts_wrap(const char* productsJson, s3eCallback onSuccess, s3eCallback onFailure, s3eCallback onCancel)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_asyncOuyaRequestProducts"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_asyncOuyaRequestProducts, 4, productsJson, onSuccess, onFailure, onCancel);
}
static void OuyaPlugin_initOuyaPlugin_wrap(const char* jsonData, s3eCallback onSuccess, s3eCallback onFailure)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_initOuyaPlugin"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_initOuyaPlugin, 3, jsonData, onSuccess, onFailure);
}
static const char* OuyaPlugin_getDeviceName_wrap(int playerNum)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_getDeviceName"));
    return (const char*)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_getDeviceName, 1, playerNum);
}
static s3eResult s3eAppsFlyerStartSession_wrap(const char* appleAppId, const char* devKey, const char* currencyCode, s3eBool isHTTPS, const char* customerUserID)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerStartSession"));
    return (s3eResult)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerStartSession, 5, appleAppId, devKey, currencyCode, isHTTPS, customerUserID);
}
static s3eResult s3eGPGInitialize_wrap()
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGInitialize"));
    return (s3eResult)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGInitialize, 0);
}
static void s3eAppsFlyerSetHTTPS_wrap(s3eBool isHTTPS)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerSetHTTPS"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerSetHTTPS, 1, isHTTPS);
}
static void s3eGPGDeInitialize_wrap()
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGDeInitialize"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGDeInitialize, 0);
}
static void s3eAppsFlyerSetCurrencyCode_wrap(const char* currencyCode)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerSetCurrencyCode"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerSetCurrencyCode, 1, currencyCode);
}
static void s3eGPGUnRegisterCallback_wrap(s3eGPGCallbackType callbackID, s3eCallback callbackFn)
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGUnRegisterCallback"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGUnRegisterCallback, 2, callbackID, callbackFn);
}
static void s3eAppsFlyerTrackEvent_wrap(const char* eventName, const char* value)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerTrackEvent"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerTrackEvent, 2, eventName, value);
}
static void s3eGPGUnlockIncrementalAchievement_wrap(const char* id, int increment)
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGUnlockIncrementalAchievement"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGUnlockIncrementalAchievement, 2, id, increment);
}
static void s3eAppsFlyerLoadConversionData_wrap()
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerLoadConversionData"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerLoadConversionData, 0);
}
static void s3eGPGSubmitLeaderboardScore_wrap(const char* leaderboardID, int score)
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGSubmitLeaderboardScore"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGSubmitLeaderboardScore, 2, leaderboardID, score);
}
static void s3eAppsFlyerDisableIAdTracking_wrap(s3eBool _disable)
{
    IwTrace(APPSFLYER_VERBOSE, ("calling s3eAppsFlyer func on main thread: s3eAppsFlyerDisableIAdTracking"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eAppsFlyerDisableIAdTracking, 1, _disable);
}
static void s3eGPGShowLeaderboardUI_wrap(const char* leaderboardID)
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGShowLeaderboardUI"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGShowLeaderboardUI, 1, leaderboardID);
}
static void OneSignalDeleteTag_wrap(const char* key)
{
    IwTrace(ONESIGNAL_VERBOSE, ("calling s3eOneSignal func on main thread: OneSignalDeleteTag"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OneSignalDeleteTag, 1, key);
}
static void s3eGPGShowAllLeaderBoardsUI_wrap()
{
    IwTrace(GOOGLEPLAYGAMES_VERBOSE, ("calling s3eGooglePlayGames func on main thread: s3eGPGShowAllLeaderBoardsUI"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)s3eGPGShowAllLeaderBoardsUI, 0);
}
static void OneSignalGetIdsAvailable_wrap(OneSignalIdsAvailableCallbackFn callbackFn)
{
    IwTrace(ONESIGNAL_VERBOSE, ("calling s3eOneSignal func on main thread: OneSignalGetIdsAvailable"));
    s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OneSignalGetIdsAvailable, 1, callbackFn);
}
static bool OuyaPlugin_isPressedUp_wrap(int deviceId, int keyCode)
{
    IwTrace(ODK_VERBOSE, ("calling ODK func on main thread: OuyaPlugin_isPressedUp"));
    return (bool)(intptr_t)s3eEdkThreadRunOnOS((s3eEdkThreadFunc)OuyaPlugin_isPressedUp, 2, deviceId, keyCode);
}