Reduct  v4.0.5-1-g4851deb
A functional and immutable language.
Loading...
Searching...
No Matches
Core

Detailed Description

Data Structures

struct  reduct_input_t
 Input structure. More...
 
struct  reduct_input_global_t
 Global input-related state structure. More...
 
struct  reduct_import_global_t
 Global import-related state structure. More...
 
struct  reduct_lib_global_t
 Global library-related state structure. More...
 
struct  reduct_global_t
 Global state structure. More...
 
struct  reduct_t
 Per-thread state structure. More...
 

Macros

#define REDUCT_IMPORT_PATHS_INITIAL   4
 Initial size of the import path array.
 
#define REDUCT_IMPORT_PATHS_GROWTH   2
 Growth factor of the import path array.
 
#define REDUCT_SCHEMA_INITIAL   4
 Initial size of the schema array.
 
#define REDUCT_SCHEMA_GROWTH   2
 Growth factor of the schema array.
 
#define REDUCT_CONSTANTS_MAX   8
 Maximum amount of predefined constants.
 
#define REDUCT_SCRATCH_INITIAL   128
 Initial scratch buffer size.
 
#define REDUCT_SCRATCH_MAX   16
 The maximum number of scratch buffers.
 
#define REDUCT_LIBS_INITIAL   4
 Initial size of the library array.
 
#define REDUCT_LIBS_GROWTH   2
 Growth factor of the library array.
 

Enumerations

enum  reduct_input_flags_t { REDUCT_INPUT_FLAG_NONE = 0 , REDUCT_INPUT_FLAG_OWNED = 1 }
 Input flags. More...
 

Functions

REDUCT_API reduct_treduct_new (void)
 Create a new Reduct environment.
 
REDUCT_API void reduct_free (reduct_t *reduct)
 Free the Reduct structure.
 
REDUCT_API void reduct_global_lib_add (reduct_t *reduct, reduct_lib_t lib)
 Add a loaded library handle to the global state.
 
REDUCT_API void reduct_userdata_set (reduct_t *reduct, void *userdata)
 Set the user data pointer for the Reduct structure.
 
REDUCT_API void * reduct_userdata_get (reduct_t *reduct)
 Get the user data pointer from the Reduct structure.
 
REDUCT_API void reduct_args_set (reduct_t *reduct, int argc, char **argv)
 Set the command line arguments for the Reduct structure.
 
REDUCT_API void reduct_add_import_path (reduct_t *reduct, const char *path)
 Add a path to search when importing modules.
 
REDUCT_API reduct_input_treduct_input_new (reduct_t *reduct, const char *buffer, size_t length, const char *path, reduct_input_flags_t flags)
 Create a new input structure and push it onto the input stack.
 
REDUCT_API reduct_input_treduct_input_lookup (reduct_t *reduct, reduct_input_id_t id)
 Lookup an input structure by its ID.
 
REDUCT_API void reduct_resolve_path (reduct_t *reduct, const char *path, size_t pathLen, char *outPath, size_t maxLen, bool checkExistence)
 Resolve a path relative to the current execution frame or import paths.
 
static REDUCT_ALWAYS_INLINE uint32_t reduct_hash (const char *str, size_t len)
 Hash a string.
 

Macro Definition Documentation

◆ REDUCT_IMPORT_PATHS_INITIAL

#define REDUCT_IMPORT_PATHS_INITIAL   4

Initial size of the import path array.

Definition at line 32 of file core.h.

◆ REDUCT_IMPORT_PATHS_GROWTH

#define REDUCT_IMPORT_PATHS_GROWTH   2

Growth factor of the import path array.

Definition at line 33 of file core.h.

◆ REDUCT_SCHEMA_INITIAL

#define REDUCT_SCHEMA_INITIAL   4

Initial size of the schema array.

Definition at line 35 of file core.h.

◆ REDUCT_SCHEMA_GROWTH

#define REDUCT_SCHEMA_GROWTH   2

Growth factor of the schema array.

Definition at line 36 of file core.h.

◆ REDUCT_CONSTANTS_MAX

#define REDUCT_CONSTANTS_MAX   8

Maximum amount of predefined constants.

Definition at line 38 of file core.h.

◆ REDUCT_SCRATCH_INITIAL

#define REDUCT_SCRATCH_INITIAL   128

