mirror of
https://github.com/pocketpy/pocketpy
synced 2025-10-20 03:20:18 +00:00
92 lines
2.7 KiB
C++
92 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#ifdef PK_USER_CONFIG_H
|
|
|
|
#include "user_config.h"
|
|
|
|
#else
|
|
|
|
/*************** feature settings ***************/
|
|
|
|
// Whether to compile os-related modules or not
|
|
#ifndef PK_ENABLE_OS // can be overrided by cmake
|
|
#define PK_ENABLE_OS 1
|
|
#endif
|
|
|
|
// Enable this if you are working with multi-threading (experimental)
|
|
// This triggers necessary locks to make the VM thread-safe
|
|
#ifndef PK_ENABLE_THREAD // can be overrided by cmake
|
|
#define PK_ENABLE_THREAD 0
|
|
#endif
|
|
|
|
// Enable this for `vm->_ceval_on_step`
|
|
#ifndef PK_ENABLE_CEVAL_CALLBACK // can be overrided by cmake
|
|
#define PK_ENABLE_CEVAL_CALLBACK 0
|
|
#endif
|
|
|
|
// Whether to use `std::function` to do bindings or not
|
|
// By default, functions to be binded must be a C function pointer without capture
|
|
// However, someone thinks it's not convenient.
|
|
// By setting this to 1, capturing lambdas can be binded,
|
|
// but it's slower and may cause severe "code bloat", also needs more time to compile.
|
|
#define PK_ENABLE_STD_FUNCTION 0
|
|
|
|
/*************** debug settings ***************/
|
|
|
|
// Enable this may help you find bugs
|
|
#define PK_DEBUG_EXTRA_CHECK 0
|
|
|
|
// Do not edit the following settings unless you know what you are doing
|
|
#define PK_DEBUG_NO_BUILTINS 0
|
|
#define PK_DEBUG_DIS_EXEC 0
|
|
#define PK_DEBUG_CEVAL_STEP 0
|
|
#define PK_DEBUG_FULL_EXCEPTION 0
|
|
#define PK_DEBUG_MEMORY_POOL 0
|
|
#define PK_DEBUG_NO_MEMORY_POOL 0
|
|
#define PK_DEBUG_NO_AUTO_GC 0
|
|
#define PK_DEBUG_GC_STATS 0
|
|
|
|
/*************** internal settings ***************/
|
|
|
|
// This is the maximum size of the value stack in void* units
|
|
// The actual size in bytes equals `sizeof(void*) * PK_VM_STACK_SIZE`
|
|
#define PK_VM_STACK_SIZE 32768
|
|
|
|
// This is the maximum number of arguments in a function declaration
|
|
// including positional arguments, keyword-only arguments, and varargs
|
|
// (not recommended to change this / it should be less than 200)
|
|
#define PK_MAX_CO_VARNAMES 32
|
|
|
|
// Hash table load factor (smaller ones mean less collision but more memory)
|
|
// For class instance
|
|
#define PK_INST_ATTR_LOAD_FACTOR 0.67
|
|
// For class itself
|
|
#define PK_TYPE_ATTR_LOAD_FACTOR 0.5
|
|
|
|
#ifdef _WIN32
|
|
#define PK_PLATFORM_SEP '\\'
|
|
#else
|
|
#define PK_PLATFORM_SEP '/'
|
|
#endif
|
|
|
|
#ifdef _MSC_VER
|
|
#pragma warning (disable:4267)
|
|
#pragma warning (disable:4100)
|
|
#pragma warning (disable:4244)
|
|
#pragma warning (disable:4996)
|
|
#endif
|
|
|
|
#ifdef _MSC_VER
|
|
#define PK_ENABLE_COMPUTED_GOTO 0
|
|
#define PK_UNREACHABLE() __assume(0);
|
|
#else
|
|
#define PK_ENABLE_COMPUTED_GOTO 1
|
|
#define PK_UNREACHABLE() __builtin_unreachable();
|
|
#endif
|
|
|
|
|
|
#if PK_DEBUG_CEVAL_STEP && defined(PK_ENABLE_COMPUTED_GOTO)
|
|
#undef PK_ENABLE_COMPUTED_GOTO
|
|
#endif
|
|
|
|
#endif |