// Kyler Olsen
// YREA SLS
// Builtin Functions Header
// November 2025

#ifndef SLS_BUILTIN_FUNCTIONS_H
#define SLS_BUILTIN_FUNCTIONS_H

#include "sls/bool.h"
#include "sls/interpreter.h"

#if __SIZEOF_POINTER__ == 4
    // 32-bit system
    #define SLS_INTEGER_BUILTIN_DEFAULT INTEGER_I32
    #define SLS_UNSIGNED_INTEGER_BUILTIN_DEFAULT INTEGER_U32
    #define SLS_FLOAT_BUILTIN_DEFAULT TOKEN_FLOAT
#elif __SIZEOF_POINTER__ == 8
    // 64-bit system
    #define SLS_INTEGER_BUILTIN_DEFAULT INTEGER_I64
    #define SLS_UNSIGNED_INTEGER_BUILTIN_DEFAULT INTEGER_U64
    #define SLS_FLOAT_BUILTIN_DEFAULT TOKEN_DOUBLE
#else
    // Fallback
    #define SLS_INTEGER_BUILTIN_DEFAULT INTEGER_I16
    #define SLS_UNSIGNED_INTEGER_BUILTIN_DEFAULT INTEGER_U16
    #define SLS_FLOAT_BUILTIN_DEFAULT TOKEN_FLOAT
#endif

Boolean load_builtins(InterpreterState *interpreter_state);

#endif // SLS_BUILTIN_FUNCTIONS_H
