| 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 |