[poppler] qt4/src qt4/tests qt5/src qt5/tests

Albert Astals Cid aacid at kde.org
Thu Jan 22 10:52:11 PST 2015


El Dijous, 22 de gener de 2015, a les 19:47:04, Adam Reichold va escriure:
> Hello William,
> 
> Am 22.01.2015 um 01:28 schrieb William Bader:
> > Is it possible to write "const GBool sWords =
> > flags.testFlag(WholeWords);" instead of "const GBool sWords =
> > flags.testFlag(WholeWords) ? gTrue : gFalse;"?
> 
> I think it is possible as the "bool" value returned by "testFlag" would
> be casted implicitly to whatever integral type "GBool" could also be,
> with "true" being 1 and "false" being "0" as mandated by the standard.
> 
> > It does not give a compile warning with g++ 4.8.3 on Fedora 20,
> > and goo/gtypes.h has "typedef bool GBool; #define gTrue true #define
> > gFalse false".  In theory, someone could change the definitions, but
> > wouldn't it break a lot of tests if gTrue or gFalse were defined so that
> > C++ considered (gFalse || !gTrue) as true in a condition?
> 
> But I also think this only works if people always use statements like
> "GBool x; if(x)" instead of testing "if(x == gTrue)" as "gTrue" could
> very well be "42" instead of "1" and still keep "if(x)" and "gFalse ||
> !gTrue == false" working. So as it may be ugly and noisy, it does not
> cost a lot to write "? gTrue : gFalse" and also cover this case.
> 
> Personally, I would prefer to just use C++'s standard "bool" and my next
> question would be what the actual contract behind "GBool" is? Is it
> guaranteed to always be "bool"? But then why have it all?

see goo/gtypes.h

We have it because xpdf had it, and it simplifies merging (btw 3.04 merging is 
still not even started, if anyone has time...).

Cheers,
  Albert

> 
> I this particular case, I just tried to stay as close to the existing
> code as possible, so it may just be cargo culting.
> 
> > William
> 
> Best regards, Adam.
> 



More information about the poppler mailing list