Skip to content

Commit 4237e82

Browse files
committed
DEBUG 模式下运行所有 prelude
1 parent e7aae28 commit 4237e82

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/chsrc-main.c

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -505,6 +505,36 @@ iterate_menu (XySeq_t *menu, const char *input, Target_t **target)
505505
}
506506

507507

508+
void
509+
callback_perform_all_prelude_for_menu (void *data, void *NOUSE)
510+
{
511+
Target_t *target = (Target_t *) data;
512+
513+
if (!target->preludefn)
514+
{
515+
chef_debug_target (target);
516+
chsrc_panic ("未定义 _prelude() !");
517+
}
518+
519+
target->preludefn();
520+
}
521+
522+
/**
523+
* @brief 用于检查所有 _prelude() 是否能正常工作
524+
*
525+
* 为了防止 DEBUG 模式下运行流程和普通模式下运行流程不一样,我们只在 Get, Set, Reset
526+
* 之后才运行该函数
527+
*/
528+
void
529+
chsrc_perform_all_prelude ()
530+
{
531+
chsrc_debug ("prelude", "DEBUG模式下, 额外检查所有 _prelude() 是否能正常工作");
532+
xy_seq_each (ProgStore.pl, callback_perform_all_prelude_for_menu, NULL);
533+
xy_seq_each (ProgStore.os, callback_perform_all_prelude_for_menu, NULL);
534+
xy_seq_each (ProgStore.wr, callback_perform_all_prelude_for_menu, NULL);
535+
}
536+
537+
508538
/**
509539
* @brief 在必要的时期,最后告诉用户一些信息
510540
*/
@@ -618,7 +648,10 @@ get_target (const char *input, TargetOp code, char *option)
618648
chsrc_op_epilogue ();
619649
}
620650

651+
#ifdef XY_DEBUG
621652
chef_debug_target (target);
653+
chsrc_perform_all_prelude ();
654+
#endif
622655

623656
return true;
624657
}

0 commit comments

Comments
 (0)