need to figure out how to apply a function in zend to something other than an array; about to run out of battery though
This commit is contained in:
parent
5fcd9fa88d
commit
6c4a8f17c6
1 changed files with 23 additions and 1 deletions
|
|
@ -150,7 +150,7 @@
|
||||||
struct HParseResult_;
|
struct HParseResult_;
|
||||||
static zval* hpt_to_php(const struct HParsedToken_ *token);
|
static zval* hpt_to_php(const struct HParsedToken_ *token);
|
||||||
|
|
||||||
//static struct HParsedToken_* call_action(const struct HParseResult_ *p, void* user_data);
|
static struct HParsedToken_* call_action(const struct HParseResult_ *p, void* user_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
%typemap(in) (const uint8_t* str, const size_t len) {
|
%typemap(in) (const uint8_t* str, const size_t len) {
|
||||||
|
|
@ -247,7 +247,15 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
%typemap(in) (HPredicate* pred, void* user_data) {
|
||||||
|
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
%typemap(in) (const HAction a, void* user_data) {
|
||||||
|
$2 = $input;
|
||||||
|
$1 = call_action;
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
#warning no Hammer typemaps defined
|
#warning no Hammer typemaps defined
|
||||||
#endif
|
#endif
|
||||||
|
|
@ -508,5 +516,19 @@ def int64(): return _h_int64()
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct HParsedToken_* call_action(const struct HParseResult_ *p, void* user_data) {
|
||||||
|
zval *callable = user_data;
|
||||||
|
zval *ret;
|
||||||
|
ALLOC_INIT_ZVAL(ret);
|
||||||
|
FIXME_SOME_ZEND_APPLY_FUNCTION(ret, (apply_func_t)callable TSRMLS_CC);
|
||||||
|
if (ret == NULL) {
|
||||||
|
// FIXME throw some error
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
// TODO: add reference to ret to parse-local data
|
||||||
|
HParsedToken *tok = h_make(p->arena, h_tt_php, ret);
|
||||||
|
return tok;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue