-
Notifications
You must be signed in to change notification settings - Fork 0
/
ORG_dev.h
72 lines (56 loc) · 1.77 KB
/
ORG_dev.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
/*************************************************************************
> File Name: ORG_dev.h
> Author:
> Mail:
> Created Time: 2016年07月07日 星期四 15时08分12秒
************************************************************************/
#ifndef _ORG_DEV_H
#define _ORG_DEV_H
#include "ORG.h"
#include "bignum.h"
//定义布尔类型 c语言没有布尔类型,需要自己定义
typedef enum {
ORG_FALSE = 0,
ORG_TRUE = 1
} ORG_Boolean;
//字符串类
typedef struct ORG_String_tag ORG_String;
//指针信息
typedef struct {
char *name;
} ORG_NativePointerInfo;
//变量类型
typedef enum {
ORG_BOOLEAN_VALUE = 1, //布尔类型
ORG_INT_VALUE, //整型
ORG_DOUBLE_VALUE, //浮点型
ORG_STRING_VALUE, //字符串型
ORG_NATIVE_POINTER_VALUE, //复杂数据类型 任意类型,包括基本数据类型
ORG_NULL_VALUE, //空值,未设置类型
ORG_BIGNUM_VALUE, //大数
} ORG_ValueType;
//任意类型定义
typedef struct {
ORG_NativePointerInfo *info;
void *pointer;
} ORG_NativePointer;
//通过变量类型
typedef struct {
ORG_ValueType type;
union {
ORG_Boolean boolean_value;
int int_value;
double double_value;
ORG_String *string_value;
ORG_NativePointer native_pointer;
mpi big_num;
} u;
} ORG_Value;
typedef ORG_Value ORG_NativeFunctionPro(ORG_Interpreter *interpreter, int arg_count, ORG_Value *argc);
//注册函数接口
void ORG_add_native_function(ORG_Interpreter *interpreter, char *name,
ORG_NativeFunctionPro *proc);
//注册全局变量接口
void ORG_add_global_variable(ORG_Interpreter *interpreter, char *identifier,
ORG_Value *value);
#endif