#ifndef SCSSDK_H
#define SCSSDK_H
#define SCSSDK_HEADER extern "C" {
#define SCSSDK_FOOTER }
SCSSDK_HEADER
#if defined(_MSC_VER)
typedef unsigned __int8 scs_u8_t;
typedef unsigned __int16 scs_u16_t;
typedef signed __int32 scs_s32_t;
typedef unsigned __int32 scs_u32_t;
typedef unsigned __int64 scs_u64_t;
typedef signed __int64 scs_s64_t;
typedef float scs_float_t;
typedef double scs_double_t;
typedef const char * scs_string_t;
#define SCSAPIFUNC __stdcall
#if defined(_WIN64)
#define SCS_ARCHITECTURE_x64
#else
#define SCS_ARCHITECTURE_x86
#endif
#define SCS_PF_U64 "I64u"
#define SCS_PF_S64 "I64d"
#elif defined(__GNUG__)
#include <stdint.h>
typedef uint8_t scs_u8_t;
typedef uint16_t scs_u16_t;
typedef int32_t scs_s32_t;
typedef uint32_t scs_u32_t;
typedef uint64_t scs_u64_t;
typedef int64_t scs_s64_t;
typedef float scs_float_t;
typedef double scs_double_t;
typedef const char * scs_string_t;
#define SCSAPIFUNC
#if defined(__x86_64__)
#define SCS_ARCHITECTURE_x64
#define SCS_PF_U64 "lu"
#define SCS_PF_S64 "ld"
#elif defined(__i386__)
#define SCS_ARCHITECTURE_x86
#define SCS_PF_U64 "llu"
#define SCS_PF_S64 "lld"
#else
#error "Unknown architecture."
#endif
#else
#error "Unknown compiler."
#endif
const scs_u32_t SCS_U32_NIL = static_cast<scs_u32_t>(-1);
typedef void *scs_context_t;
typedef scs_u64_t scs_timestamp_t;
typedef scs_s32_t scs_result_t;
const scs_result_t SCS_RESULT_ok = 0; const scs_result_t SCS_RESULT_unsupported = -1; const scs_result_t SCS_RESULT_invalid_parameter = -2; const scs_result_t SCS_RESULT_already_registered = -3; const scs_result_t SCS_RESULT_not_found = -4; const scs_result_t SCS_RESULT_unsupported_type = -5; const scs_result_t SCS_RESULT_not_now = -6; const scs_result_t SCS_RESULT_generic_error = -7;
#define SCSAPI_RESULT scs_result_t SCSAPIFUNC
#define SCSAPI_VOID void SCSAPIFUNC
#define SCSAPI_RESULT_FPTR(function_name) scs_result_t (SCSAPIFUNC *function_name)
#define SCSAPI_VOID_FPTR(function_name) void (SCSAPIFUNC *function_name)
#define SCS_CONCAT2(prefix, suffix) prefix##suffix
#define SCS_CONCAT(prefix, suffix) SCS_CONCAT2(prefix, suffix)
#define scs_static_check(expr) typedef int SCS_CONCAT(some_requirement_failed_at_, __LINE__)[(expr) ? 1 : -1]
#if defined(SCS_ARCHITECTURE_x86)
#define scs_check_size(structure, expected_32, expected_64) scs_static_check(sizeof(structure) == expected_32)
#elif defined(SCS_ARCHITECTURE_x64)
#define scs_check_size(structure, expected_32, expected_64) scs_static_check(sizeof(structure) == expected_64)
#endif
typedef scs_s32_t scs_log_type_t;
const scs_log_type_t SCS_LOG_TYPE_message = 0;
const scs_log_type_t SCS_LOG_TYPE_warning = 1;
const scs_log_type_t SCS_LOG_TYPE_error = 2;
#define SCS_MAKE_VERSION(major, minor) (((major) << 16) | (minor))
#define SCS_GET_MAJOR_VERSION(version) (((version) >> 16) & 0xffff)
#define SCS_GET_MINOR_VERSION(version) ((version) & 0xffff)
typedef SCSAPI_VOID_FPTR(scs_log_t)(const scs_log_type_t type, const scs_string_t message);
struct scs_sdk_init_params_v100_t
{
scs_string_t game_name;
scs_string_t game_id;
scs_u32_t game_version;
#ifdef SCS_ARCHITECTURE_x64
scs_u32_t _padding;
#endif
scs_log_t log;
};
scs_check_size(scs_sdk_init_params_v100_t, 16, 32);
SCSSDK_FOOTER
#endif