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 <richard.hender...@linaro.org> r~