- /* delete current token from stream */
- psi_cpp_tokiter_del_cur(cpp, false);
+ /* insert and expand macro tokens */
+ if (!builtin->func(cpp, target, arg_tokens_list, &res)) {
+ struct psi_token *zero = psi_token_init(PSI_T_NUMBER, "0", 1,
+ target->col, target->line, target->file);
+ psi_cpp_tokiter_ins_range(cpp, 1, (void *) &zero);
+ } else if (!res) {
+ struct psi_token *one = psi_token_init(PSI_T_NUMBER, "1", 1,
+ target->col, target->line, target->file);
+ psi_cpp_tokiter_ins_range(cpp, 1, (void *) &one);
+ } else {
+ psi_cpp_tokiter_expand_tokens(cpp, target, res);
+ psi_plist_free(res);
+ }
+}