Initial scratch buffer size.

Definition at line 99 of file core.h.

◆ REDUCT_SCRATCH_MAX

#define REDUCT_SCRATCH_MAX   16

The maximum number of scratch buffers.

Definition at line 100 of file core.h.

◆ REDUCT_LIBS_INITIAL

#define REDUCT_LIBS_INITIAL   4

Initial size of the library array.

Definition at line 102 of file core.h.

◆ REDUCT_LIBS_GROWTH

#define REDUCT_LIBS_GROWTH   2

Growth factor of the library array.

Definition at line 103 of file core.h.

Enumeration Type Documentation

◆ reduct_input_flags_t

Input flags.

Enumerator
REDUCT_INPUT_FLAG_NONE 
REDUCT_INPUT_FLAG_OWNED 

The input buffer is owned by the input structure and should be freed.

Definition at line 43 of file core.h.

Function Documentation

◆ reduct_new()

REDUCT_API reduct_t * reduct_new ( void  )

Create a new Reduct environment.

Returns
A pointer to the first per thread state structure of the new environment or NULL.

◆ reduct_free()

REDUCT_API void reduct_free ( reduct_t reduct)

Free the Reduct structure.

Parameters
reductPointer to the Reduct structure to free.

◆ reduct_global_lib_add()

REDUCT_API void reduct_global_lib_add ( reduct_t reduct,
reduct_lib_t  lib 
)

Add a loaded library handle to the global state.

Parameters
reductPointer to the Reduct structure.
libThe library handle.

◆ reduct_userdata_set()

REDUCT_API void reduct_userdata_set ( reduct_t reduct,
void *  userdata 
)

Set the user data pointer for the Reduct structure.

Parameters
reductPointer to the Reduct structure.
userdataThe user data pointer.

◆ reduct_userdata_get()

REDUCT_API void * reduct_userdata_get ( reduct_t reduct)

Get the user data pointer from the Reduct structure.

Parameters
reductPointer to the Reduct structure.
Returns
The user data pointer.

◆ reduct_args_set()

REDUCT_API void reduct_args_set ( reduct_t reduct,
int  argc,
char **  argv 
)

Set the command line arguments for the Reduct structure.

Will be utilized by the (args!) native.

Parameters
reductPointer to the Reduct structure.
argcThe number of arguments.
argvThe argument strings.

◆ reduct_add_import_path()

REDUCT_API void reduct_add_import_path ( reduct_t reduct,
const char *  path 
)

Add a path to search when importing modules.

Parameters
reductPointer to the Reduct structure.
pathThe directory path, will be copied.

◆ reduct_input_new()

REDUCT_API reduct_input_t * reduct_input_new ( reduct_t reduct,
const char *  buffer,
size_t  length,
const char *  path,
reduct_input_flags_t  flags 
)

Create a new input structure and push it onto the input stack.

Parameters
reductPointer to the Reduct structure.
bufferThe input buffer.
lengthThe length of the input buffer.
pathThe path to the input file.
flagsInput flags.
Returns
A pointer to the newly created input structure.

◆ reduct_input_lookup()

REDUCT_API reduct_input_t * reduct_input_lookup ( reduct_t reduct,
reduct_input_id_t  id 
)

Lookup an input structure by its ID.

Parameters
reductPointer to the Reduct structure.
idThe ID of the input structure.
Returns
A pointer to the input structure, or NULL if not found.

◆ reduct_resolve_path()

REDUCT_API void reduct_resolve_path ( reduct_t reduct,
const char *  path,
size_t  pathLen,
char *  outPath,
size_t  maxLen,
bool  checkExistence 
)

Resolve a path relative to the current execution frame or import paths.

Parameters
reductPointer to the Reduct structure.
pathThe path string to resolve.
pathLenThe length of the path string.
outPathPointer to the buffer where the resolved path will be stored.
maxLenThe maximum length of the output buffer.
checkExistenceWhether to check if the file exists when resolving relative paths.

◆ reduct_hash()

static REDUCT_ALWAYS_INLINE uint32_t reduct_hash ( const char *  str,
size_t  len 
)
inlinestatic

Hash a string.

Parameters
strThe string to hash.
lenThe length of the string.
Returns
The hash of the string.

Definition at line 243 of file core.h.