projects
/
m6w6
/
ext-psi
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
|
github
raw
|
inline
| side by side
fix leak
[m6w6/ext-psi]
/
src
/
parser.h
diff --git
a/src/parser.h
b/src/parser.h
index 62f5e31eb0bb2f79bedb4d94540ba9e309cc368c..1321f6cc8b4292948f2a793cba4f8184b9be33ea 100644
(file)
--- a/
src/parser.h
+++ b/
src/parser.h
@@
-14,6
+14,10
@@
typedef int token_t;
typedef int token_t;
+/* in php_psi.h */
+size_t psi_t_alignment(token_t);
+size_t psi_t_size(token_t);
+
typedef struct PSI_Token {
token_t type;
unsigned line;
typedef struct PSI_Token {
token_t type;
unsigned line;
@@
-272,10
+276,19
@@
static inline void free_decl_struct(decl_struct *s) {
if (s->args) {
free_decl_args(s->args);
}
if (s->args) {
free_decl_args(s->args);
}
+ if (s->layout) {
+ free(s->layout);
+ }
free(s->name);
free(s);
}
free(s->name);
free(s);
}
+static inline size_t decl_struct_size(decl_struct *s) {
+ size_t c = s->args->count - 1;
+ decl_type *type = real_decl_type(s->args->args[c]->type);
+ return s->layout[c].pos + psi_t_alignment(type->type);
+}
+
typedef struct decl_structs {
size_t count;
decl_struct **list;
typedef struct decl_structs {
size_t count;
decl_struct **list;
@@
-305,6
+318,7
@@
typedef union impl_val {
char cval;
short sval;
int ival;
char cval;
short sval;
int ival;
+ float fval;
double dval;
zend_long lval;
zend_string *str;
double dval;
zend_long lval;
zend_string *str;