1 |
#pragma once |
2 |
#ifndef BFW_SCRIPTLANG_H |
3 |
#define BFW_SCRIPTLANG_H |
4 |
|
5 |
#include "Daodan.h" |
6 |
|
7 |
#include <stdint.h> |
8 |
#include <stdbool.h> |
9 |
|
10 |
typedef enum { |
11 |
sl_int32, |
12 |
sl_str32, |
13 |
sl_float, |
14 |
sl_bool, /* Actually int32 0 or 1. */ |
15 |
sl_void, |
16 |
} sl_type; |
17 |
|
18 |
typedef struct { |
19 |
sl_type type; |
20 |
union { |
21 |
void* value; |
22 |
int32_t value_int32; |
23 |
char* value_str32; |
24 |
float value_float; |
25 |
bool value_bool; |
26 |
}; |
27 |
} sl_arg; |
28 |
|
29 |
typedef struct { |
30 |
char* name; |
31 |
char* calllocation; //maybe |
32 |
int linenumber; //perhaps |
33 |
} sl_callinfo; |
34 |
|
35 |
typedef uint16_t (ONICALL *sl_func)(sl_callinfo* callinfo, uint32_t numargs, sl_arg args[], int* dontuse1, int* dontuse2, sl_arg* ret); |
36 |
|
37 |
uint16_t ONICALL SLrScript_Command_Register_ReturnType(char* name, char* desc, char* argfmt, sl_type type, sl_func callback); |
38 |
uint16_t ONICALL SLrScript_Command_Register_Void(char* name, char* desc, char* argfmt, sl_func callback); |
39 |
uint16_t ONICALL SLrGlobalVariable_Register_Int32(char* name, char* desc, int32_t* data); |
40 |
uint16_t ONICALL SLrGlobalVariable_Register_Float(char* name, char* desc, float* data); |
41 |
uint16_t ONICALL SLrGlobalVariable_Register_Bool(char* name, char* desc, uint32_t* data); |
42 |
uint16_t ONICALL SLrGlobalVariable_Register_String(char* name, char* desc, char* data); |
43 |
|
44 |
#endif |