projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
EOF
[m6w6/ext-psi]
/
src
/
parser.h
diff --git
a/src/parser.h
b/src/parser.h
index d8955e56d2294394b996f260bc98b040d7ea59fe..5ec0b95e6354875c2f4fa7aa881df78c9b11c67b 100644
(file)
--- a/
src/parser.h
+++ b/
src/parser.h
@@
-141,6
+141,7
@@
static inline decl_arg *init_decl_arg(decl_type *type, decl_var *var) {
decl_arg *arg = calloc(1, sizeof(*arg));
arg->type = type;
arg->var = var;
decl_arg *arg = calloc(1, sizeof(*arg));
arg->type = type;
arg->var = var;
+ var->arg = arg;
return arg;
}
return arg;
}
@@
-331,12
+332,16
@@
static inline void free_decl_structs(decl_structs *ss) {
typedef union impl_val {
char cval;
int8_t i8;
typedef union impl_val {
char cval;
int8_t i8;
+ uint8_t u8;
short sval;
int16_t i16;
short sval;
int16_t i16;
+ uint16_t u16;
int ival;
int32_t i32;
int ival;
int32_t i32;
+ uint32_t u32;
long lval;
int64_t i64;
long lval;
int64_t i64;
+ uint64_t u64;
float fval;
double dval;
union {
float fval;
double dval;
union {
@@
-351,7
+356,7
@@
typedef union impl_val {
static inline impl_val *deref_impl_val(impl_val *ret_val, decl_var *var) {
unsigned i;
static inline impl_val *deref_impl_val(impl_val *ret_val, decl_var *var) {
unsigned i;
- if (var->arg->var != var) for (i =
0
; i < var->pointer_level; ++i) {
+ if (var->arg->var != var) for (i =
1
; i < var->pointer_level; ++i) {
ret_val = *(void **) ret_val;
}
return ret_val;
ret_val = *(void **) ret_val;
}
return ret_val;
@@
-595,7
+600,7
@@
struct set_value;
typedef struct set_func {
token_t type;
char *name;
typedef struct set_func {
token_t type;
char *name;
- void (*handler)(zval *,
token_t, impl_val *, struct set_value *set, decl_var *
);
+ void (*handler)(zval *,
struct set_value *set, impl_val *ret_val
);
} set_func;
static inline set_func *init_set_func(token_t type, const char *name) {
} set_func;
static inline set_func *init_set_func(token_t type, const char *name) {
@@
-613,6
+618,10
@@
static inline void free_set_func(set_func *func) {
typedef struct set_value {
set_func *func;
decl_vars *vars;
typedef struct set_value {
set_func *func;
decl_vars *vars;
+ struct {
+ struct set_value *set;
+ impl_val *val;
+ } outer;
struct set_value **inner;
size_t count;
} set_value;
struct set_value **inner;
size_t count;
} set_value;
@@
-1056,7
+1065,7
@@
static inline PSI_Token *PSI_TokenAlloc(PSI_Parser *P) {
PSI_Token *T;
size_t token_len;
PSI_Token *T;
size_t token_len;
- if (P->cur <
=
P->tok) {
+ if (P->cur < P->tok) {
return NULL;
}
return NULL;
}