Stardew Engine
Loading...
Searching...
No Matches
Scripting.h
Go to the documentation of this file.
1#ifndef SCRIPTING_H
2#define SCRIPTING_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include <stddef.h>
9#include <stdbool.h>
10#include "IntTypes.h"
11
12#define MAX_SCRIPT_FUNCTION_NAME_SIZE 32
13
15
21
27
29{
31 union
32 {
33 bool boolean;
34 double number;
35 char* string;
36 void* userData;
37 int table; // in our case it will be a table stored int he regsitry with this value as a key
38 int i;
40};
41
42void Sc_InitScripting();
44bool Sc_OpenFile(const char* path);
45
46
52int Sc_CallGlobalFuncReturningTableAndStoreResultInReg(const char* funcName, struct ScriptCallArgument* pArgs, int numArgs);
53
54void Sc_CallFuncInRegTableEntryTable(int regIndex, const char* funcName, struct ScriptCallArgument* pArgs, int numArgs, int numReturnVals);
55
56void Sc_CallFuncInRegTableEntry(int regIndex, struct ScriptCallArgument* pArgs, int numArgs, int numReturnVals, int selfRegIndex);
57
58void Sc_AddLightUserDataValueToTable(int regIndex, const char* userDataKey, void* userDataValue);
59
60bool Sc_FunctionPresentInTable(int regIndex, const char* funcName);
61
63void Sc_StackTopStrCopy(char* pOutString);
64void Sc_ResetStack();
65
66
70
71int Sc_Int();
72float Sc_Float();
73bool Sc_Bool();
74
75bool Sc_IsTable();
76bool Sc_IsNil();
77bool Sc_IsString();
78bool Sc_IsInteger();
79bool Sc_IsBool();
80bool Sc_IsNumber();
81int Sc_Type();
82
83
84void Sc_Pop();
85void Sc_TableGet(const char* key);
86void Sc_TableGetIndex(int index);
87int Sc_TableLen();
88
89bool Sc_StringCmp(const char* cmpTo);
90
91void Sc_DumpStack();
92
94typedef struct lua_State lua_State;
95void Sc_RegisterCFunction(const char* name, int(*fn)(lua_State*));
96
97void Sc_NewTableOnStack(int arrayElementHint, int nonArrayElementHint);
98void Sc_SetIntAtTableIndex(int index, int value);
99void Sc_SetIntAtTableKey(const char* key, int val);
100void Sc_SetFloatAtTableKey(const char* key, float val);
101void Sc_SetPointerAtTableKey(const char* key, void* ptr);
102int Sc_RefTable();
103void Sc_UnRefTable(int ref);
104
105
110void Sc_SetTable();
111
112void Sc_PushInt(int i);
113
114#ifdef __cplusplus
115}
116#endif
117
118#endif
void Sc_DeleteTableInReg(int index)
delete a table stored in the lua registry
Definition Scripting.c:625
void Sc_SetIntAtTableKey(const char *key, int val)
Definition Scripting.c:732
void Sc_SetPointerAtTableKey(const char *key, void *ptr)
Definition Scripting.c:746
void Sc_SetIntAtTableIndex(int index, int value)
Definition Scripting.c:713
int Sc_Int()
Definition Scripting.c:592
struct lua_State lua_State
only intended for unit testing, and in games linking to the engine
Definition Scripting.h:94
bool Sc_StringCmp(const char *cmpTo)
Definition Scripting.c:701
void Sc_CallFuncInRegTableEntry(int regIndex, struct ScriptCallArgument *pArgs, int numArgs, int numReturnVals, int selfRegIndex)
Definition Scripting.c:516
int Sc_CallGlobalFuncReturningTableAndStoreResultInReg(const char *funcName, struct ScriptCallArgument *pArgs, int numArgs)
call a global lua function that returns a table, and store the table in the lua registry (lua_LGetRef...
Definition Scripting.c:470
void Sc_NewTableOnStack(int arrayElementHint, int nonArrayElementHint)
Definition Scripting.c:708
void Sc_SetFloatAtTableKey(const char *key, float val)
Definition Scripting.c:739
void Sc_CallFuncInRegTableEntryTable(int regIndex, const char *funcName, struct ScriptCallArgument *pArgs, int numArgs, int numReturnVals)
Definition Scripting.c:491
int Sc_TableLen()
Definition Scripting.c:657
bool Sc_IsInteger()
Definition Scripting.c:676
void Sc_UnRefTable(int ref)
Definition Scripting.c:758
void Sc_StackTopStrCopy(char *pOutString)
Definition Scripting.c:613
ScriptCallArgumentDataType
Definition Scripting.h:23
@ SCA_table
Definition Scripting.h:24
@ SCA_int
Definition Scripting.h:24
@ SCA_boolean
Definition Scripting.h:24
@ SCA_number
Definition Scripting.h:24
@ SCA_nil
Definition Scripting.h:24
@ SCA_userdata
Definition Scripting.h:24
@ SCA_string
Definition Scripting.h:24
void Sc_DeInitScripting()
Definition Scripting.c:386
bool Sc_FunctionPresentInTable(int regIndex, const char *funcName)
Definition Scripting.c:549
void Sc_SetTable()
(stack on table) push index onto stack push something to set at the index call this to set the value ...
Definition Scripting.c:721
bool Sc_IsNumber()
Definition Scripting.c:686
bool Sc_IsString()
Definition Scripting.c:671
bool Sc_Bool()
Definition Scripting.c:691
void Sc_AddLightUserDataValueToTable(int regIndex, const char *userDataKey, void *userDataValue)
Definition Scripting.c:534
bool Sc_OpenFile(const char *path)
Definition Scripting.c:391
int Sc_Type()
Definition Scripting.c:635
float Sc_Float()
Definition Scripting.c:600
bool Sc_IsNil()
Definition Scripting.c:666
void Sc_InitScripting()
Definition Scripting.c:366
void Sc_PushInt(int i)
Definition Scripting.c:726
bool Sc_IsBool()
Definition Scripting.c:681
bool Sc_IsTable()
Definition Scripting.c:630
size_t Sc_StackTopStringLen()
Definition Scripting.c:606
void Sc_TableGet(const char *key)
Definition Scripting.c:645
void Sc_DumpStack()
Definition Scripting.c:565
int Sc_RefTable()
Definition Scripting.c:753
void Sc_ResetStack()
Definition Scripting.c:620
void Sc_TableGetIndex(int index)
Definition Scripting.c:651
void Sc_Pop()
Definition Scripting.c:640
void Sc_RegisterCFunction(const char *name, int(*fn)(lua_State *))
Definition Scripting.c:360
const char *const name
Definition cJSON.h:270
int index
Definition cJSON.h:176
Definition Scripting.h:17
int numArgs
Definition Scripting.h:19
struct ScriptCallArgument * args
Definition Scripting.h:18
Definition Scripting.h:29
enum ScriptCallArgumentDataType type
Definition Scripting.h:30
void * userData
Definition Scripting.h:36
bool boolean
Definition Scripting.h:33
int i
Definition Scripting.h:38
double number
Definition Scripting.h:34
char * string
Definition Scripting.h:35
int table
Definition Scripting.h:37
union ScriptCallArgument::@21 val