At Thu, 22 Oct 2020 22:31:41 -0300, Alvaro Herrera <alvhe...@alvh.no-ip.org> wrote in > On 2020-Oct-22, Ashutosh Bapat wrote: > > > On Thu, 22 Oct 2020 at 14:46, Kyotaro Horiguchi <horikyota....@gmail.com> > > wrote: > > > > pg_send_logicalrep_msg_type() looks somewhat too-much. If we need > > > something like that we shouldn't do this refactoring, I think. > > > > Enum is an integer, and we want to send byte. The function asserts that the > > enum fits a byte. If there's a way to declare byte long enums I would use > > that. But I didn't find a way to do that. > > I didn't look at the code, but maybe it's sufficient to add a > StaticAssert?
That check needs to visit all symbols in a enum and confirm that each of them is in a certain range. I thought of StaticAssert, but it cannot run a code and I don't know of a syntax that loops through all symbols in a enumeration so I think we needs to write a static assertion on every symbol in the enumeration, which seems to be a kind of stupid. enum hoge { a = '1', b = '2', c = '3' }; StaticAssertDecl((unsigned int)(a | b | c ...) <= 0xff, "too large symbol value"); I didn't come up with a way to apply static assertion on each symbol definition line. regards. -- Kyotaro Horiguchi NTT Open Source Software Center