1 frdl/card.h
dalmurii edited this page 2026-06-09 06:10:55 +00:00

Card

카드는 콜백을 예약하여 이벤트를 발생시킨다.
데이터의 순수성을 보장하기 위해 콜백은 정수로써 추상화된다.

typedef uint_leastenum_t        h_frdl_card_eval_t;

카드는 발생시킬 수 있는 이벤트와 소유하고 있는 상태로써 정의할 수 있다.
상태는 아직 정의되지 않았다. 이벤트와 상태는 정적으로 정의되어야 한다.

struct frdl_card {
        /** simulate that caller use this card to callee. */
        h_frdl_card_eval_t      m_eval;

        /** state */
        frdl_card_state_t   m_state;
};

FRDLC0

frdl_eval_card

h_frdl_card_eval_t에 예약된 이벤트를 h_caller -> h_callee 형태로 실행시킨다.
c_lbl_again, c_lbl_pass, c_lbl_fail 셋 중 하나를 반환하는 것이 보장된다.
다른 카드를 실행시킬 수 있을 경우 c_lbl_again을 반환한다.
다른 카드를 실행시킬 수 없을 경우(턴 엔드) c_lbl_pass를 반환한다.
체계에 오류가 발생했을 경우 c_lbl_fail을 반환한다.

/**
 * frdl_eval_card
 * */
frdl_cgotolbl_t FRDLC0(
                h_frdl_card_eval_t      h_card_eval,
                const struct frdl_card* ae2f_restrict   h_card,
                h_frdl_entity_t         h_caller,
                h_frdl_entity_t         h_callee,
                h_frdl_t                h_frdl,
                frdl_cgotolbl_t         c_lbl_again,
                frdl_cgotolbl_t         c_lbl_pass,
                frdl_cgotolbl_t         c_lbl_fail
                );