On 12/20/19 10:50 PM, Damien Hedde wrote:
> +typedef void (*ResettableEnterPhase)(Object *obj, ResetType type);
> +typedef void (*ResettableHoldPhase)(Object *obj);
> +typedef void (*ResettableExitPhase)(Object *obj);
> +typedef ResettableState * (*ResettableGetState)(Object *obj);
> +typedef void (*ResettableTrFunction)(Object *obj);
> +typedef ResettableTrFunction (*ResettableGetTrFunction)(Object *obj);
> +typedef void (*ResettableChildCallback)(Object *, void *opaque,
> + ResetType type);
> +typedef void (*ResettableChildForeach)(Object *obj,
> + ResettableChildCallback cb,
> + void *opaque, ResetType type);
> +typedef struct ResettableClass {
> + InterfaceClass parent_class;
> +
> + /* Phase methods */
> + struct ResettablePhases {
> + ResettableEnterPhase enter;
> + ResettableHoldPhase hold;
> + ResettableExitPhase exit;
> + } phases;
> +
> + /* State access method */
> + ResettableGetState get_state;
> +
> + /* Transitional method for legacy reset compatibility */
> + ResettableGetTrFunction get_transitional_function;
> +
> + /* Hierarchy handling method */
> + ResettableChildForeach child_foreach;
> +} ResettableClass;
> +typedef struct ResettablePhases ResettablePhases;
Since you use ResettablePhases independently of ResettableClass, I think you
should un-nest the struct definition and define the typedef as per normal.
Within the ResettableClass definition, just have "ResettablePhases phases;".
> + return (s->count > 0);
IIRC, you should have gotten a checkpatch warning for the parenthesis here.
They are unnecessary.
Otherwise,
Reviewed-by: Richard Henderson <[email protected]>
r~