> On 30 Mar 2023, at 04:57, Masahiko Sawada <sawada.m...@gmail.com> wrote:
> As another idea, why don't we use macros for that? For example, > suppose VacuumCostStatus is like: > > typedef enum VacuumCostStatus > { > VACUUM_COST_INACTIVE_LOCKED = 0, > VACUUM_COST_INACTIVE, > VACUUM_COST_ACTIVE, > } VacuumCostStatus; > VacuumCostStatus VacuumCost; > > non-vacuum code can use the following macros: > > #define VacuumCostActive() (VacuumCost == VACUUM_COST_ACTIVE) > #define VacuumCostInactive() (VacuumCost <= VACUUM_COST_INACTIVE) // > or we can use !VacuumCostActive() instead. I'm in favor of something along these lines. A variable with a name that implies a boolean value (active/inactive) but actually contains a tri-value is easily misunderstood. A VacuumCostState tri-value variable (or a better name) with a set of convenient macros for extracting the boolean active/inactive that most of the code needs to be concerned with would more for more readable code I think. -- Daniel Gustafsson