+static bool psi_cpp_tokiter_expand_def(struct psi_cpp *cpp,
+ struct psi_token *target, struct psi_cpp_macro_decl *macro)
+{
+ /* delete current token from stream */
+ psi_cpp_tokiter_del_cur(cpp, false);
+ /* replace with tokens from macro */
+ psi_cpp_tokiter_expand_tokens(cpp, target, macro->tokens);
+
+ psi_token_free(&target);
+ ++cpp->expanded;
+ return true;
+}
+
+static inline int psi_cpp_tokiter_expand_cmp(struct psi_token *t,
+ struct psi_cpp_macro_decl *m)
+{
+ if (psi_plist_count(m->tokens) == 1) {
+ struct psi_token *r;
+
+ psi_plist_get(m->tokens, 0, &r);
+
+ return !zend_string_equals(r->text, t->text);
+ }
+ return -1;
+}
+